For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
メインナビゲーション
Theme

Realtime モデルのプロンプト設計

Realtime 音声モデル向けのプロンプトを設計し、テストする方法を紹介します。

開発に使用する Realtime モデルを選択してください。GPT-Live を使用する場合は、GPT-Live のプロンプト設計を参照してください。

gpt-realtime-2 は、低レイテンシの音声変換アプリケーション向けに開発した最先端の推論対応音声モデルです。話す前に推論でき、従来のリアルタイムモデルよりも確実に指示に従います。コンテキストウィンドウも広くなり、ツール呼び出しの精度も向上しています。

これらの改善を活かすには、期待する動作を具体的に考えてプロンプトを設計します。アシスタントの役割、判断が必要な場面、ツールの呼び出し方、守るべき制約を明示し、何を、いつ実行し、何を避けるべきかを定めてください。

最初から指示を詰め込みすぎず、最小限のプロンプトから始めてください。評価を実施し、テストで期待どおりに動作しなかった箇所にだけ指示を追加します。

モデルの選び方

モデル適した用途プロンプト設計のポイント
gpt-realtime-2

リアルタイムの推論、ツールの使用、指示への追従に最高水準の性能が必要な場合

推論強度、処理前のひと言、ツールの使用方針、識別情報の正確な聞き取り、長時間セッションでの状態管理を調整します。

gpt-realtime-1.5推論を行わない、高速で信頼性の高い音声変換モデルが必要な場合

リアルタイムモデル向けの基本的なプロンプト構成に従い、レイテンシの影響を受けやすい動作をテストします。

Realtime 2.0 プロンプト設計ガイド

音声エージェントに高度な推論、適切なツールの選択、識別情報の正確な処理、長時間セッションでの状態管理が必要な場合は、gpt-realtime-2 を使用してください。まず reasoning.effort: “low” で、処理前にどのようなひと言が入るかをデフォルト設定でテストします。書き込み操作の前に確認が必要な条件も明確にしてください。

Realtime 2 の変更点

Realtime 2 には、推論を行う音声エージェントとして指示を与えてください。単純な音声ボット向けの指示とは、設計のポイントが異なります。

変更点 プロンプト設計への影響
推論 複雑なタスクでは、発話やツール呼び出しの前にモデルが内部で推論できるようにします。処理前にひと言添えることで、不自然な沈黙や不要なつなぎ言葉を避けられます。
指示の精度がより重要に 「役に立つように」といった大まかな指針を、実行条件、具体的な操作、例外を示すルールに置き換えます。いつ何を行い、どのような場合に控えるかを明示します。
指示の矛盾による影響が拡大 always、never、only、must を使ったルールが重なる場合、本当に必要なものだけを残します。ルールが競合する場合は優先順位を定めます。
ツール使用の制御が容易に すぐに実行する場合、不足情報を尋ねる場合、正確さが求められる情報を確認する場合、失敗後に再試行する場合、エスカレーションする場合を指定します。
処理前のひと言を個別に制御可能 推論やツールを使った処理に時間がかかる場合、モデルは先に短い状況説明を挟むことがあります。このひと言を入れる条件、長さ、省略する条件を指定します。
コンテキストウィンドウの拡大 gpt-realtime-2 では、リアルタイムのコンテキストウィンドウが 32k トークンから 128k トークンに拡大し、長時間のセッションや大きなシステムプロンプトに対応しやすくなりました。

処理前のひと言は「今、その注文を確認します」のような短い音声案内です。内部の思考の連鎖とは異なります。非公開の推論過程を開示するようモデルに求めないでください。

推奨するプロンプト構成

モデルが関連する指示をすぐに見つけられるよう、プロンプトを短いセクションに分け、それぞれに見出しを付けます。

# 役割と目標

# 人物像と口調

# 言語

# 推論

# メッセージチャネル

# 処理前のひと言

# 応答の詳しさ

# ツール

# 不明瞭な音声

# 識別情報の聞き取り

# 長いコンテキストを扱うときの動作

# エスカレーション

すべての用途で全セクションが必要なわけではありません。プロダクトに合ったセクションを追加してください。

推論強度の設定

