iT邦幫忙

2024 iThome 鐵人賽

DAY 29
0

後面十天的 Streamlit 小專案會放在 GitHub 上,有興趣的朋友歡迎留言 or 來信討論,我的信箱是 nickchen1998@gmail.com

今天我們要來製作對話紀錄下載的功能。

exports.py

我們新增一個 module 用來存放製作檔案內容的相關函式,讓我們看一下這個 module 的內容:

  • combine_user_ai_messages():

    這個函式會將使用者和 AI 的訊息組合在一起,並回傳一個 list,list 中的每個元素都是一個 dict,包含使用者的訊息、AI 的訊息和 AI 的參考資料。

    import json
    
    
    def combine_user_ai_messages(history):
        combined_history = []
    
        for i in range(0, len(history), 2):
            user_message = history[i]['content'] if i < len(history) and history[i]['role'] == "user" else ""
            ai_message = history[i + 1]['content'] if i + 1 < len(history) and history[i + 1]['role'] == "ai" else ""
            references = history[i + 1].get('references', []) if i + 1 < len(history) and history[i + 1][
                'role'] == "ai" else []
    
            combined_history.append({
                "user": user_message,
                "ai": ai_message,
                "references": references
            })
    
        return combined_history
    
  • export_history_to_json():

    這個函式會將對話紀錄轉換成 JSON 格式的字串。

    def export_history_to_json(history):
        combined_history = combine_user_ai_messages(history)
        # 返回 JSON 格式字串
        return json.dumps(combined_history, ensure_ascii=False, indent=2)
    

調整 site.py

接下來我們要針對下載按鈕做個小調整,當使用者點選下載後,我們要將對話紀錄下載下來,讓我們看一下下面這段程式:

...
with st.sidebar:
    ...

    st.title("下載對話紀錄")
    file_format_option = st.selectbox(
        "請選擇要下載的檔案格式...",
        ("JSON",),
        disabled=True
    )
    export_data = export_history_to_json(st.session_state['history'])
    st.download_button("下載", export_data, "dialogue.json", mime="application/json"):
...

結果呈現

下方是我們點選下載按鈕後輸出的 json 內容:

[
  {
    "user": "經常拉肚子該怎麼辦?",
    "ai": "根據過去的回覆,對於經常拉肚子的情況,建議您可以先採取清淡飲食,並配合藥物治療。如果症狀持續時間超過1到3個月,建議您前往胃腸科門診,讓醫師進行評估和檢查。此外,多吃蔬菜和水果,多攝取水分也有助於改善腸道健康。如果經過初步診治後仍有需要,可能需要進一步的檢查。請注意自己的健康狀況,及早就醫。",
    "references": [
      "重點整理:\n\n1. 建議先採取清淡飲食,並配合藥物治療。\n2. 如果腹瀉持續時間超過1到3個月,則需要進一步就醫檢查。",
      "重點整理:\n\n1. 您的狀況是腸道習慣的改變,可能與之前的腹痛有關。\n2. 建議您前往胃腸科門診,讓醫師進行評估和檢查。\n3. 飲食建議:多吃蔬菜和水果,多攝取水分。\n4. 彰化醫院關心您的健康。",
      "重點整理:\n\n1. 根據您的症狀,醫生認為您可能有功能性腸胃障礙。\n2. 建議您先接受腸胃科醫師的初步診治。\n3. 如果有需要,可能需要進一步的檢查。"
    ]
  }
]

內容預告

今天我們完成了對話紀錄下載的功能,明天我們要把這個小站台部署到 Streamlit 上,讓大家可以直接使用,敬請期待!


上一篇
Day 28 - 對話紀錄
下一篇
Day 30 - 部署到 Streamlit APP
系列文
初探 Langchain 與 LLM:打造簡易問診機器人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言