Thanks to visit codestin.com
Credit goes to openai.github.io

コンテンツにスキップ

クイックスタート

  1. プロジェクトの作成

    このクイックスタートでは、ブラウザで使える音声エージェントを作成します。新しいプロジェクトを試す場合は、Next.jsVite を使えます。

    Terminal window
    npm create vite@latest my-project -- --template vanilla-ts
  2. Agents SDK のインストール

    Terminal window
    npm install @openai/agents zod@3

    代わりに、スタンドアロンのブラウザ用パッケージである @openai/agents-realtime をインストールすることもできます。

  3. クライアントの一時トークンを生成

    このアプリケーションは ユーザー のブラウザで実行されるため、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 接続を確立できます。なお、このキーは短時間のみ有効で、再生成が必要です。

  4. はじめてのエージェントを作成

    新しい RealtimeAgent の作成は、通常の Agent の作成と非常によく似ています。

    import { RealtimeAgent } from '@openai/agents/realtime';
    const agent = new RealtimeAgent({
    name: 'Assistant',
    instructions: 'You are a helpful assistant.',
    });
  5. セッションの作成

    通常のエージェントと異なり、Voice Agent は会話とモデルへの継続的な接続を処理する RealtimeSession 内で常時実行およびリスンします。このセッションは音声処理、割り込み、その他多くのライフサイクル機能も処理します。これらについては後ほど説明します。

    import { RealtimeSession } from '@openai/agents/realtime';
    const session = new RealtimeSession(agent, {
    model: 'gpt-realtime',
    });

    RealtimeSession コンストラクタは最初の引数として agent を受け取ります。このエージェントが ユーザー が最初に対話できるエージェントになります。

  6. セッションに接続

    セッションに接続するには、先ほど生成したクライアントの一時トークンを渡します。

    await session.connect({ apiKey: 'ek_...(put your own key here)' });

    これにより、ブラウザで WebRTC を使って Realtime API に接続し、音声の入力と出力のためにマイクとスピーカーが自動的に設定されます。RealtimeSession をバックエンド サーバー(たとえば Node.js)で実行している場合、SDK は自動的に接続として WebSocket を使用します。さまざまなトランスポートレイヤーの詳細は、リアルタイムトランスポート ガイドをご覧ください。

  7. すべてをまとめる

    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 code
    const 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 .value
    apiKey: 'ek_...(put your own key here)',
    });
    console.log('You are connected!');
    } catch (e) {
    console.error(e);
    }
    }
  8. エンジンを始動して話し始める

    Web サーバーを起動し、新しい Realtime Agent のコードを含むページに移動します。マイクへのアクセス許可のリクエストが表示されます。許可すると、エージェントと話し始めることができます。

    Terminal window
    npm run dev

ここからは自分の音声エージェントの設計と構築を始められます。音声エージェントには通常のエージェントと同様の機能が多く含まれますが、独自の機能もあります。