gpt-realtime-2 では、応答にかかる時間と推論の深さを調整できます。ワークフローに必要な判断ができる範囲で、最も低い推論強度を使用してください。

本番環境の音声エージェントの多くは low から始められます。タスクの複雑さ、許容できるレイテンシ、失敗した場合の影響に応じて強度を上げ下げします。

推論強度 適した場面 例
minimal タスクが単純で、レイテンシの低さを最優先する場合 スマートホーム機器の操作、タイマーの設定、予定の簡単な確認
low 応答の速さと基本的な推論の両方が必要な場合 カスタマーサポート、注文の照会、ポリシーに関する簡単な質問
medium 複数のステップにわたるタスクで推論が必要な場合 テクニカルサポート、診断、複雑な問い合わせの振り分け
high 推論を深めることで成功率が大きく上がる場合 高い精度が必要なワークフロー、エスカレーションの判断、制約のあるタスク
xhigh レイテンシとコストが増えても最大限の推論を行う価値がある場合 複雑な計画立案、重大な事案のトリアージ、失敗の影響が大きい複数ツールの連携

API の設定に加えて、いつ、どの程度推論するかをプロンプトで指示します。

## 推論

- すぐに答えられる質問、簡単な照会、短い確認には、推論せず速やかに応答してください。
- 複数のステップがあるタスク、ツールの選択、トラブルシューティング、エスカレーションでは、行動する前に推論してください。
- ユーザーの音声が不明瞭な場合は、長く推論せずに聞き返してください。

処理前のひと言の使い分け

音声エージェントが推論や検索、ツール呼び出しを行う前に、状況を短く伝えると、ユーザーは応答を待っている間も処理が進んでいることを把握できます。適切なひと言は安心につながりますが、不要な場面で挟むと単なるつなぎ言葉になり、待ち時間が長く感じられます。

gpt-realtime-2 は、デフォルトで処理前のひと言を生成します。まずデフォルトの動作をテストし、プロダクトで想定する体験に合わない場合は、指示を明示して調整してください。

処理前のひと言を生成して再生するまでのタイムライン

## 処理前のひと言

作業を進めていることをユーザーに知らせる意味があるときだけ、短いひと言を添えてください。

### ひと言添える場合

次の場合は、処理前にひと言添えてください。

- ユーザーが待ち時間を感じる可能性のあるツールをこれから呼び出す場合
- 複数のステップがある依頼について推論する必要がある場合
- レコード、空き状況、アカウントの状態、ポリシーの詳細を確認する場合
- エスカレーションや引き継ぎを準備する場合
- 黙っているとアシスタントが応答していないように感じられる場合

ひと言添える必要があるときは、本格的な推論やツールの使用に入る直前に発話してください。

### ひと言添えない場合

次の場合は、処理前のひと言を省いてください。

- 質問にその場で直接答えられる場合
- ユーザーが確認、訂正、辞退の意思を伝えているだけの場合
- 音声が不明瞭で聞き返す必要がある場合
- 直近の音声が無音、背景の雑音、保留音、テレビの音声、周囲の人同士の会話の場合
- 軽いツール呼び出しで、途中経過を伝える利点がない場合

### ひと言の伝え方

処理前にひと言添える場合は、次の点を守ってください。

- 自然で落ち着いた言葉で簡潔に伝えてください。
- ターンごとに言い回しを変えてください。
- 内部の推論過程には触れず、これから何をするかを伝えてください。
- 場をつなぐだけの言葉は避けてください。

次のような表現は避けてください。

- 「少し考えますね……」
- 「うーん……」
- 「処理しますので、少々お待ちください……」
- 「これからツールにアクセスします……」

### ひと言の長さ

短い 1 文で伝えてください。

影響の大きい操作の前に説明が必要な場合を除き、長くても短い 2 文に収めてください。

### 推奨する表現

- 「今、その注文を確認します。」
- 「ご予約の詳細をお調べします。」
- 「変更する前に、その点を確認します。」
- 「規定を確認して、次のお手続きをご案内します。」
- 「該当するアカウントかどうか、情報を呼び出して確認します。」

### 避けたい表現

- 「それについて少し考えさせてください。」
- 「ご依頼を処理しますので、しばらくお待ちください。」
- 「これからツールを使います。」
- 「興味深い質問ですね。じっくり推論してみます。」

