For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
メインナビゲーション

セッションの実行と継続

作業を開始し、進捗を確認しながら会話を続けます。

セッションは、エージェントの構成、会話、保存済みの作業内容を継続的に保持します。同じセッションを再利用して追加のメッセージを送り、作業を続けられます。

セッションとターン

ターンは、セッション内での 1 回の作業サイクルです。アイドル状態のセッションにメッセージを送ると、新しいターンが始まります。実行中のターンにメッセージを送ると、そのターンの作業方針を調整できます。

ターンは非同期で実行されます。アプリケーションでは、ストリーミングで進捗を確認したり、Webhook でセッションの状態変化を受信したりできます。

作業の開始

エージェントの構成と初期の input を指定してセッションを作成します。streamtrue に設定すると、同じリクエストで最初のターンのイベントを受信できます。

API キーと SDK を設定したら、次の例を実行してスクリプトを作成・実行します。実行環境は OpenAI が管理します。

セッションの作成と最初のターンのストリーミング
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)

session_id をアプリケーションの会話の状態とともに保存します。この ID を使って追加のメッセージを送ったり、その会話に保存された作業内容を取得したりできます。

再利用可能なエージェント設定についてはエージェントの設定を、環境の選択肢についてはアーキテクチャを参照してください。environment.type: "none" を指定したセッションには初期入力が必要です。リクエストのフィールドは、セッション作成のリファレンスに記載されています。

進捗の確認と結果への対応

エージェントの作業中は、イベントによって出力や変更が通知されます。ターンの結果が完了、失敗、キャンセルのいずれかを確認してください。セッションがアイドル状態になっただけでは、ターンが成功したとは限りません。

agent.session.turn.completedagent.session.turn.failedagent.session.turn.cancelled のいずれかを確認してください。エージェントの出力も確認します。ターンが完了していても、すべてのツールが成功したとは限りません。

セッションが関数の結果や環境への接続を必要としている場合は、セッションを取得して required_actions を確認します。作業を続行するには、アプリケーションのコードで関数呼び出しを処理するか、環境に接続する必要があります。

イベントの種類とペイロードについては、イベントとアイテムを参照してください。

作業の継続と方針の調整

同じセッションに別の agent.session.input.message を送信します。エージェントが作業中の場合、メッセージによって実行中のターンの作業方針を調整できます。セッションがアイドル状態の場合は、既存の会話を引き継いで新しいターンが始まります。

保存済みエージェントへの更新は、新しいセッションにのみ適用されます。このセッションの今後のターンで使用するモデル、推論強度、サービスティアを変更するには、セッションの設定を更新してください

会話のセッション ID を使って入力を送信します。ターンの初期イベントをアプリケーションで受信できるように、メッセージを送信する前にそのセッションのイベントストリームを購読してください。

API クライアント、セッション ID、メッセージをアプリケーション内の関数に渡します。

追加メッセージの送信
# Pass your saved session ID and message to this helper.
def send_message(client: OpenAI, session_id: str, text: str) -> None:
    client.beta.agents.sessions.events.create(
        session_id,
        events=[
            {
                "type": "agent.session.input.message",
                "input": [
                    {
                        "role": "user",
                        "content": [
                            {
                                "type": "input_text",
                                "text": text,
                            }
                        ],
                    }
                ],
            }
        ],
    )

送信とストリーミングを組み合わせた例については、イベントとアイテムを参照してください。

保存済みの作業内容の取得

イベントはリアルタイムの進捗を示します。アイテムは、保存されたメッセージやツール呼び出しで、完了した応答も含まれます。過去の作業内容を表示したり、ターン終了後に結果を確認したりするには、アイテムを取得します。

セッションのアイテムの取得
# Pass your saved session ID to this helper.
def list_items(client: OpenAI, session_id: str):
    return client.beta.agents.sessions.items.list(session_id, order="asc", limit=100)

セッションの状態とターンの結果の確認方法については、セッションの管理を参照してください。ファイルの取得方法については、ファイルとアーティファクトを参照してください。

ストリームでは、受信できなかったイベントは再送されません。接続が切れた場合は、セッションとその保存済みアイテムを取得して作業内容を復元します。再接続の手順については、切断されたストリームの復旧を参照してください。

実行中のターンのキャンセル

エージェントを停止したい場合は、現在のターンをキャンセルします。セッションとそれまでの作業内容は引き続き利用できます。

実行中のターンのキャンセル
# Pass your saved session ID to this helper.
def cancel_turn(client: OpenAI, session_id: str) -> None:
    client.beta.agents.sessions.events.create(
        session_id, events=[{"type": "agent.session.input.cancel"}]
    )