For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
主要導覽

多智慧體

讓智慧體將工作委派給獨立的子代理程式。

多智慧體功能讓智慧體能將任務委派給子代理程式。每個子代理程式都有自己的上下文,並可與其他子代理程式並行工作。主要智慧體負責協調工作並彙整結果。

何時使用子代理程式

使用子代理程式處理彼此獨立的任務,例如審查不同文件,或調查可能導致故障的不同原因。為每項任務明確指出要解決的問題與預期結果。

簡短的任務與具有相依性的步驟應由主要智慧體處理。編輯相同檔案的智慧體必須協調彼此的變更。

啟用多智慧體編排

建立工作階段時,將 agent.multi_agent.enabled 設為 true。任務執行框架會提供工具,讓你建立子代理程式、傳送訊息給子代理程式、等待子代理程式,以及中斷子代理程式。你不需要自行宣告這些工具。

此範例請兩個子代理程式分別審查不同的版本資訊,再彙整審查結果。不需要環境,也不需要設定工具:

比較版本資訊
from openai import OpenAI

client = OpenAI()

with client.beta.agents.sessions.create(
    agent={
        "model": "gpt-6-astra",
        "instructions": "Delegate each release to a separate subagent. Ask each to extract customer-visible changes and required migration steps using only its release notes. Wait for both results, then combine them into one release summary with release labels. Do not invent missing details.",
        "multi_agent": {"enabled": True, "max_concurrent_subagents": 2},
    },
    environment={"type": "none"},
    input="Release A: Search now supports filtering by date. Existing queries continue to work. Release B: The export endpoint now returns a download URL instead of file bytes. Update clients to fetch that URL.",
    stream=True,
) as events:
    for event in events:
        print(event.model_dump_json())

使用 environment.type: "none" 時,請在建立請求中包含初始的 input。設定 stream: true 也會以串流方式傳回第一個回合。串流處理與復原方式請參閱工作階段事件與項目

並行設定

max_concurrent_subagents 限制可同時執行的子代理程式數量。預設值為 6,不含協調智慧體。啟用委派時,請將此值設為正整數。

若要停用委派,請省略 multi_agent,或將 enabled 設為 false 並省略數量上限。這些設定會在建立工作階段時套用。對已儲存智慧體所做的變更會套用至新的工作階段。

使用環境

當智慧體需要使用檔案或執行指令時,請新增環境。協調智慧體與子代理程式會共用該環境的檔案系統。建立子代理程式不會另外建立環境。

此範例會建立工作階段,以便在你自己的環境中工作:

在你自己的環境中啟用委派
const result = await client.beta.agents.sessions.create({
  agent: {
    model: "gpt-6-astra",
    instructions:
      "Prepare release notes from the repository. Have one subagent identify customer-visible changes and another check migration guides and examples, then combine their findings.",
    multi_agent: {
      enabled: true,
      max_concurrent_subagents: 3,
    },
  },
  environment: {
    type: "self_hosted",
    workspace_directory: "/workspace",
  },
});

將傳回的工作階段 ID 與環境 ID 儲存在你的應用程式中。連接環境,然後傳送輸入以開始工作。

子代理程式可用的工具

子代理程式會繼承已設定的 MCP 工具、其憑證與允許使用的工具,以及網頁搜尋設定。它們也能使用環境中的檔案與指令列工具。子代理程式不支援函式工具

觀察委派活動

工作階段事件串流會回報子代理程式的活動:

  • agent.session.subagent.created 提供新子代理程式的 ID。
  • agent.session.turn.item.addedagent.session.turn.item.done 會回報協調動作。其項目類型包括 create_subagent_callsend_subagent_input_callwait_for_subagents_callinterrupt_subagent_call

這些動作由任務執行框架執行。建立或等待動作完成,不代表子代理程式已完成任務。在建立項目中,agent_id 用於識別要求建立該子代理程式的智慧體。

協調項目可能不包含訊息內容。若有可用的智慧體間通訊文字,agent_message 項目便會包含這些文字,但串流不會提供完整的對話紀錄。

請閱讀主要智慧體的回覆,以取得彙整後的結果。使用已儲存的項目與回合來檢視先前的工作,包括各個子代理程式的歷程記錄。

追溯指令的執行者

取得指令項目及其工作階段 ID 後,可擷取該指令所屬的回合,以識別執行指令的智慧體。若由主要智慧體執行,該回合的 subagent_idnull

識別執行指令的智慧體
// Use the saved session ID and command execution item from your application.
const turn = await client.beta.agents.sessions.turns.retrieve(
  command.turn_id,
  { session_id: sessionId }
);
console.log(turn.subagent_id);