応答の長さの調整

gpt-realtime-2 に応答の長さを指示するには、タスクの種類ごとに必要な詳しさを指定すると効果的です。単に「簡潔に」と伝えるのではなく、場面に応じて具体的な基準を示します。質問への直接の回答、ツールの結果、トラブルシューティング、比較、エスカレーションでは、適切な長さがそれぞれ異なります。

## 応答の詳しさ

- 質問への直接の回答:短い 1~2 文で答えてください。
- 不明点の確認:質問は一度に 1 つにしてください。
- ツールの結果:最初に結果を要約し、次に取るとよい行動だけを案内してください。
- 製品や選択肢の比較:主な違い、何を優先するかによる得失、それぞれがどのような人に合うかを伝えてください。
- トラブルシューティング:ユーザーが手順全体を求めない限り、1 ステップずつ案内してください。
- エスカレーション:引き継ぎが必要な理由と、この後の流れを簡潔に伝えてください。

例:

ユーザー:どのプランを選べばいいですか?

アシスタント:費用を抑えたい場合は Basic がおすすめです。チームの権限設定や請求の一本化が必要なら Pro、コンプライアンス審査や管理者向けの制御機能を重視する場合は Enterprise をお選びください。

ツール使用の設計

gpt-realtime-2 ではツール呼び出しの性能が向上していますが、その動作は依然としてプロンプトとツール仕様の設計に左右されます。実行、質問、確認、失敗からの復旧のタイミングが明確でないと、アシスタントが早すぎる段階でツールを呼び出したり、不要な質問をしたり、失敗した呼び出しを繰り返したりすることがあります。

ツールを呼び出すタイミング

読み取り専用でリスクの低い操作では、積極的にツールを呼び出す方針が適しています。データを変更する場合、外部に影響が及ぶ場合、正確な識別子が必要な場合は、慎重に呼び出す方針が適しています。

ツールの種類 デフォルトの動作
読み取り専用でリスクの低い照会 意図と必須項目が明確になったら呼び出します。
正確な識別子が必要な読み取り専用の照会 照会の前に識別子を確認します。
ユーザーの目に触れるメッセージ 送信前に下書きか要約を提示します。
アカウントの変更 呼び出す前に確認します。
購入、キャンセル、支払い 呼び出す前に金額、対象、実行した場合の結果を確認します。
取り消せない操作や影響の大きい操作 明示的に確認し、必要に応じてエスカレーションを提案します。

読み取りと書き込みが混在する場合は、以下を基本方針とし、用途に合わせて調整してください。

## ツール

現在のツール一覧で明示的に提供されているツールだけを使ってください。ツールを作り上げたり、存在を仮定したり、動作を模擬したり、名前を変えたりしないでください。

読み取り専用のツール:

- ユーザーの意図が明確で、必須項目がすべてそろったら呼び出してください。
- 照会に正確な識別子が必要な場合や、誤ったレコードを使う無視できないリスクがある場合を除き、確認を求めないでください。
- 必須項目に不足、曖昧さ、矛盾がある場合にだけ、不明点を尋ねてください。

書き込みツールまたは外部に影響する操作:

- ツールを呼び出す前に、実行しようとしている操作を要約してください。
- 何を変更、送信、キャンセル、注文するのか、いくら請求されるのかなど、主な結果を伝えてください。
- ユーザーに確認を求めてください。
- ユーザーが明確に同意するまではツールを呼び出さないでください。

正確さが求められる識別子:

- 注文 ID、追跡番号、アカウント番号、確認コード、電話番号、メールアドレスは、正確な値が必要な項目として扱ってください。
- 項目の種類が明確な場合にだけ正規化してください。
- 個別のアカウントの照会、検証、書き込み操作の前に最終的な値を確認してください。

ツールを呼び出した後:

- 呼び出しに成功した後にだけ、操作が完了したと伝えてください。
- 失敗した場合は、生のエラーを表示せず、何が失敗したかを簡潔に説明し、次にできることを具体的に伝えてください。

リスクの高い操作の例:

ユーザー:残額をカードで決済してください。

悪い例:

アシスタント:カードで決済しました。

良い例:

