AI SDK 連携
Agents SDK は、標準ですぐに Responses API または Chat Completions API を介して OpenAI モデルと連携して動作します。ただし、別のモデルを使いたい場合は、Vercel AI SDK が対応モデルを幅広く提供しており、このアダプターを通じて Agents SDK に組み込めます。
セットアップ
Section titled “セットアップ”-
extensions パッケージをインストールして、AI SDK アダプターをインストールします
Terminal window npm install @openai/agents-extensions -
Vercel の AI SDK から使用したいモデルパッケージを選び、インストールします
Terminal window npm install @ai-sdk/openai -
アダプターとモデルをインポートして、エージェントに接続します
Import the adapter import { openai } from '@ai-sdk/openai';import { aisdk } from '@openai/agents-extensions/ai-sdk'; -
エージェントで使用するモデルのインスタンスを初期化します
Create the model import { openai } from '@ai-sdk/openai';import { aisdk } from '@openai/agents-extensions/ai-sdk';const model = aisdk(openai('gpt-5.4'));
import { Agent, run } from '@openai/agents';
// Import the model package you installedimport { openai } from '@ai-sdk/openai';
// Import the adapterimport { aisdk } from '@openai/agents-extensions/ai-sdk';
// Create a model instance to be used by the agentconst model = aisdk(openai('gpt-5.4'));
// Create an agent with the modelconst agent = new Agent({ name: 'My Agent', instructions: 'You are a helpful assistant.', model,});
// Run the agent with the new modelrun(agent, 'What is the capital of Germany?');プロバイダー metadata の受け渡し
Section titled “プロバイダー metadata の受け渡し”メッセージと一緒にプロバイダー固有のオプションを送る必要がある場合は、providerMetadata 経由で渡します。値は基盤となる AI SDK モデルに直接転送されます。たとえば、Agents SDK で次の providerData は
const providerData = { anthropic: { cacheControl: { type: 'ephemeral', }, },};次のようになり
const providerMetadata = { anthropic: { cacheControl: { type: 'ephemeral', }, },};AI SDK 連携時に使用されます。
最終出力テキストの正規化
Section titled “最終出力テキストの正規化”一部のプロバイダーは、JSON の code fence など追加のラッピング付きプレーンテキストとして structured outputs を返します。Agents runtime が最終出力を検証する前にプロバイダー固有のクリーンアップが必要な場合は、アダプター作成時に transformOutputText を渡してください。
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 側で実装されているためです。
つまり、ほかの場面と同じリトライ設定を適用できます。
Agent、Runner、またはその両方でmodelSettings.retryを設定するnetworkError()、httpStatus([...])、providerSuggested()などのretryPoliciesを組み合わせるproviderSuggested()は、ラップされた AI SDK モデルがアダプター経由でリトライ推奨情報を表出できる場合にのみ有効である点に注意する
aisdk(openai(...)) を使った完全な例は、examples/ai-sdk/retry.ts を参照してください。ストリーミングおよび状態を持つフォローアップリクエストにおける安全境界を含むリトライ API 自体については、モデル を参照してください。
適切な連携方法の選択
Section titled “適切な連携方法の選択”@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を返せるようにします
AI SDK モデルに関する注意点
Section titled “AI SDK モデルに関する注意点”@openai/agents-extensions/ai-sdkアダプターはまだ beta のため、特に小規模なプロバイダーでは慎重なテストをおすすめします- OpenAI モデルを使う場合は、このアダプターではなくデフォルトの OpenAI モデル provider を優先してください
- 対応する AI SDK providers は
specificationVersionv2またはv3を公開している必要があります。古い v1 provider スタイルが必要な場合は、examples/ai-sdk-v1 のモジュールをプロジェクトにコピーしてください - ここでは Deferred Responses の tool-loading フローはサポートされていません。これには
toolNamespace()、deferLoading: trueを伴う 関数ツール、toolSearchTool()が含まれます。tool search が必要な場合は、OpenAI Responses モデルを直接使用してください。ツール と モデル を参照してください
AI SDK UI ストリームヘルパー
Section titled “AI SDK UI ストリームヘルパー”@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 例:
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 例:
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 を参照してください。