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

Agents API 快速入門

建立能在 OpenAI 託管的沙盒中編寫及執行指令碼的智慧體。

打造一個程式設計助理,讓它編寫並執行 tree.py,再顯示目錄樹。OpenAI 會管理智慧體、它的對話,以及它執行工作的沙盒。

先決條件

在你的 OpenAI Platform 專案中建立應用程式 API 金鑰。授予 api.agents.readapi.agents.write 權限以操作工作階段,以及 api.responses.write 權限以執行模型推論,然後將金鑰匯出為環境變數:

export OPENAI_API_KEY="your-api-key"

請將此金鑰保存在智慧體的沙盒之外。如需沙盒組態與限制的詳細資訊,請參閱 OpenAI 託管的沙盒

請求必須包含 OpenAI-Beta: agents=v1 標頭。OpenAI SDK 會 自動加入此標頭;使用 cURL 時,請明確加入。

1. 執行任務

選擇語言、安裝 OpenAI SDK,然後執行範例。SDK 範例使用 beta.agents 命名空間。此請求會建立工作階段、提交任務,並以串流方式傳回進度。

安裝或更新 Python SDK:

pip install --upgrade openai

將範例儲存為 quickstart.py

建立並執行 tree.py
from openai import OpenAI

with OpenAI() as client:
    with client.beta.agents.sessions.create(
        agent={
            "model": "gpt-6-astra",
            "instructions": "Write clean code, run it, and report the actual output.",
        },
        environment={"type": "openai_hosted"},
        input="Create tree.py, a Python script that prints a readable tree of the files in the current directory. Run it and show me the output.",
        stream=True,
    ) as events:
        for event in events:
            print(event.to_json(indent=None), flush=True)

在終端中執行:

python quickstart.py

不需要沙盒? 若智慧體只需回答問題或呼叫外部工具, 不需要執行指令或處理本機檔案, 請將 environment.type 設為 none進一步 瞭解

2. 追蹤進度

終端會顯示串流傳回的事件。SDK 範例會輸出 JSON;cURL 則會顯示原始事件串流。執行成功時,智慧體會建立並執行 tree.py,然後回報包含該檔案的目錄樹。其他檔案與輸出則取決於沙盒。

找到 agent.session.turn.completed 事件後,請檢查智慧體回報的執行結果。回合完成不保證每個工具都執行成功。以 turn.failedturn.cancelledsession.failed 結尾的事件表示失敗或取消;僅有 agent.session.idle 並不代表成功。如果串流提前中斷,請先擷取工作階段及其已儲存的項目,再重試。

3. 繼續工作階段

儲存事件中的 session_id。使用它傳送後續訊息,例如:「Add a maximum-depth option to tree.py, run it, and show me the output.」傳送後續輸入前,請先開啟事件串流,以免錯過初期事件。

4. 清理

你可以保留工作階段以執行更多任務,或在完成後將其刪除。刪除前,請先儲存所需的檔案

請將範例中的示意值 sess_123 替換為你儲存的工作階段 ID。

刪除工作階段
# Replace the illustrative IDs and URLs below with your own resource values.

from openai import OpenAI


def delete_session(client: OpenAI, session_id: str):
    return client.beta.agents.sessions.delete(session_id)


if __name__ == "__main__":
    result = delete_session(OpenAI(), "sess_123")
    print(result.to_json())

後續步驟