クイックスタート
-
プロジェクトの作成
このクイックスタートでは、ブラウザで使える音声エージェントを作成します。新しいプロジェクトを試したい場合は、
Next.jsやViteを試せます。Terminal window npm create vite@latest my-project -- --template vanilla-ts -
Agents SDK のインストール
Terminal window npm install @openai/agents zod@3代わりに、スタンドアロンのブラウザ用パッケージである
@openai/agents-realtimeをインストールすることもできます。 -
クライアントのエフェメラルトークンを生成
このアプリケーションはユーザーのブラウザで実行されるため、Realtime API を介してモデルに安全に接続する必要があります。そのために、バックエンドサーバーで生成する ephemeral client key を使用できます。テスト目的では、
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"}}'レスポンスにはトップレベルに “value” 文字列が含まれ、“ek_” プレフィックスで始まります。このエフェメラルキーを使用して後で WebRTC 接続を確立できます。このキーは短時間しか有効ではないため、再生成が必要になります。
-
はじめてのエージェントの作成
新しい
RealtimeAgentの作成は、通常のエージェントの作成と非常によく似ています。import { RealtimeAgent } from '@openai/agents/realtime';const agent = new RealtimeAgent({name: 'Assistant',instructions: 'You are a helpful assistant.',}); -
セッションの作成
通常のエージェントと異なり、Voice Agent は会話とモデルへの接続を継続的に処理する
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 に接続し、マイクとスピーカーが自動的に音声の入出力用に設定されます。
RealtimeSessionをバックエンドサーバー(たとえば Node.js)で実行している場合、SDK は自動的に WebSocket を接続として使用します。さまざまなトランスポートレイヤーについては、リアルタイムトランスポート ガイドで詳しく確認できます。 -
すべてを組み合わせる
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 “次のステップ”ここからは、独自の音声エージェントの設計と構築を開始できます。音声エージェントには通常のエージェントと同様の機能が多数ありますが、独自の機能もいくつかあります。
-
音声エージェントに以下を付与する方法を学ぶ
-
さまざまなトランスポートレイヤーについてさらに学ぶ