アシスタント:残額の 248.16 ドルを、ご登録のカードでお支払いということですね。決済してよろしいですか?

ツール呼び出しに失敗した場合の対応

ツール呼び出しの失敗も会話の一部です。何が起きたのかを説明し、次にできることをユーザーに具体的に伝えてください。

ツールの種類、失敗の内容、ユーザーへの影響に応じて復旧方法を決めます。ユーザーに知らせずに再試行すればよい場合もあれば、不明点の説明、識別子の訂正、新しい操作の確認、別の方法の選択をユーザーに求める必要がある場合もあります。

## ツールの失敗

ツール呼び出しが失敗した場合:

1. 何が失敗したかを、ユーザーにわかる言葉で簡潔に説明してください。
2. ユーザーを責めたり、ツールのエラーをそのまま表示したりしないでください。
3. 識別子の誤りが原因として考えられる場合は、使った値を読み上げ、誤りがあれば訂正してもらってください。
4. 一時的な失敗の可能性があれば、1 回だけ再試行することを提案してください。
5. 同じ失敗が繰り返される場合は、別の方法かエスカレーションを提案してください。

失敗した後に、同じ引数で同じツールを繰り返し呼び出さないでください。

別の識別子を尋ねる前に、まず聞き取った値が正しかったかを確認してください。

悪い例:

アシスタント:エラーが発生しました。

良い例:

アシスタント:オー、アール、ディー、ハイフン、3、1、2、5、ビー、2、3 では該当する注文が見つかりませんでした。どこか聞き間違えていますか?

プロンプトと利用可能なツールの整合性

リアルタイムモデルはユーザーの依頼に積極的に応えようとします。プロンプトに実際には利用できないツールが記載されていたり、ツール一覧がプロンプトと一致していなかったりすると、モデルが存在しないツール名を作り出したり、操作が完了したかのように応答したりすることがあります。

たとえば、プロンプトには lookup_order と記載されているのに、提供したツールの名前が search_orders である場合、モデルは誤った名前で呼び出したり、操作を実行したように振る舞ったりすることがあります。

## 利用可能なツール

現在のツール一覧で明示的に提供されているツールだけを使ってください。

ツールを作り上げたり、存在を仮定したり、動作を模擬したりしないでください。指示に記載されていても、ツール一覧にないツールは利用できないものとして扱ってください。

利用できないツールが必要な操作をユーザーが依頼した場合:

1. 操作を完了したように振る舞わないでください。
2. そのツールを利用できないことを簡潔に伝えてください。
3. 実際に対応できる範囲で、依頼に最も近い次の手順を案内してください。

該当するツールの呼び出しに成功した後にだけ、操作が完了したと伝えてください。

付録のプロンプト監査用メタプロンプトを使って、本番用プロンプトに矛盾や不足しているツール、条件が少し変わると機能しなくなる指示がないか確認してください。

無音や背景音への対応

音声エージェントは、デフォルトでは応答しようとする傾向があります。本番環境では、無音、周囲の雑音、保留音、テレビの音声、周囲の人同士の会話など、声で応答する必要のない音声がよく入力されます。

アシスタントが発話せずに聞き続けるべき場面では、何もせず待機するツールを用意します。こうすると、モデルは「聞いていますよ」「聞き取れませんでした」などと発話せずに、適切な操作を選択できます。

ツールの設計例:

{
  "name": "wait_for_user",
  "description": "直近の音声が無音、背景の雑音、保留音、テレビの音声、周囲の人同士の会話、アシスタントに向けられていない発話などで、音声で応答する必要がない場合に呼び出してください。このツールを使うと、発話せずにターンを終えられます。",
  "parameters": {
    "type": "object",
    "properties": {},
    "required": []
  }
}

プロンプトには、対応する指示を追加します。

## 無音や背景の雑音への対応

直近の音声が無音、背景の雑音、保留音、テレビの音声、周囲の人同士の会話、または自分に向けられていない発話であれば、`wait_for_user` を呼び出してください。

このツールを呼び出した後は、会話としての応答を返さないでください。

「聞いていますよ」「聞き取れませんでした」「ごゆっくりどうぞ」「準備ができたらお知らせください」などと言わないでください。

ユーザーが明らかにあなたに話しかけるか、支援を求めたときにだけ、通常の応答を再開してください。

