コンテンツにスキップ

AI SDK 連携

Agents SDK は、標準ですぐに Responses API または Chat Completions API を介して OpenAI モデルと連携して動作します。ただし、別のモデルを使いたい場合は、Vercel AI SDK が対応モデルを幅広く提供しており、このアダプターを通じて Agents SDK に組み込めます。

  1. extensions パッケージをインストールして、AI SDK アダプターをインストールします

    Terminal window
    npm install @openai/agents-extensions
  2. Vercel の AI SDK から使用したいモデルパッケージを選び、インストールします

    Terminal window
    npm install @ai-sdk/openai
  3. アダプターとモデルをインポートして、エージェントに接続します

    Import the adapter
    import { openai } from '@ai-sdk/openai';
    import { aisdk } from '@openai/agents-extensions/ai-sdk';
  4. エージェントで使用するモデルのインスタンスを初期化します

    Create the model
    import { openai } from '@ai-sdk/openai';
    import { aisdk } from '@openai/agents-extensions/ai-sdk';
    const model = aisdk(openai('gpt-5.4'));
AI SDK Setup
import { Agent, run } from '@openai/agents';
// Import the model package you installed
import { openai } from '@ai-sdk/openai';
// Import the adapter
import { aisdk } from '@openai/agents-extensions/ai-sdk';
// Create a model instance to be used by the agent
const model = aisdk(openai('gpt-5.4'));
// Create an agent with the model
const agent = new Agent({
name: 'My Agent',
instructions: 'You are a helpful assistant.',
model,
});
// Run the agent with the new model
run(agent, 'What is the capital of Germany?');

プロバイダー metadata の受け渡し

Section titled “プロバイダー metadata の受け渡し”

メッセージと一緒にプロバイダー固有のオプションを送る必要がある場合は、providerMetadata 経由で渡します。値は基盤となる AI SDK モデルに直接転送されます。たとえば、Agents SDK で次の providerData

Agents SDK providerData
const providerData = {
anthropic: {
cacheControl: {
type: 'ephemeral',
},
},
};

次のようになり

AI SDK providerMetadata
const providerMetadata = {
anthropic: {
cacheControl: {
type: 'ephemeral',
},
},
};

AI SDK 連携時に使用されます。

一部のプロバイダーは、JSON の code fence など追加のラッピング付きプレーンテキストとして structured outputs を返します。Agents runtime が最終出力を検証する前にプロバイダー固有のクリーンアップが必要な場合は、アダプター作成時に transformOutputText を渡してください。

Normalize finalized output text
import { openai } from '@ai-sdk/openai';
import { aisdk } from '@openai/agents-extensions/ai-sdk';
const model = aisdk(openai('gpt-5.4'), {
transformOutputText(text) {
return text.match(/```(?:json)?\s*([\s\S]*?)\s*```/)?.[1]?.trim() ?? text;
},
});

transformOutputText は、非ストリーミング応答では確定済みの assistant テキストに対して実行され、ストリーミング応答では最終 response_done event で実行されます。増分の output_text_delta events は変更しません。

modelSettings.retry は AI SDK ベースのモデルでも動作します。これは、リトライがデフォルトの OpenAI provider だけでなく Agents runtime 側で実装されているためです。

つまり、ほかの場面と同じリトライ設定を適用できます。

  • AgentRunner、またはその両方で modelSettings.retry を設定する
  • networkError()httpStatus([...])providerSuggested() などの retryPolicies を組み合わせる
  • providerSuggested() は、ラップされた AI SDK モデルがアダプター経由でリトライ推奨情報を表出できる場合にのみ有効である点に注意する

aisdk(openai(...)) を使った完全な例は、examples/ai-sdk/retry.ts を参照してください。ストリーミングおよび状態を持つフォローアップリクエストにおける安全境界を含むリトライ API 自体については、モデル を参照してください。

@openai/agents-extensions には、関連する 2 つの連携機能があります。

  • @openai/agents-extensions/ai-sdk は AI SDK モデルを適合させ、Agent がその上で実行できるようにします
  • @openai/agents-extensions/ai-sdk-ui はストリーミングされた Agents SDK 実行を適合させ、AI SDK UI routes が標準のストリーミング Response を返せるようにします
  • @openai/agents-extensions/ai-sdk アダプターはまだ beta のため、特に小規模なプロバイダーでは慎重なテストをおすすめします
  • OpenAI モデルを使う場合は、このアダプターではなくデフォルトの OpenAI モデル provider を優先してください
  • 対応する AI SDK providers は specificationVersion v2 または v3 を公開している必要があります。古い v1 provider スタイルが必要な場合は、examples/ai-sdk-v1 のモジュールをプロジェクトにコピーしてください
  • ここでは Deferred Responses の tool-loading フローはサポートされていません。これには toolNamespace()deferLoading: true を伴う 関数ツール、toolSearchTool() が含まれます。tool search が必要な場合は、OpenAI Responses モデルを直接使用してください。ツールモデル を参照してください

@openai/agents-extensions/ai-sdk-ui は、Agents SDK ストリームを AI SDK UI routes に接続するためのレスポンスヘルパーを提供します。

  • プレーンテキストのストリーミング応答向け createAiSdkTextStreamResponse(source, options?)
  • UIMessageChunk ストリーミング応答向け createAiSdkUiMessageStreamResponse(source, options?)

両方のヘルパーは StreamedRunResult、stream-like source、または互換ラッパーオブジェクトを受け取り、ストリーミング向けヘッダー付きの Response を返します。

tool calls や reasoning parts のような構造化 chunk が UI に必要な場合は createAiSdkUiMessageStreamResponse(...) を使います。プレーンテキストのみが必要な場合は createAiSdkTextStreamResponse(...) を使います。

UI message ストリーミング向けの Next.js route 例:

UI message stream response
import { Agent, run } from '@openai/agents';
import { createAiSdkUiMessageStreamResponse } from '@openai/agents-extensions/ai-sdk-ui';
const agent = new Agent({
name: 'Assistant',
instructions: 'Reply with a short answer.',
});
export async function POST() {
const stream = await run(agent, 'Hello there.', { stream: true });
return createAiSdkUiMessageStreamResponse(stream);
}

テキストのみのストリーミング向け Next.js route 例:

Text stream response
import { Agent, run } from '@openai/agents';
import { createAiSdkTextStreamResponse } from '@openai/agents-extensions/ai-sdk-ui';
const agent = new Agent({
name: 'Assistant',
instructions: 'Reply with a short answer.',
});
export async function POST() {
const stream = await run(agent, 'Hello there.', { stream: true });
return createAiSdkTextStreamResponse(stream);
}

エンドツーエンドの使用方法は、このリポジトリの examples/ai-sdk-ui app を参照してください。