昨天我們做了一個 互動式 FAQ QA 系統,
雖然能找到正確答案,但回答方式有點生硬,像是死板板的資料庫。
今天我們要升級把 FAQ 的答案丟給 Chat 模型,讓 AI 幫我們用更自然的語氣回覆
昨天我們寫了一個 search_faq()
,可以找到最相關的 FAQ 答案:
def search_faq(user_question):
q_embedding = get_embedding(user_question)
scores = []
for item in faq_data:
score = cosine_similarity(q_embedding, item["embedding"])
scores.append((score, item))
scores.sort(key=lambda x: x[0], reverse=True)
return scores[0][1]["a"] # 回傳最相關的答案
再來結合 Chat 模型。現在我們要在找到答案後,把它再交給 Chat 模型,請 AI 用更自然的語氣講出來。
def generate_reply(user_question, faq_answer):
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "你是一個親切的客服人員,請根據提供的答案,用自然語氣回覆客戶。"},
{"role": "user", "content": f"客戶問題:{user_question}\n參考答案:{faq_answer}"}
]
)
return response.choices[0].message.content
最後我們來整合一下:
print("=== FAQ 智慧客服(升級版),輸入 exit 離開 ===")
while True:
user_q = input("你:")
if user_q.lower() in ["exit", "quit"]:
print("客服:謝謝使用,再見!")
break
faq_answer = search_faq(user_q)
reply = generate_reply(user_q, faq_answer)
print("客服:", reply)
來看看成果
可以看到答案內容還是一樣,但講法更自然 更像真人去回應你
search_faq()先找到最相關的 FAQ 答案、generate_reply()把 FAQ 答案交給 Chat 模型,請它轉成自然回覆
互動迴圈、使用者提問之後找答案再給AI 輸出回覆。
今天我們讓 FAQ QA 系統「進化」成更自然的客服:
不只是把答案輸出出來而已,而是用 Chat 模型重寫讓回覆更親切、更像真人回應
明天我們要進入另一個領域玩玩看 Audio 功能(語音轉文字,STT),讓 AI 聽得懂我們講話!