この方法は、アシスタントに向けられていない音声に使います。ユーザーが明らかにアシスタントに話しかけているものの、依頼の内容を聞き取れない場合は、聞き返してください。

メッセージチャネルの使い分け

gpt-realtime-2 は、commentary チャネルでユーザーに見える途中経過のメッセージを、final チャネルでユーザー向けの最終応答を生成できます。出力先によって動作を変えたい場合は、チャネルごとに指示を記述してください。

チャネル ユーザーに表示されるか 用途
commentary はい 処理前のひと言とツール呼び出し
final はい ユーザー向けの最終メッセージ

たとえば、ツール呼び出しは commentary チャネルで行われます。ツール使用の前後や実行中にアシスタントに発話させたい場合は、commentary チャネルでの呼び出しを基準にタイミングを指定します。

commentary チャネルでツールを呼び出す前に、これから何をするかをユーザーに短く伝えてください。

gpt-realtime-2 は、1 回のターンで複数のフェーズに分けて応答を出力できます。API の出力では、response.done イベントに含まれる phase の値が、その内容が途中経過か最終回答かを示します。

アプリケーションでは、このフィールドを使ってフェーズごとに処理を変えられます。たとえば、commentary は短い途中経過として再生または表示し、final_answer はアシスタントの回答が完成した段階で使用できます。

response.output[0].phase: "commentary"
response.output[1].phase: "final_answer"

不明瞭な音声への対応

モデルが行動に移すのは、音声の内容を確実に理解できた場合だけにします。音声が不明瞭な場合は、推測せず、短い質問で聞き返すようにします。

聞き取れなかった単語の推測、ツール呼び出し、識別情報の取得、処理前のひと言の生成は行わないようにしてください。ユーザーが何と言ったのかを再構成するために内部推論に時間をかけることも避けます。

## 不明瞭な音声

- 明瞭な音声またはテキストにだけ応答してください。
- ユーザーの音声が不明瞭なら、「Sorry, could you repeat that clearly?」などの短い英語の表現で聞き返してください。
- 音声が不明瞭なとき、同じ言い回しで 2 度聞き返さないでください。
- 内容が曖昧、雑音が多い、無音、聞き取り不能、一部が途切れている、またはユーザーの言葉を正確に聞き取れたか確信が持てない場合は、音声が不明瞭だと判断してください。
- 不明瞭な音声からユーザーの意図を推測しないでください。
- 音声が不明瞭な場合は推論しないでください。
- 音声が不明瞭な場合は、commentary チャネルで処理前のひと言を発したりツールを呼び出したりしないでください。

例:

ユーザーの音声:「注文を確認して。番号は 3、1……」[音声が途中で途切れる]

悪い例:

アシスタント:注文番号 31 を確認します。

良い例:

アシスタント:注文番号の一部しか聞き取れませんでした。もう一度、1 桁ずつお願いします。

識別情報の正確な聞き取り

多くのリアルタイムのワークフローでは、注文 ID、追跡番号、メールアドレス、確認コード、アカウント番号、請求案件番号、チケット ID、サポート受付番号、電話番号などの値を正確に取得する必要があります。

音声で正確に聞き取るのは簡単ではありません。ユーザーが早口で話したり、数字をさまざまな位置で区切ったり、一部だけを 1 文字ずつ読み上げたりするためです。つなぎ言葉を挟む、話の途中で訂正する、音の似た文字を発音するといったこともあります。1 桁の誤りでも、照会に失敗したり、別のアカウントを取得したりする可能性があります。

識別情報は慎重に聞き取ってください。値は 1 つずつ取得し、明確な部分だけを正規化します。正確さが求められる値はツールを呼び出す前に確認し、どの段階で訂正があっても対応できるようにします。

識別情報を 1 つずつ取得する手順

複数の値が必要なワークフローでは、1 つずつ聞き取ります。特に音声での会話では、別々の項目の値が混ざるのを防げます。

## 識別情報を聞き取る順序

必要な値を 1 つずつ聞き取ってください。

- 次に必要で、まだわかっていない値だけを尋ねてください。
- 1 回のターンで複数の値を尋ねないでください。
- 尋ねる前に、その会話やセッションですでにユーザーが値を伝えていないか確認してください。
- 該当しそうな値がすでにあれば、使う前にユーザーに確認してください。

