モデル
すべてのエージェントは最終的に LLM を呼び出します。SDK は、モデルを 2 つの軽量なインターフェースの背後に抽象化します。
Model– 特定の API に対して 1 回 のリクエストを行う方法を知っていますModelProvider– 人が読めるモデルの名前(例:'gpt‑4o')をModelインスタンスに解決します
日々の作業では、通常はモデルの名前と、時折 ModelSettings のみを扱います。
import { Agent } from '@openai/agents';
const agent = new Agent({ name: 'Creative writer', model: 'gpt-5.2',});Agent を初期化する際にモデルを指定しない場合、既定のモデルが使用されます。互換性と低レイテンシのため、現在の既定は gpt-4.1 です。アクセス可能であれば、明示的な modelSettings を維持したまま、より高品質な gpt-5.2 をエージェントに設定することを推奨します。
gpt-5.2 のような他のモデルに切り替える場合、エージェントの設定方法は 2 通りあります。
まず、カスタムモデルを設定していないすべてのエージェントで一貫して特定のモデルを使用したい場合は、エージェントを実行する前に OPENAI_DEFAULT_MODEL 環境変数を設定します。
export OPENAI_DEFAULT_MODEL=gpt-5node my-awesome-agent.js次に、Runner インスタンスに既定モデルを設定できます。エージェントにモデルを設定しない場合は、この Runner の既定モデルが使用されます。
import { Runner } from '@openai/agents';
const runner = new Runner({ model: 'gpt‑4.1-mini' });GPT-5 モデル
Section titled “GPT-5 モデル”この方法で GPT-5 のいずれかの推論モデル(gpt-5、gpt-5-mini、gpt-5-nano)を使用する場合、SDK は妥当な modelSettings を既定で適用します。具体的には、reasoning.effort と verbosity の両方を "low" に設定します。既定モデルの推論負荷を調整するには、独自の modelSettings を渡してください。
import { Agent } from '@openai/agents';
const myAgent = new Agent({ name: 'My Agent', instructions: "You're a helpful agent.", modelSettings: { reasoning: { effort: 'minimal' }, text: { verbosity: 'low' }, }, // If OPENAI_DEFAULT_MODEL=gpt-5 is set, passing only modelSettings works. // It's also fine to pass a GPT-5 model name explicitly: // model: 'gpt-5',});低レイテンシを重視する場合、gpt-5-mini または gpt-5-nano に reasoning.effort="minimal" を指定すると、既定設定よりも高速に応答が返ることがよくあります。ただし、Responses API の一部の組み込みツール(ファイル検索や画像生成など)は "minimal" の推論負荷をサポートしていないため、この Agents SDK の既定は "low" になっています。
非 GPT-5 モデル
Section titled “非 GPT-5 モデル”カスタムの modelSettings なしで GPT-5 以外のモデル名を渡した場合、SDK はあらゆるモデルと互換性のある汎用的な modelSettings にフォールバックします。
OpenAI プロバイダ
Section titled “OpenAI プロバイダ”既定の ModelProvider は OpenAI API を使って名前を解決します。2 つの異なるエンドポイントをサポートします。
| API | 用途 | setOpenAIAPI() を呼び出す |
|---|---|---|
| Chat Completions | 標準のチャット & 関数呼び出し | setOpenAIAPI('chat_completions') |
| Responses | 新しい ストリーミング優先 の生成 API(ツール呼び出し、柔軟な出力) | setOpenAIAPI('responses') (既定) |
import { setDefaultOpenAIKey } from '@openai/agents';
setDefaultOpenAIKey(process.env.OPENAI_API_KEY!); // sk-...ネットワーク設定をカスタマイズする必要がある場合は、setDefaultOpenAIClient(client) を介して独自の OpenAI クライアントを差し込むこともできます。
ModelSettings
Section titled “ModelSettings”ModelSettings は OpenAI のパラメーターを反映しますが、プロバイダに依存しません。
| フィールド | 型 | 注記 |
|---|---|---|
temperature | number | 創造性と決定論のバランス |
topP | number | Nucleus sampling |
frequencyPenalty | number | 繰り返しトークンへのペナルティ |
presencePenalty | number | 新しいトークンの出現を促進 |
toolChoice | 'auto' | 'required' | 'none' | string | ツール使用の強制 を参照 |
parallelToolCalls | boolean | サポートされる場合に関数呼び出しの並列実行を許可 |
truncation | 'auto' | 'disabled' | トークンの切り捨て戦略 |
maxTokens | number | 応答内の最大トークン数 |
store | boolean | 応答を保存して取得 / RAG ワークフローに活用 |
reasoning.effort | 'minimal' | 'low' | 'medium' | 'high' | gpt-5 などの推論負荷 |
text.verbosity | 'low' | 'medium' | 'high' | gpt-5 などのテキスト冗長性 |
設定はどちらのレベルにも付与できます。
import { Runner, Agent } from '@openai/agents';
const agent = new Agent({ name: 'Creative writer', // ... modelSettings: { temperature: 0.7, toolChoice: 'auto' },});
// or globallynew Runner({ modelSettings: { temperature: 0.3 } });Runner レベルの設定は、競合するエージェントごとの設定を上書きします。
エージェントには prompt パラメーターを設定できます。これは、エージェントの挙動を制御するために使用する サーバー保管 のプロンプト設定を示します。現在、このオプションは OpenAI の
Responses API を使用する場合のみサポートされています。
| フィールド | 型 | 注記 |
|---|---|---|
promptId | string | プロンプトの一意の識別子 |
version | string | 使用したいプロンプトのバージョン |
variables | object | プロンプトに差し込むためのキー/バリューの変数。値は文字列、またはテキスト・画像・ファイルなどのコンテンツ入力タイプにできます |
import { Agent, run } from '@openai/agents';
async function main() { const agent = new Agent({ name: 'Assistant', prompt: { promptId: 'pmpt_68d50b26524c81958c1425070180b5e10ab840669e470fc7', variables: { name: 'Kaz' }, }, });
const result = await run(agent, 'What is your name?'); console.log(result.finalOutput);}
main().catch((error) => { console.error(error); process.exit(1);});ツールや instructions など、追加のエージェント設定は、保存済みプロンプトで設定している値を上書きします。
カスタムモデルプロバイダ
Section titled “カスタムモデルプロバイダ”独自のプロバイダの実装は簡単です。ModelProvider と Model を実装し、そのプロバイダを Runner のコンストラクタに渡します。
import { ModelProvider, Model, ModelRequest, ModelResponse, ResponseStreamEvent,} from '@openai/agents-core';
import { Agent, Runner } from '@openai/agents';
class EchoModel implements Model { name: string; constructor() { this.name = 'Echo'; } async getResponse(request: ModelRequest): Promise<ModelResponse> { return { usage: {}, output: [{ role: 'assistant', content: request.input as string }], } as any; } async *getStreamedResponse( _request: ModelRequest, ): AsyncIterable<ResponseStreamEvent> { yield { type: 'response.completed', response: { output: [], usage: {} }, } as any; }}
class EchoProvider implements ModelProvider { getModel(_modelName?: string): Promise<Model> | Model { return new EchoModel(); }}
const runner = new Runner({ modelProvider: new EchoProvider() });console.log(runner.config.modelProvider.getModel());const agent = new Agent({ name: 'Test Agent', instructions: 'You are a helpful assistant.', model: new EchoModel(), modelSettings: { temperature: 0.7, toolChoice: 'auto' },});console.log(agent.model);トレーシングエクスポーター
Section titled “トレーシングエクスポーター”OpenAI プロバイダを使用する場合、API キーを指定して自動トレースエクスポートを有効化できます。
import { setTracingExportApiKey } from '@openai/agents';
setTracingExportApiKey('sk-...');これにより、OpenAI ダッシュボード にトレースが送信され、ワークフローの完全な実行グラフを確認できます。