iT邦幫忙

2025 iThome 鐵人賽

DAY 14
0
生成式 AI

AI 三十天,哎呀每天都很難:OpenAI API 生存指南系列 第 14

Day 14:講話更自然!結合 Chat 模型強化 FAQ 系統

  • 分享至 

  • xImage
  •  

昨天我們做了一個 互動式 FAQ QA 系統
雖然能找到正確答案,但回答方式有點生硬,像是死板板的資料庫。

今天我們要升級把 FAQ 的答案丟給 Chat 模型,讓 AI 幫我們用更自然的語氣回覆

Step 1:回顧昨天的搜尋函數

昨天我們寫了一個 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)

來看看成果
https://ithelp.ithome.com.tw/upload/images/20250928/20169376S8y4WXCiZQ.png
可以看到答案內容還是一樣,但講法更自然 更像真人去回應你
search_faq()先找到最相關的 FAQ 答案、generate_reply()把 FAQ 答案交給 Chat 模型,請它轉成自然回覆
互動迴圈、使用者提問之後找答案再給AI 輸出回覆。

今天我們讓 FAQ QA 系統「進化」成更自然的客服:
不只是把答案輸出出來而已,而是用 Chat 模型重寫讓回覆更親切、更像真人回應
明天我們要進入另一個領域玩玩看 Audio 功能(語音轉文字,STT),讓 AI 聽得懂我們講話!


上一篇
Day 13:我要找答案!互動式 QA 系統
下一篇
Day 15:聽得懂了!語音轉文字
系列文
AI 三十天,哎呀每天都很難:OpenAI API 生存指南15
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言