smolagents 文件

多步代理(multi-step agent)是如何工作的?

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

多步代理是如何工作的?

ReAct 框架(Yao et al., 2022)是目前構建代理的主要方法。

這個名字基於兩個詞的拼接:“Reason”(推理)和“Act”(行動)。的確,遵循此架構的代理將根據需要透過多個步驟來解決任務,每個步驟都包含一個推理步驟,然後是一個行動步驟,在其中它會規劃工具呼叫,從而使其更接近解決手頭的任務。

smolagents 中的所有代理都基於單一的 MultiStepAgent 類,它是 ReAct 框架的抽象。

在基礎層面上,該類按照以下步驟迴圈執行操作,其中現有的變數和知識被整合到代理日誌中,如下所示

初始化:系統提示被儲存在 SystemPromptStep 中,使用者查詢被記錄到 TaskStep 中。

While 迴圈 (ReAct 迴圈)

  • 使用 agent.write_memory_to_messages() 將代理日誌寫入一個 LLM 可讀的聊天訊息列表。
  • 將這些訊息傳送給一個 Model 物件以獲取其補全結果。解析該補全結果以獲得行動(對於 ToolCallingAgent 是一個 JSON blob,對於 CodeAgent 是一個程式碼片段)。
  • 執行該行動並將結果記錄到記憶體中(一個 ActionStep)。
  • 在每個步驟結束時,我們執行所有在 agent.step_callbacks 中定義的回撥函式。

可選地,當規劃被啟用時,可以定期修訂一個計劃並將其儲存在 PlanningStep 中。這包括將有關手頭任務的事實反饋到記憶體中。

對於一個 CodeAgent,它看起來如下圖所示。

以下是其工作原理的影片概述

我們實現了兩個版本的代理

  • CodeAgent 將其工具呼叫生成為 Python 程式碼片段。
  • ToolCallingAgent 將其工具呼叫寫為 JSON,這在許多框架中很常見。根據您的需求,可以使用任何一種方法。例如,網頁瀏覽通常需要在每次頁面互動後等待,因此 JSON 工具呼叫可能非常適合。

閱讀 將開源 LLM 作為 LangChain 代理這篇博文,以瞭解更多關於多步代理的資訊。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.