AI News HubLIVE
站内改写1 分鐘閱讀

從頭構建基本AI代理:工具

本文介紹如何通過添加工具來增強基本AI代理,使其能夠與計算機環境交互。涵蓋工具定義、代理使用方式以及七個必備工具(bash、文件讀寫、文件搜索、grep、網頁獲取等)的Python實現和工具模式定義。

來源Hacker News AI作者: ruxudev

在之前的文章中,我們構建了最基本的AI代理框架,它僅能根據內部知識回應用户輸入。但要讓代理真正有用,我們需要賦予它執行操作的能力,而工具(Tools)正是實現這一點的關鍵。工具是暴露給大語言模型(LLM)的函數或程序,使其能夠自主調用。本文將繼續擴展基礎代理,添加七種實用工具。

首先,工具的定義可以簡單如一個Python函數,也可以複雜如MCP服務器。現代LLM通過原生工具調用(native tool calling)支持以JSON格式生成工具請求,提升了可靠性。我們實現的第一個工具是run_bash,允許代理執行Bash命令——這是最強大的工具,但也最危險,因為它賦予代理完全的系統訪問權限。後續文章會討論安全措施。

接下來是文件操作工具。read_file可以讀取文件內容並顯示行號,支持偏移和行數限制。glob_files用於按模式查找文件,grep則通過正則表達式搜索文件內容,並返回匹配行及文件路徑。write_file用於創建或覆蓋文件,自動創建父目錄。edit_file進行精確的字符串替換,比全量寫入更安全。最後,webfetch工具可獲取網頁內容並轉換為純文本,限制為HTTP/HTTPS且最大2MB。

所有工具都需要定義模式(schema)供LLM識別。代碼中通過get_tool_schemas函數返回每個工具的名稱、描述和參數結構。在代理循環中,我們通過TOOL_REGISTRY映射工具名稱到實際函數,並在LLM返回工具調用時執行相應函數,將結果附加到對話中。系統提示詞中明確告知代理其可用工具。

這七種工具構成了AI代理與計算機交互的基礎。它們組合使用,使代理能夠探索文件系統、讀寫文件、執行命令和獲取網絡信息。後續文章將在此基礎上添加更多高級功能和安全加固。通過這種方式,我們可以逐步構建出功能強大的自主代理系統。