iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0
Python

從0開始學習Python-為未來學習AI奠定基礎系列 第 19

從0開始學習Python---簡易 AI 聊天系統

  • 分享至 

  • xImage
  •  

小專題:AI 聊天系統 —— 多重異常處理與日誌紀錄

題目說明:

這個專題會模擬一個簡易的 AI 聊天系統,使用者可以向 AI 提出問題。AI 會根據不同的情況給出回應,並且需要處理以下情況:

  1. 使用者輸入的問題包含不支援的字符或太長。
  2. 系統無法識別輸入的問題。
  3. 記錄聊天的日誌,方便檢查 AI 的回應狀況。

程式總覽:
https://ithelp.ithome.com.tw/upload/images/20240919/20168994MAVzIB6N4j.png


解題分析:

  1. 日誌設定

https://ithelp.ithome.com.tw/upload/images/20240919/20168994J1YDiDNSKT.png
(chat_log.txt 日誌)
https://ithelp.ithome.com.tw/upload/images/20240919/20168994QRe8cd53Sl.png

  • logging 模組:Python 的 logging 模組用來記錄程式執行過程中的重要訊息,例如正常運行訊息或錯誤訊息。這裡的日誌記錄會被寫入到檔案 chat_log.txt 中。

  • logging.basicConfig:用來設定日誌的基本配置,例如日誌的儲存路徑 (filename='chat_log.txt') 和記錄的等級 (level=logging.INFO)。INFO 等級會記錄所有訊息,包括正常的運行訊息與錯誤訊息。

  1. AI 聊天主函數

https://ithelp.ithome.com.tw/upload/images/20240919/20168994vYalsnHkzo.png

  • 函數 chat_ai():這個函數是整個聊天系統的核心,當使用者啟動這個函數時,AI 會開始與使用者進行互動。首先,程式會輸出一條歡迎訊息,告知使用者 AI 已經準備好回答問題。
  1. 主迴圈與使用者輸入

https://ithelp.ithome.com.tw/upload/images/20240919/2016899464qMGe445X.png

  • while True 迴圈:這個迴圈讓系統不斷重複要求使用者輸入問題,直到使用者輸入結束對話的訊息為止。

  • input() 函數:要求使用者輸入問題,並將輸入的內容儲存在變數 user_input 中。

  1. 輸入限制與錯誤處理

https://ithelp.ithome.com.tw/upload/images/20240919/20168994W63ZgyfQXr.png

  • 字數限制:如果 user_input 的長度超過 50 字元,程式會主動引發 ValueError 錯誤,提示使用者問題太長。raise ValueError 用來拋出一個錯誤,並將訊息傳遞給異常處理程式。

  • 符號限制:如果使用者的輸入包含不支援的符號(使用 isalnum() 函數判斷是否全為字母和數字),也會拋出一個 ValueError 錯誤。

  1. AI 可能的回應

https://ithelp.ithome.com.tw/upload/images/20240919/20168994CKPxlXh1Iz.png

  • 問題識別:根據使用者的輸入內容來進行回應。

如果使用者的問題中包含「天氣」,AI 會回應「今天天氣很好」。
如果使用者輸入「你好」,AI 會回應「你好,有什麼我能幫助你的?」。
如果使用者輸入「結束」,程式會結束對話,並退出主迴圈 (break)。

  • LookupError:如果 AI 無法識別使用者的問題,會觸發 LookupError 錯誤,並進入異常處理邏輯。
  1. 異常處理

https://ithelp.ithome.com.tw/upload/images/20240919/20168994nCcfheYvXd.png

  • try-except 機制:這裡使用 try-except 來捕捉程式運行中可能出現的錯誤,並保證程式不會因此崩潰。

  • 捕捉 ValueError:如果問題過長或包含不支援的符號,會拋出 ValueError,並輸出錯誤訊息。

  • 捕捉 LookupError:如果 AI 無法理解使用者的問題,會拋出 LookupError,並提示使用者 AI 無法識別。

  • logging.error():將每次的錯誤訊息與使用者輸入記錄到 chat_log.txt 日誌檔案中,方便日後查看問題。

  1. 記錄聊天過程

https://ithelp.ithome.com.tw/upload/images/20240919/20168994VUFlxKtlnU.png

  • logging.info():當程式正常運行時,會記錄使用者的輸入和 AI 的回應,將對話記錄保存在日誌檔案中。這樣可以用來分析使用者的行為或記錄整個對話過程。

最後來測試所有回答,包括詢問天氣、問好、結束對話;輸入錯誤訊息包含:標點符號的句子、超過50個字的句子。
https://ithelp.ithome.com.tw/upload/images/20240919/20168994bYNj4YLuuC.png


總結:

這次的小專題透過簡單的關鍵字識別和異常處理,就成了一個模擬 AI 聊天系統,並且能夠處理使用者輸入的不當資料或 AI 無法理解的問題。這樣的系統可以擴展成為更複雜的對話機器人,並且對日誌的使用使得除錯和系統改進更加方便。

我相信這個應用在未來學習 AI 相關知識時,例如自然語言處理 (NLP) 和機器學習中的數據清洗,都會有所幫助><


上一篇
從0開始學習Python---程式除錯與異常處理
下一篇
從0開始學習Python---正則表達式、過濾留言中的不雅字詞
系列文
從0開始學習Python-為未來學習AI奠定基礎30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言