使用工具打造聊天機器人:一個基於 Jupyter Notebook 的實作範例

使用工具打造聊天機器人:一個基於 Jupyter Notebook 的實作範例

使用工具打造聊天機器人:一個基於 Jupyter Notebook 的實作範例

繼上一篇文章介紹了 MCP 的概念之後,本次我們將動手實作,先在 Jupyter Notebook 環境中打造一個聊天機器人範本。這個範例將展示如何在不依賴外部框架的情況下,透過直接定義並執行工具,賦予語言模型處理更複雜查詢的能力。整個範例涵蓋了工具的定義、執行機制,以及聊天機器人核心程式碼的建構。

功能強大的兩大工具

這個聊天機器人依賴兩個核心工具來執行任務:

search_papers (論文搜尋):

  • 功能:這個工具會根據一個給定的主題,在 arXiv 平台上搜尋相關論文,並將其資訊(標題、作者、摘要、論文網址和發表日期)儲存成 JSON 檔案。
  • 特別之處:這些 JSON 檔案會依主題分類,存放在 papers 目錄中,但此工具並不會下載論文本身。
  • 參數:topic(要搜尋的主題)和 max_results(要檢索的最大論文數量,預設為 5 篇)。
    extract_info (資訊提取):

  • 功能:在 papers 目錄下的所有主題資料夾中,尋找並提取特定論文的詳細資訊。

  • 參數:paper_id(要尋找的論文 ID)。
  • 回傳值:如果找到論文,會回傳包含該論文資訊的 JSON 字串;如果找不到,則回傳錯誤訊息。

工具與語言模型的溝通橋樑

為了讓語言模型知道如何使用這些工具,我們需要定義工具的「模式」(Schema)並建立一個執行機制。

  • 工具模式(Tool Schema):在 tools 這個 JSON 物件中,我們詳細定義了每個工具的名稱、功能描述以及所需的參數。語言模型會參考這個模式,判斷何時以及如何調用工具來完成使用者的請求。
  • 工具映射與執行(Tool Mapping and Execution):execute_tool 函數扮演著關鍵角色。它會將語言模型決定的工具名稱與其對應的 Python 函數(search_papers 或 extract_info)連結起來並執行。此外,它還負責將工具的執行結果格式化,以便語言模型能輕鬆地理解並用於生成最終回應。

聊天機器人的運作邏輯

這個聊天機器人以簡單而有效的方式運作。它會一個一個處理使用者的查詢,但不會在不同查詢之間保留對話記憶。

  • process_query:這是處理單次查詢的核心函數。它會將使用者的問題傳送給語言模型,然後進入一個循環。如果語言模型決定呼叫工具,process_query 會執行該工具,並將結果回傳給模型,讓模型根據新的資訊繼續對話,直到產生最終的自然語言回應。
  • chat_loop:這個函數提供了一個互動介面,讓使用者可以持續輸入查詢,直到輸入 quit 退出。

立即體驗

https://github.com/1daniel3333/mcp_trial/blob/main/L3.ipynb

您可以隨意與這個聊天機器人互動。這裡有一個範例查詢:

  • 搜尋兩篇關於「LLM 可解釋性」的論文
    要存取 papers 資料夾並查看工具儲存的論文檔案,請在 Jupyter Notebook 中依序點擊選單上的 檔案 (File) → 開啟 (Open) → L3。

Comments

Loading comments…

Leave a Comment