例:

「先ほどの追跡番号 ABC-54321 があります。この番号でよろしいですか? それとも別の追跡番号ですか?」

今扱っている値を聞き取り、検証し、ユーザーに確認するまではツールを呼び出さないでください。

1 文字ずつ読み上げられた値の処理

ユーザーが ID、コード、名前、メールアドレスを 1 文字ずつ読み上げる場合には、以下の指示を使用します。読み上げられた音声は入力であり、そのまま最終的な値になるわけではありません。

## 1 文字ずつ読み上げられた値

ユーザーが ID、コード、メールアドレスを 1 文字ずつ読み上げたら、文字をつなげて 1 つの値として扱ってください。ハイフン、ドット、アンダースコア、スラッシュ、プラスなど、明示的に読み上げた区切り記号は残してください。それ以外の空白や区切り記号は加えないでください。

例:

- 「エー、ビー、シー、いち、に、さん」 -> 「ABC123」
- 「ビー、シー、ハイフン、きゅう、はち、なな」 -> 「BC-987」
- 「ジェイ、オー、エイチ、エヌ、アットマーク、example、ドット、com」 -> 「john@example.com」

ユーザーが空白を含むと明言した場合を除き、読み上げられた文字の間に空白を入れないでください。

読み上げられた数字の正規化

数字の識別子を伝えるとき、ユーザーは 1 桁ずつ読むことも、数桁ずつまとめることも、数を普段どおりに読むこともあります。連続した数字を入力する項目では、明確に聞き取れた数を数字列に変換してください。

## 読み上げられた数字の処理

数字の識別子を聞き取るときは、読み上げられた数を数字列に変換してください。

例:

- 「いち、に、さん、よん」 -> 「1234」
- 「いち、にじゅうさん」 -> 「123」
- 「いち、じゅうきゅう」 -> 「119」
- 「きゅうじゅうきゅう、じゅういち」 -> 「9911」
- 「きゅうせんきゅうひゃくじゅういち」 -> 「9911」

複数の解釈が成り立つ場合は、値を使う前にユーザーに確認してください。

例:

「119 とも 1-19 とも聞こえました。もう一度、1 桁ずつお願いできますか?」

ツール呼び出し前の識別子の確認

注文 ID、追跡番号、アカウント番号、請求案件番号、確認コードなどの識別子には正確さが求められます。ツール呼び出しに使う前に確認してください。

数字の識別子は 1 桁ずつ復唱します。全体をひとまとまりの数として読むと、誤りに気づきにくくなります。

例:

アシスタント:確認します。8、3、5、2、1 で合っていますか?

ユーザーが 1 文字または 1 桁だけ訂正した場合でも、ツールを呼び出す前に訂正後の値をすべて復唱します。

例:

アシスタント:わかりました。8、3、5、7、1 で合っていますか?

## 正確さが求められる識別子の確認

正確さが求められる識別子を使ってツールを呼び出す前に、次の手順を守ってください。

- 正規化した最終的な値をユーザーに確認してください。
- 数字の識別子は 1 桁ずつ復唱してください。
- 推測した値、一部しかわからない値、曖昧な値は使わないでください。
- ユーザーが値を訂正したら、ツールを呼び出す前に訂正後の値をすべて復唱してください。

メールアドレスの 1 文字ずつの確認

メールアドレスは正確に聞き取る必要があります。ドット、ハイフン、アンダースコア、同じ文字の繰り返し、発音が似た名前などを聞き間違えると、アカウントが見つからなかったり、誤った宛先にメッセージを送ったりする可能性があります。

ユーザーにメールアドレスを 1 文字ずつ読み上げてもらいます。

アシスタント:正確に確認したいので、メールアドレスを 1 文字ずつ読み上げていただけますか?

復唱するときは、最終的なアドレスが正しいか確認します。

アシスタント:確認します。シー、エイチ、イー、エヌ、アットマーク、example、ドット、com で合っていますか?

## メールアドレスの確認

メールアドレスは正確に聞き取ってください。

ユーザーがメールアドレスを続けて読み上げた場合は、もう一度、1 文字ずつ読み上げるようにお願いしてください。

