> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenAI

> CoreWeave Forge SDK を使用して、OpenAI SDK の Call を Agent Lens でトレースします。

CoreWeave Forge SDK は、Python および Node.js 向けの OpenAI SDK による Call を自動的にトレースします。トレースを初期化すると、会話内の各 Call が LLM スパンとして Agent Lens に記録されます。記録内容には、メッセージ、ツール呼び出し、リクエスト設定、トークン使用量 (キャッシュされたトークンや推論トークンを含む) が含まれます。OpenAI SDK の呼び出し方法を変更する必要はありません。

このインテグレーションでは、チャット補完 (ストリーミングを含む) 、構造化出力のパース、Responses API (ストリーミングを含む) 、画像生成をトレースできます。

<h2 id="prerequisites">
  前提条件
</h2>

* CoreWeave Forge アカウント、および環境変数 `WANDB_API_KEY` に設定済みの [APIキー](https://forge.coreweave.com/settings#apikeys)。
* 環境変数 `OPENAI_API_KEY` に設定済みの [OpenAI APIキー](https://platform.openai.com/api-keys)。
* Python の場合: Python 3.10 以降、および `openai` 1.99.9 以降。
* TypeScript の場合: Node.js 18.19 以降 (または 20.6 以降) 、および `openai` 4.0.0 以降。

<h2 id="install-packages">
  パッケージをインストールする
</h2>

<CodeGroup>
  ```bash Python theme={"system"}
  pip install "coreweave[openai]"
  ```

  ```bash TypeScript theme={"system"}
  npm install @coreweave/forge-sdk openai
  ```
</CodeGroup>

<h2 id="trace-openai-conversations">
  OpenAI の会話をトレースする
</h2>

Forge のチーム名と project 名を指定して `tracing.init()` を呼び出します。Python では、OpenAI SDK をインポートするのが `tracing.init()` の呼び出しの前でも後でも、`tracing.init()` によって SDK にパッチが適用されます。TypeScript では、TypeScript タブに示すインストルメンテーションフラグを指定して Node を起動します。

Agent Lens に表示されるのは、会話内で実行された Call のみです。会話の外で行われた Call には会話 ID がないため、Agent Lens には表示されません。エージェントセッションごとに会話を 1 つ作成し、ユーザーメッセージごとにターンを開始してください。すべてのターンが会話の ID を共有するため、Agent Lens はそれらのターンを 1 つの会話にまとめます。また、各 Call は、それが実行されたターンの LLM スパンになります。

<Tabs>
  <Tab title="Python">
    ```python lines theme={"system"}
    from openai import OpenAI
    from coreweave.forge.agentlens import tracing

    tracing.init("[YOUR-TEAM]/[YOUR-PROJECT]")
    client = OpenAI()

    questions = [
        "What is inference latency?",
        "How does batching affect it?",
        "Summarize what we discussed in one sentence.",
    ]

    history = []
    with tracing.Conversation(agent_name="support-agent") as conversation:
        for question in questions:
            with conversation.start_turn(user_message=question):
                history.append({"role": "user", "content": question})
                response = client.responses.create(model="gpt-5-mini", input=history)
                history.append({"role": "assistant", "content": response.output_text})
                print(response.output_text)

    tracing.shutdown()
    ```
  </Tab>

  <Tab title="TypeScript">
    エージェントの各 run を `tracing.runIsolated()` でラップして、その会話とターンを同時に実行される他の run から分離します。

    ```typescript lines title="app.mjs" theme={"system"}
    import OpenAI from 'openai';
    import {tracing} from '@coreweave/forge-sdk/agentlens';

    await tracing.init('[YOUR-TEAM]/[YOUR-PROJECT]');
    const openai = new OpenAI();

    const questions = [
      'What is inference latency?',
      'How does batching affect it?',
      'Summarize what we discussed in one sentence.',
    ];

    await tracing.runIsolated(async () => {
      const conversation = tracing.startConversation({agentName: 'support-agent'});
      const history = [];
      try {
        for (const question of questions) {
          const turn = conversation.startTurn({userMessage: question});
          try {
            history.push({role: 'user', content: question});
            const response = await openai.responses.create({model: 'gpt-5-mini', input: history});
            history.push({role: 'assistant', content: response.output_text});
            console.log(response.output_text);
          } finally {
            turn.end();
          }
        }
      } finally {
        conversation.end();
      }
    });

    await tracing.shutdown();
    ```

    インストルメンテーションフラグを指定してスクリプトを実行します。このフラグにより、コードより先に Forge のインストルメンテーションが読み込まれるため、コードで OpenAI SDK をインポートした時点でパッチが適用されます。

    ```bash theme={"system"}
    node --import=@coreweave/forge-sdk/instrument app.mjs
    ```

    バンドラーで依存関係を 1 つのファイルにまとめている場合など、フラグを使用できないときは、代わりにクライアントをラップします。

    ```typescript theme={"system"}
    import {integrations} from '@coreweave/forge-sdk/agentlens';

    const openai = integrations.wrapOpenAI(new OpenAI());
    ```

    フラグなしで実行すると、`tracing.init()` はその旨の警告を 1 回だけ出力します。クライアントをラップしている場合は、この警告を無視してかまいません。
  </Tab>
</Tabs>

リクエストごとに 1 つのターンを処理する Web アプリなどで、既存の会話に後からターンを追加するには、会話を作成するたびに同じ `conversation_id` (Python) または `conversationId` (TypeScript) を渡します。

会話、ターン、その他のスパンタイプの詳細については、[エージェントをトレースする](/ja/products/agent-lens/tracing/instrument)を参照してください。

<h2 id="turn-off-automatic-patching">
  自動パッチ適用を無効にする
</h2>

Python では、`tracing.init()` に `autopatch_integrations=False` を渡します。その後は、`tracing.integrations.patch_openai()` と `tracing.integrations.unpatch_openai()` を使用して、OpenAI SDK へのパッチの適用と解除を手動で行えます。

TypeScript では、`--import=@coreweave/forge-sdk/instrument` フラグを指定せずに実行し、トレースしたいクライアントだけを `integrations.wrapOpenAI()` でラップします。

<h2 id="view-your-traces">
  トレースを表示する
</h2>

[CoreWeave Forge](https://forge.coreweave.com) でプロダクトメニューから Agent Lens を選択し、サイドメニュー上部の project セレクターで対象の project を選択してから、**Conversations** を選択します。詳細については、[エージェントのアクティビティを表示する](/ja/products/agent-lens/conversations/view-activity)を参照してください。
