クイックスタート
プロジェクト設定と認証情報
Section titled “プロジェクト設定と認証情報”-
プロジェクトの作成
このクイックスタートでは、ブラウザで使える音声エージェントを作成します。新しいプロジェクトをスキャフォールドする場合は、
Next.jsまたはViteから始められます。Terminal window npm create vite@latest my-project -- --template vanilla-ts -
推奨パッケージのインストール ( Zod v4 が必要です )
Terminal window npm install @openai/agents zod -
クライアント用の一時トークンの生成
このアプリケーションはユーザーのブラウザで実行されるため、Realtime API を通じてモデルに接続する安全な方法が必要です。推奨フローは公式の Realtime API with WebRTC ガイドと同じです。まずバックエンドが短命のクライアント一時トークンを作成し、その後ブラウザがそのトークンを使って WebRTC 接続を確立します。テスト目的であれば、
curlと通常の OpenAI API キーを使ってトークンを生成することもできます。Terminal window export OPENAI_API_KEY="sk-proj-...(your own key here)"curl -X POST https://api.openai.com/v1/realtime/client_secrets \-H "Authorization: Bearer $OPENAI_API_KEY" \-H "Content-Type: application/json" \-d '{"session": {"type": "realtime","model": "gpt-realtime"}}'レスポンスには、
ek_プレフィックスで始まる最上位のvalueフィールドと、有効なsessionオブジェクトが含まれます。WebRTC 接続を確立するときは、valueをクライアントシークレットとして使用してください。このトークンは短命なので、必要に応じてバックエンドで新しいものを発行する必要があります。ブラウザセッションでauthorizationやカスタムheadersを伴うホスト型 MCP ツールが必要な場合は、それらの認証情報をブラウザコードに公開するのではなく、POST /v1/realtime/client_secretsに送るサーバー側のsessionペイロードにそのホスト型 MCP 設定を含めてください。
音声エージェントの作成と接続
Section titled “音声エージェントの作成と接続”-
最初の Agent の作成
新しい
RealtimeAgentの作成は、通常のAgentの作成と非常によく似ています。import { RealtimeAgent } from '@openai/agents/realtime';const agent = new RealtimeAgent({name: 'Assistant',instructions: 'You are a helpful assistant.',}); -
セッションの作成
通常のエージェントとは異なり、音声エージェントは
RealtimeSession内で継続的に実行され、会話とモデルへの接続を時間を通して処理します。このセッションは、音声処理、中断、および後で設定するより広い会話ライフサイクルも管理します。import { RealtimeSession } from '@openai/agents/realtime';const session = new RealtimeSession(agent, {model: 'gpt-realtime',});RealtimeSessionコンストラクターは、最初の引数にagentを取ります。このエージェントが、ユーザーが最初にやり取りする相手になります。 -
セッションへの接続
セッションに接続するには、先ほど生成したクライアント一時トークンを渡す必要があります。
await session.connect({ apiKey: 'ek_...(put your own key here)' });ブラウザでは、これは WebRTC を使って Realtime API に接続し、マイク入力と音声再生を自動で設定します。このデフォルトの WebRTC パスでは、SDK はデータチャネルが開くとすぐに初期セッション設定を送信し、
connect()が resolve する前に対応するsession.updated確認応答を待とうとします(確認応答が届かない場合はタイムアウトでフォールバックします)。Node.js などのサーバーランタイムでRealtimeSessionを実行すると、SDK は自動的に WebSocket にフォールバックします。WebSocket パスでは、ソケットが開いて初期設定の送信が完了した後にconnect()が resolve するため、session.updatedは少し遅れて到着する場合があります。トランスポートの選択については、リアルタイムトランスポート ガイドで詳しく確認できます。
アプリの実行とテスト
Section titled “アプリの実行とテスト”-
全体の組み立て
import { RealtimeAgent, RealtimeSession } from '@openai/agents/realtime';export async function setupCounter(element: HTMLButtonElement) {// ....// for quickly start, you can append the following code to the auto-generated TS codeconst agent = new RealtimeAgent({name: 'Assistant',instructions: 'You are a helpful assistant.',});const session = new RealtimeSession(agent);// Automatically connects your microphone and audio output in the browser via WebRTC.try {await session.connect({// To get this ephemeral key string, you can run the following command or implement the equivalent on the server side:// curl -s -X POST https://api.openai.com/v1/realtime/client_secrets -H "Authorization: Bearer $OPENAI_API_KEY" -H "Content-Type: application/json" -d '{"session": {"type": "realtime", "model": "gpt-realtime"}}' | jq .valueapiKey: 'ek_...(put your own key here)',});console.log('You are connected!');} catch (e) {console.error(e);}} -
アプリの起動と会話開始
Web サーバーを起動し、新しい Realtime Agent コードを含むページを開いてください。マイクの許可リクエストが表示されるはずです。アクセスを許可すると、エージェントとの会話を開始できます。
Terminal window npm run dev
次のステップ
Section titled “次のステップ”ここからは、独自の音声エージェントの設計と構築を始められます。