執行期

對話循環

在單一使用者輪次中掌管模型與工具迭代的來源元件。

概念專屬圖版對話循環hx-graph-context-concept-conversation-loop正在載入視覺預覽…
以原始尺寸檢視

對話循環

這是什麼

這個執行階段元件會在一次使用者訊息的處理期間協調模型回覆、工具執行與停止條件。

白話解釋

可以把它想成記者持續追問消息來源,直到取得足以結案的答案。一次使用者輪次可能經過多次模型與工具往返:模型先要求搜尋,搜尋結果加入訊息後再判斷下一步,直到回傳不含工具呼叫的最終內容。

為什麼重要

run_conversation 掌管單一使用者輪次中的模型與工具迭代,並在進入迴圈前只呼叫一次 build_turn_context。這條路徑會組合目前的 prompt、歷史、工具、記憶與執行階段狀態。選用的 BOOT.md gateway 啟動掛鉤是另一種生命週期模式;對話循環不會在每輪載入 BOOT.md

運作方式

agent/conversation_loop.pyrun_conversation 原先是從 run_agent.py 抽出的約 3,900 行主體;後來又把每輪只執行一次的設定拆到 turn_context.py。函式先呼叫一次 build_turn_context,再進入 while 迴圈,以 api_call_count 對照 agent.max_iterationsagent.iteration_budget 的剩餘額度。每次模型呼叫後會檢查 assistant_message.tool_calls:若清單非空,agent._execute_tool_callsagent/tool_executor.py)會執行這批工具,結果加入 messages 後再呼叫模型;若清單為空,assistant_message.content 就成為最終答案並結束迴圈。若額度先耗盡,迴圈外的步驟會再要求模型產生一次不使用工具的最終摘要。

具體範例

使用者要求 Hermes 找出今天最重要的 AI 新聞並發布到 Slack,會經過三次迭代:

  1. 第一次,模型回傳 web_search 工具呼叫;迴圈執行搜尋、加入結果,再呼叫模型。
  2. 第二次,模型根據搜尋結果回傳 Slack 工具呼叫;迴圈執行並加入發布結果。
  3. 第三次,模型用純文字確認已發布,且沒有附帶 tool_calls,因此迴圈停止並回傳該文字。

如何連結

「對話循環」屬於「執行期」系列,最直接相關的概念包括「對話輪次上下文」、「工具執行器」與「個人作業系統」。

來源證據

  • agent/conversation_loop.py#agent.conversation_loop.run_conversation — 已驗證的精確符號對應;run_conversation 會將目前 prompt 與暫時性 prompt 注入第一則系統訊息,從 api_messages 建立 provider 請求的 kwargs,並讓代表性的串流分支透過 LLM 執行 middleware 呼叫 _interruptible_streaming_api_call

工作流程

  • 目前尚無第一輪工作流程對應;此概念仍透過文章與來源證據出現在知識庫圖譜中。

相關文章

  • 目前沒有文章以足夠頻率直接提及此概念名稱或別名,尚未達到提及探勘門檻。

相關筆記