例:

「正確に確認したいので、メールアドレスを 1 文字ずつ読み上げていただけますか?」

復唱するときは、最終的なメールアドレスが正しいか確認してください。

例:

「確認します。シー、エイチ、イー、エヌ、アットマーク、example、ドット、com で合っていますか?」

識別情報を取得するワークフロー

指示の字面どおりの解釈による落とし穴

gpt-realtime-2 は、従来のリアルタイムモデルよりも指示を字面どおりに実行します。以前のモデルでうまく機能したプロンプトでも、調整が必要になることがあります。

指示には正確な表現を使ってください。モデルは、開発者が意図した動作全体よりも、指示の文言そのものを優先することがあります。範囲が広すぎるルールや厳格すぎるルールは、特に複数のルールが重なると、想定外の形でアシスタントの動作を左右します。

must、only、never、always など、強い制約を表す語は慎重に使ってください。単なる強調ではなく、その動作が本当に必須の場合に使います。強い制約を多用すると、アシスタントの対応が硬直化したり、慎重になりすぎたり、妥当な例外に対応できなくなったりします。

適用範囲を明確にした例:

ユーザーデータを変更する書き込み操作では、ツールを呼び出す前にユーザーに確認してください。

避けたい、適用範囲が広すぎる例:

何をする場合でも、必ず事前にユーザーに確認してください。

適用範囲が広すぎると、注文状況や空き状況の確認、アカウント情報の読み取りなど、リスクのない読み取り専用の照会でも不要な確認が発生することがあります。

指示を字面どおりに解釈する例

プロンプト設計全般のポイント:

  • 意図をくみ取らせるより、指示を明示してください。
  • 厳密な動作が本当に必要な場合に限って、強い制約を表す語を使います。
  • 矛盾する指示はできるだけ減らします。
  • 優先順位に関する指示を重ねたり、競合させたりする場合は注意してください。
  • プロンプトは段階的にテストしてください。わずかな表現の違いが動作を大きく変えることがあります。
  • 従来のリアルタイムモデルから移行する際には、最良の結果を得るために構成の見直しが必要なプロンプトもあります。

言語とアクセントの個別制御

言語とアクセントは別々に制御してください。

ユーザーのアクセントだけでは、希望する応答言語はわかりません。ヒンディー語、スペイン語、フランス語、標準中国語のアクセントで英語を話すユーザーでも、英語での応答を期待していることがあります。

次のような大まかな言語の指示は避けてください。

ユーザーの話し方に合わせてください。
ユーザーの言語で自然に応答してください。
適宜、言語を切り替えてください。
地元の人らしく話してください。
ユーザーのアクセントに合わせてください。

これらの指示は適用範囲が広すぎます。モデルがアクセント、つなぎ言葉、相づち、単発の外国語の単語を、言語を切り替える理由として解釈する可能性があります。

英語で応答するための方針

## 言語

デフォルトの応答言語は英語です。

- アクセントだけで言語を推定しないでください。
- 言語を判定する際は、短いつなぎの音、相づち、単発の外国語の単語を無視してください。
- ユーザーが明示的に求めた場合か、別の言語でまとまった内容を話した場合にだけ、言語を切り替えてください。
- 言語を特定する自信がない場合は、推測せず、短い質問で確認してください。
- 処理前のひと言、話題をつなぐ言葉、ツールに関するメッセージ、最終回答には同じ言語を使ってください。
- アクセントを合わせる際も、応答言語は変えないでください。

多言語で応答するための方針

## 言語

ユーザーが明らかに別の言語を使用している場合を除き、英語で応答してください。

言語を切り替えるのは次の場合だけです。

- ユーザーが別の言語を使うよう明示的に求めた場合
- ユーザーが別の言語でまとまった内容を話した場合。これは、依頼、質問、訂正をひととおりその言語で伝えたことを指します。あいさつ、名前、住所、つなぎ言葉、借用表現だけの場合は該当しません。

次の特徴を理由に言語を切り替えないでください。

- アクセント
- 発音
- つなぎ言葉
- 短い相づち
- 名前
- 住所
- 単発の外国語の単語

判断に迷ったら、次のように尋ねてください。

