昨天的版本已經能讓AI同時做出摘要、翻譯與回答問題,而且使用者可以自己輸入文章與問題,這代表這個小專案的主要功能已經完整實現。
但在實際測試時我發現一件事:每次詢問都是一次性的。
也就是說,如果我想要追問前一個問題,AI其實不會記得前面的內容。
它只會根據我這次輸入的文章和問題重新思考,這樣就沒辦法做到真正的對話體驗。
為什麼會這樣?
原因在於我們目前的程式設計方式:
每次呼叫answer_question()時,模型只會看到這一次的context(文章 + 問題),
而不會保留先前的聊天紀錄。
換句話說,這是一個單輪問答系統。
如果想讓AI能記得之前的內容,就需要引入多輪對話的概念。
多輪對話是什麼?
所謂多輪對話,就是讓AI能根據之前的互動持續延伸對話內容。
例如:
我:What is AI?
AI:AI stands for Artificial Intelligence.
我:How is it used in medicine?
AI:It’s used for diagnosis, medical imaging, and drug discovery.
這裡第二個問題「How is it used in medicine?」並沒有重複提到「AI」,
但AI仍能理解上下文,這就是多輪對話的關鍵能力。
怎麼做到?
原理其實不難,只要把過去的對話內容一起傳給模型就行。
簡單的做法像這樣:
chat_history = []
while True:
user_input = input("你:")
chat_history.append({"role": "user", "content": user_input})
response = model.generate(chat_history) #模型看到完整對話歷史
print("AI:", response)
chat_history.append({"role": "assistant", "content": response})
這樣AI在每次生成回覆時,就能看到前面的對話內容,自然就能做到連貫的回答。
不過這也有一個問題:上下文會越來越長,模型記憶體壓力也會增加。
這時就需要一些額外技術,例如:
目前我的版本仍是單輪問答,但其實已經具備升級的基礎。
接下來如果要讓它更像真正的AI聊天夥伴,我就可以試著加入對話歷史的記憶機制,讓它能理解上下文、維持對話連貫性。
或許,這就是我這個AI問答小專案的下一個挑戰!