如何使用OpenAI API構建具有規劃、工具調用、記憶和自我批評能力的高級代理AI系統
本教程介紹瞭如何使用OpenAI API構建一個高級代理AI系統,該系統包括規劃、工具調用、記憶和自我批評模塊。通過將代理設計為規劃者、工具執行者和批評者三個專業化角色的管道,實現了策略、行動和質量控制的分離。系統集成了計算器、知識庫搜索、JSON提取和文件寫入等結構化工具,能夠可靠地計算、檢索指導、生成結構化輸出並保存交付物。文章還提供了完整的代碼示例和演示用例。
在本教程中,我們將使用OpenAI API構建一個高級代理AI系統,該系統能夠進行規劃、調用工具、維護記憶並進行自我批評。我們將代理設計為一個小型管道,包含三個專業化角色:規劃者、工具使用執行者和批評者,從而將策略、行動和質量控制分離開來。我們還集成了結構化工具(計算器、小型知識庫搜索、JSON提取和文件寫入),使代理能夠可靠地進行計算、檢索指導、生成結構化輸出並保存工件作為交付物。
首先,我們安裝OpenAI SDK並僅導入所需模塊,以保持在Colab中的輕量和可重複性。我們通過getpass()獲取API密鑰,使其保持隱藏,不會出現在筆記本輸出或代碼中。然後,我們創建一個OpenAI客户端並設置模型字符串,以便系統的其他部分可以一致地重用。
接下來,我們定義一個小型內部“知識庫”,用於模擬團隊文檔或劇本,代理可以通過工具調用進行查詢。我們實現了返回結構化字典的工具,以確保工具輸出機器可讀且健壯。這些工具包括一個安全的計算器、基於關鍵字的知識庫搜索、用於結構化解析的JSON提取器,以及用於將最終交付物保存為工件的文件寫入器。
我們將Python工具註冊到一個映射中,以便在函數調用期間按名稱調用它們。我們聲明工具模式,使模型能夠使用正確的參數結構調用工具。我們定義了AgentState來存儲目標、記憶和工具調用跟蹤,從而允許我們檢查發生了什麼並調試代理的行為。我們實現了一個安全的chat()包裝器,僅在提供工具時包含tool_choice,以防止出現400錯誤。
我們定義了三個角色提示來分離代理的職責:規劃者生成結構化計劃,執行者執行任務並按需使用工具,批評者改進最終輸出。我們實現了一個循環來執行模型調用、檢測工具調用、在Python中執行它們,然後將它們的輸出反饋給模型。這創建了一個真正的工具使用代理,而不是單次文本生成器。
我們實現了批評者來審查草稿並生成完善的最終響應,使用工具跟蹤作為額外證據進行調試和問責。我們實現了run_agent()來編排完整循環:初始化狀態、規劃、使用工具執行、批評和最終確定。最後,我們提供了一個演示目標,該目標強制生成一個真實的交付物:摘要、結構化行動項JSON、跟進電子郵件以及通過write_file工具將輸出保存到文件。
總之,我們實現了一個實用的代理架構,清晰地分離了規劃、工具執行和基於批評的改進。我們將模型與具有嚴格模式的真實工具連接起來,記錄了透明的工具跟蹤以進行調試,並通過將最終輸出保存到文件來生成工件。通過這種結構,我們可以通過添加工具重試策略、並行子代理、更豐富的記憶(向量+符號)和評估框架來將代理擴展到更生產級的工作流程。
完整的代碼和筆記本可在此處查看。此外,請隨時在Twitter上關注我們,並不要忘記加入我們的150k+ ML SubReddit和訂閲我們的新聞通訊。如果您使用Telegram,現在也可以加入我們。
需要與我們合作推廣您的GitHub Repo、Hugging Face頁面、產品發佈或網絡研討會等?請與我們聯繫。