「このまま英語で続けますか? それとも [LANGUAGE] がよろしいですか?」

アクセントの制御

gpt-realtime-2 はアクセントの指示にもより忠実に従います。ただし、指示が曖昧だと、話すうちにアクセントが変わったり、意図せず言語が切り替わったりすることがあります。

アクセントを制御するプロンプトでは、次の点を明示すると効果的です。

  • 目標とするアクセント
  • 一貫して維持する特徴
  • 意図する話す速さ、強勢、抑揚
  • アクセントの調整を言語の選択に反映するかどうか

次のような指示ではなく、

オーストラリア人らしく話してください。

より具体的に指定します。

## アクセント

軽いオーストラリア訛りの英語で話してください。

- 最初の言葉から最後まで同じアクセントを保ってください。
- オーストラリア英語らしい自然な母音で発音しつつ、聞き取りやすさを保ってください。
- アクセントを誇張しないでください。
- ユーザーのアクセントを理由に応答言語を変えないでください。

カスタム音声

標準の音声ではブランド、アクセント、キャラクターの要件を安定して満たせない場合は、カスタム音声を使用してください。

プロンプトでアクセント、話す速さ、話し方を調整できますが、音声そのものの設計を完全に代替することはできません。ブランド固有の声を一貫して保つ必要がある場合や、特定のアクセントの忠実な再現が求められる場合は、カスタム音声を検討してください。

カスタム音声は承認を受けたお客様のみ利用できます。利用を希望する場合は、アカウント担当チームにお問い合わせください。

長時間セッションでの状態管理

gpt-realtime-2 では、リアルタイムのコンテキストウィンドウが 32k トークンから 128k トークンに拡大し、長時間のセッションに対応しやすくなりました。発話の密度が高い双方向の会話では、128k トークンはおおむね 1~2 時間分の未加工の音声コンテキストに相当します。実際の長さは、ツールの使用、内部推論、追加したレコードなど、セッションの内容によって異なります。

長いコンテキストを扱う場合、gpt-realtime-2 は、どの情報が現時点で有効か、どれが背景情報か、情報源が矛盾したときに何を無視すべきかを区別できると、最もよく機能します。会話の文字起こしや大量のコンテキストをそのまま渡し、情報源の優先順位をモデルに推測させず、情報を構造化してください。

取得したレコード、過去の会話履歴、ポリシー、要約、アカウントに関するメモ、背景資料など、大量のコンテキストを渡してセッションを開始する場合は、次のような構成を使用してください。

従来のリアルタイムモデルからの移行

従来のリアルタイムモデルから移行する場合は、プロンプトの文章を移植するだけでなく、その指示がモデルの動作をどう変えるかを考慮してください。

  1. Codex または高性能なリーズニングモデルを使い、最新の Realtime プロンプト設計の指針に沿ってプロンプトを再構成します。推奨される方法に基づいて移行できるよう、このガイドへのリンクを含めてください。
  2. デフォルト値を使わず、推論強度を low に設定します。より深い計画立案が必要なワークフローに限って強度を上げます。
  3. ツール名、パラメーター、列挙値、JSON スキーマなどの設定を点検し、想定する実装と一致していることを確認します。
  4. 古くなった例を削除します。正常に進む場合、依頼が曖昧な場合、割り込みが入った場合、ツールを呼び出す場合、代替手段を使う場合の短い例を追加します。
  5. 代表的な会話を移行前後で比較します。既存の評価で性能や動作の後退がないか確認し、意図した動作変更を記録します。
  6. 最後に全体の整合性を確認します。必須要件、デフォルトの動作、ツールのルール、安全上のルール、代替動作がプロンプトで明確に区別されていることを確認してください。
  7. 評価を実行し、代表的な失敗を調べて、目標とする動作が安定するまでプロンプトを改善します。

次のステップ

GPT-Live を使用する場合:

  • バックエンドのプロンプトとアプリケーション側で管理するコンテキストについては、委任とツールを参照してください。
  • WebRTC または WebSockets で接続します。電話システムとの連携については、電話と SIP を参照してください。
  • 音声エージェントの評価では、会話の品質に加え、タスクが意図した結果に至ったかも検証してください。

Realtime を使用する場合: