開発に使用する 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 トークンに拡大し、長時間のセッションや大きなシステムプロンプトにより適しています。 |
前置きは、非公開の思考の連鎖ではありません。「その注文を今から確認します」といった、音声による短い状況説明です。モデルに非公開の推論を開示するよう求めないでください。
推奨するプロンプト構造
見出しを付けた短いセクションに分けます。モデルが関連する指示をすぐに見つけられるようにしてください。
# Role and Objective
# Personality and Tone
# Language
# Reasoning
# Message Channels
# Preambles
# Verbosity
# Tools
# Unclear Audio
# Entity Capture
# Long Context Behavior
# Escalationすべてのユースケースで、すべてのセクションが必要なわけではありません。プロダクトに関連するセクションを追加してください。
推論強度の設定
gpt-realtime-2 は、レイテンシーが増える代わりに、より深く推論できます。ワークフローに必要な判断能力をアシスタントが発揮できる範囲で、最も低い推論レベルを使用してください。
本番環境の音声エージェントの多くは、low から始めるとよいでしょう。タスクの複雑さ、許容できるレイテンシー、失敗時のコストに応じて、設定を上げ下げしてください。
| 推論強度 | 適した用途 | 例 |
|---|---|---|
minimal | レイテンシーを最小限に抑えることが最優先で、タスクが単純な場合。 | スマートホームの操作、タイマー、簡単なカレンダーの確認。 |
low | 応答の速さと基本的な推論の両方が必要な場合。 | カスタマーサポート、注文の照会、ポリシーに関する簡単な質問。 |
medium | 複数のステップからなるタスクについて、アシスタントが推論する必要がある場合。 | テクニカルサポート、診断、複雑な振り分け。 |
high | より深い推論によって成功率が大きく改善する場合。 | 高い精度が求められるワークフロー、エスカレーションの判断、制約のあるタスク。 |
xhigh | レイテンシーやコストが増えても、最大限の推論を行う価値がある場合。 | 複雑な計画立案、重大な問題のトリアージ、判断を誤った場合の影響が大きいツールのオーケストレーション。 |
API の設定に加えて、いつ、どの程度推論するかもモデルに指示してください。
## Reasoning
- For direct answers, simple lookups, and short confirmations, respond quickly and do not reason.
- For multi-step tasks, tool decisions, troubleshooting, or escalation, reason before acting.
- Do not perform extended reasoning when the user's audio is unclear; ask for clarification instead.前置きの意図的な活用
前置きとは、音声エージェントが推論、調べもの、ツール呼び出しを行っている間も、応答が続いていると感じられるようにする、音声による短い状況説明です。うまく使えば、アシスタントが作業を進めているとユーザーに伝わり、安心感につながります。使い方が悪いと、単なるつなぎ言葉になり、待ち時間を長く感じさせます。
gpt-realtime-2 は、デフォルトで前置きを生成します。まずはデフォルトの動作をテストしてください。プロダクトで目指す体験に合わない場合は、明示的に調整します。

## Preambles
Use short preambles only when they help the user understand that work is happening.
### When to use a preamble
Use a preamble when:
- you are about to call a tool that may take noticeable time;
- you need to reason through a multi-step request;
- you are checking records, availability, account state, or policy details;
- you are preparing an escalation or handoff;
- silence would make the assistant feel unresponsive.
When a preamble is needed, output it immediately before substantive reasoning or tool use.
### When to not use a preamble
Do not use a preamble when:
- the answer is direct and can be given immediately;
- the user is only confirming, correcting, or declining something;
- the audio is unclear and you need clarification;
- the latest audio is silence, background noise, hold music, TV audio, or side conversation;
- the tool call is lightweight and the user would not benefit from an update.
### Preamble style
When using a preamble:
- keep it natural, calm, and concise;
- vary the wording across turns;
- describe the action, not the internal reasoning;
- avoid filler.
Avoid phrases like:
- "Let me think..."
- "Hmm..."
- "One moment while I process that..."
- "I am now going to access the tool..."
### Preamble length
Use one short sentence.
Do not exceed two short sentences unless the user needs an explanation before a high-impact action.
### Prefer
- "I'll check that order now."
- "I'll look up your appointment details."
- "I'll verify that before we make any changes."
- "I'll check the policy and then give you the next step."
- "I'll pull that up so we can make sure it's the right account."
### Avoid
- "Let me think about that for a second."
- "Please wait while I process your request."
- "I'm going to use my tools now."
- "Interesting question. I will reason through this carefully."応答の長さの制御
gpt-realtime-2 は、タスクの種類ごとにどの程度詳しく説明するかをプロンプトで指定すると、長さに関する指示に最もよく従います。単に「簡潔に」と伝えるのではなく、その状況で何をもって簡潔とするかを定義してください。質問への直接的な回答、ツールの結果、トラブルシューティング、比較、エスカレーションでは、それぞれ適切な応答の長さが異なる場合があります。
## Verbosity
- Direct answers: Use 1-2 short sentences.
- Clarifying questions: Ask one question at a time.
- Tool results: Summarize the result first, then give only the next useful action.
- Product or option comparisons: Include key differences, tradeoffs, and who each option fits.
- Troubleshooting: Give one step at a time unless the user asks for the full procedure.
- Escalations: Briefly explain why escalation is needed and what will happen next.例:
ユーザー:どのプランを選べばよいですか?
アシスタント:費用を最も抑えたい場合は Basic を選んでください。チームの権限管理と請求の一本化が必要な場合は Pro を選んでください。コンプライアンスレビューや管理者向けの制御機能を重視する場合は、エンタープライズを選んでください。
ツールの動作設計
gpt-realtime-2 はツール呼び出しの能力が向上していますが、ツールの動作は引き続きプロンプトとツール仕様の設計に左右されます。実行、質問、確認、復旧を行うタイミングをプロンプトで定義していないと、アシスタントがツールを早まって呼び出したり、不要な質問をしたり、失敗した呼び出しを繰り返したりする可能性があります。
ツール呼び出しの積極性の設定
読み取り専用でリスクの低い操作には、積極的にツールを呼び出す設定が適しています。ツールがデータを変更する場合、外部に影響を及ぼす場合、または正確な識別子を必要とする場合は、呼び出しを控えめにする設定が適しています。
| ツールの種類 | デフォルトの動作 |
|---|---|
| 読み取り専用でリスクの低い検索 | 意図と必須フィールドが明確な場合に呼び出します。 |
| 正確な識別子を必要とする読み取り専用の操作 | 検索前に識別子を確認します。 |
| ユーザーの目に触れるメッセージの送信 | 送信前に下書きを作成するか、内容を要約します。 |
| アカウントの変更 | 呼び出す前に確認します。 |
| 購入、キャンセル、支払い | 呼び出す前に金額、対象、実行による結果を確認します。 |
| 取り消せない操作や影響の大きい操作 | 明示的に確認し、必要に応じてエスカレーションを提案します。 |
読み取りと書き込みの操作が混在する場合は、このバランスの取れたデフォルト設定を使い、ユースケースに合わせて調整してください。
## Tools
Use only the tools explicitly provided in the current tool list. Do not invent, assume, simulate, or rename tools.
For read-only tools:
- Call the tool when the user's intent is clear and all required fields are available.
- Do not ask for confirmation unless the lookup depends on a high-precision identifier or there is meaningful risk of using the wrong record.
- Ask a clarification question only if a required field is missing, ambiguous, or conflicting.
For write tools or external actions:
- Summarize the intended action before calling the tool.
- Include the key consequence, such as what will be changed, sent, canceled, ordered, or charged.
- Ask for confirmation.
- Do not call the tool until the user clearly confirms.
For exact identifiers:
- Treat order IDs, tracking numbers, account numbers, confirmation codes, phone numbers, and email addresses as high precision.
- Normalize only when the field type is clear.
- Confirm the final value before account-specific lookups, validation, or write actions.
After tool calls:
- Only say an action was completed after the tool call succeeds.
- If the tool fails, explain the failure briefly, avoid raw errors, and give the user a clear next step.リスクの高い操作の例:
ユーザー:残りの支払額をカードに請求してください。
悪い例:
アシスタント:カードへの請求が完了しました。
良い例:
アシスタント:確認ですが、残りの支払額 $248.16 を登録済みのカードに請求するということですね。進めてもよろしいですか?
ツールの失敗からの復旧
ツールの失敗も会話の一部です。適切に復旧するには、何が起きたかを説明し、次に何をすればよいかをユーザーに明確に示す必要があります。
すべての失敗に同じ対応をしないでください。復旧時の動作は、ツールの種類、失敗の内容、ユーザーへの影響に応じて変える必要があります。ユーザーに知らせずに再試行すべき失敗もあります。一方で、ユーザーに説明を求めたり、識別子の修正、新たな操作の確認、別の方法の選択を依頼したりする必要がある失敗もあります。
## Tool Failures
If a tool call fails:
1. Briefly explain what failed in user-friendly language.
2. Do not blame the user or expose raw tool errors.
3. If the failure may be due to an exact identifier, read back the value used and ask the user to correct it.
4. If the failure may be temporary, offer to retry once.
5. If the same failure happens repeatedly, offer an alternate path or escalation.
Do not repeatedly call the same tool with the same arguments after failure.
Do not ask for a different identifier until you have first checked whether the captured value was correct.悪い例:
アシスタント:問題が発生しました。
良い例:
アシスタント:O R D ダッシュ 3 1 2 5 B 2 3 に一致するものが見つかりませんでした。どこか聞き間違えていましたか?
利用可能なツールとプロンプトの同期
リアルタイムモデルは積極的にユーザーを支援しようとします。実際には利用できないツールがプロンプトに記載されていたり、ツール一覧とプロンプトが一致していなかったりすると、モデルがツール名を作り出したり、操作を完了したふりをしたりする可能性があります。
たとえば、プロンプトでは lookup_order を参照しているのに、提供されたツールの名前が search_orders である場合、モデルが誤った名前で呼び出したり、操作を実行したかのように振る舞ったりする可能性があります。
## Tool Availability
Use only the tools that are explicitly provided in the current tool list.
Do not invent, assume, or simulate tools. If a tool is mentioned in the instructions but is not present in the tool list, treat it as unavailable.
If the user requests an action that requires an unavailable tool:
1. Do not pretend to complete the action.
2. Briefly explain that the tool is not available.
3. Offer the closest supported next step.
Only say an action was completed after the relevant tool call succeeds.付録のプロンプト監査用メタプロンプトを使って、本番環境のプロンプトに矛盾や不足しているツール、想定外の状況で破綻しやすい指示がないかをレビューしてください。
無音と背景音への対応
音声エージェントは、デフォルトでは応答しようとする傾向があります。本番環境では、無音、背景のノイズ、保留音、テレビの音声、周囲の会話など、音声で応答すべきでない音が入ることもよくあります。
アシスタントが発話せずに音声を聞き続けるべき場合は、何も処理せずに待機するツールを使ってください。このツールにより、モデルは「ここにいます」「聞き取れませんでした」などと発話する代わりに、発話を伴わない有効な操作を選べます。
ツールの設計:
{
"name": "wait_for_user",
"description": "Call this when the latest audio does not need a spoken response, such as silence, background noise, hold music, TV audio, side conversation, or speech not addressed to the assistant. This tool helps end the turn without a spoken reply.",
"parameters": {
"type": "object",
"properties": {},
"required": []
}
}プロンプトの指示と組み合わせます:
## Handling Silence and Background Noise
If the latest audio is silence, background noise, hold music, TV audio, side conversation, or speech not addressed to you, call `wait_for_user`.
Do not respond conversationally after calling this tool.
Do not say "I'm here," "I didn't catch that," "Take your time," or "Let me know when you're ready."
Resume normal responses only when the user clearly addresses you or asks for help.これは、アシスタントに向けられていない音声に使うもので、不明瞭なユーザーリクエストに使うものではありません。ユーザーが明らかにアシスタントに話しかけているものの、内容が聞き取れない場合は、代わりに聞き返してください。
メッセージチャネルの使い分け
gpt-realtime-2 は、commentary チャネルでユーザーに見える途中経過のメッセージを、final チャネルでユーザー向けの最終応答を生成できます。出力先によって動作を変える必要がある場合は、チャネルごとに指示を指定してください。
| チャネル | ユーザーに表示されるか | 用途 |
|---|---|---|
commentary | はい | 前置きとツール呼び出し。 |
final | はい | ユーザー向けの最終メッセージ。 |
たとえば、ツール呼び出しは commentary チャネルで行われます。ツールの使用前、使用中、使用後にアシスタントに何かを発話させたい場合は、commentary チャネルでの動作として指定してください。
Before calling tools in the commentary channel, briefly tell the user what you are doing.gpt-realtime-2 は、1 つのターンで複数の応答フェーズを出力できます。API 出力では、この違いは response.done イベントで表されます。このイベントには、内容が commentary か最終回答かを示す phase 値が含まれます。
このフィールドを使うと、アプリケーションでフェーズごとに処理を変えられます。たとえば、commentary は短い途中経過の報告として再生または表示し、final_answer はアシスタントの完成した応答にのみ使うことができます。
response.output[0].phase: "commentary"
response.output[1].phase: "final_answer"不明瞭な音声への対応
モデルは、確実に理解できる音声に対してのみ操作を行うべきです。音声が不明瞭な場合は、推測するのではなく、短い確認の質問をするようにしてください。
モデルに、欠けている単語の推測、ツールの呼び出し、エンティティの取得、前置きの生成をさせないでください。また、ユーザーが何を言ったのかを再構成しようとして、内部の推論に時間を費やすこともさせないでください。
## Unclear Audio
- Only respond to clear audio or text.
- If the user's audio is not clear, ask for clarification using a short English phrase such as "Sorry, could you repeat that clearly?"
- Don't repeat the same unclear-audio clarification twice.
- Treat audio as unclear if it is ambiguous, noisy, silent, unintelligible, partially cut off, or if you are unsure of the exact words the user said.
- Do not guess what the user meant from unclear audio.
- Do not reason when the audio is unclear.
- Do not provide a preamble or call tools in the commentary channel when the audio is unclear.例:
ユーザーの音声:「注文の、さん、いち……を確認して」[途中で途切れる]
悪い例:
アシスタント:注文番号 31 を今から確認します。
良い例:
アシスタント:注文番号の一部しか聞き取れませんでした。1 桁ずつもう一度教えていただけますか?
エンティティの正確な取得
多くのリアルタイムワークフローでは、注文 ID、追跡番号、メールアドレス、確認コード、アカウント番号、請求番号、チケット ID、サポート受付番号、電話番号などの正確な値が必要です。
音声では、こうした値を正確に取得するのが難しくなります。ユーザーは早口で話したり、数字をさまざまな単位で区切ったり、一部だけを 1 文字ずつ読み上げたり、つなぎ言葉を挟んだり、発話の途中で訂正したり、似た音の文字を発音したりします。1 桁間違えるだけで、検索に失敗したり、別のアカウントを取得したりするおそれがあります。
エンティティは慎重に取得します。値は 1 つずつ収集し、明確に聞き取れた部分だけを正規化します。高い精度が求められる値はツール呼び出し前に確認し、どのような訂正にも対応できるようにします。
エンティティを 1 つずつ収集
ワークフローで複数の値が必要な場合は、1 つずつ収集します。特に音声での会話では、これによってフィールド間で値が混同されるのを防げます。
## Entity Collection Order
Collect required values one at a time.
- Ask for only the next missing value.
- Do not ask for multiple values in the same turn.
- Before asking, check whether the value was already provided earlier in the conversation or the session.
- If a possible value already exists, confirm it with the user before using it.
Example:
"I see tracking number ABC-54321 from earlier. Should I use that one, or do you have a different tracking number?"
Do not call tools until the current value has been collected, validated, and confirmed.1 文字ずつ読み上げられた文字の処理
ユーザーが ID、コード、名前、メールアドレスを 1 文字ずつ読み上げる場合に使用します。読み上げられた表現は入力であり、最終的な値ではありません。
## Spelled-Out Characters
When a user dictates an ID, code, or email character by character, treat the spoken sequence as one compact value. Preserve explicitly spoken separators like dash, dot, underscore, slash, or plus; otherwise do not add spaces or separators.
Examples:
- "A B C one two three" -> "ABC123"
- "B C dash nine eight seven" -> "BC-987"
- "J O H N at example dot com" -> "john@example.com"
Do not insert spaces between spelled-out characters unless the user explicitly says the value contains spaces.読み上げられた数値の慎重な正規化
数字で構成される識別子を伝える際、ユーザーは 1 桁ずつ読んだり、複数桁をまとめて読んだり、通常の数の読み方を使ったりします。フィールドがひと続きの数値を想定している場合は、明確に聞き取れた数値の発話を数字に変換します。
## Spoken Number Handling
Convert spoken numbers into digits when collecting numeric identifiers.
Examples:
- "one two three four" -> "1234"
- "one twenty three" -> "123"
- "one nineteen" -> "119"
- "ninety nine eleven" -> "9911"
- "nine thousand nine hundred eleven" -> "9911"
If multiple interpretations are plausible, ask the user to clarify before using the value.
Example:
"I heard either 119 or 1-19. Could you repeat the number digit by digit?"ツール呼び出し前の正確な識別子の確認
注文 ID、追跡番号、アカウント番号、請求番号、確認コードなどの識別子は、高い精度が求められるフィールドです。ツール呼び出しで使う前に確認します。
数字で構成される識別子は、1 桁ずつ復唱します。全体を 1 つの数として読み上げると、誤りを見落とすおそれがあります。
例:
アシスタント:確認ですが、8… 3… 5… 2… 1 で合っていますか?
ユーザーが 1 文字または 1 桁を訂正した場合は、ツールを呼び出す前に、訂正後の値を最初から最後まで復唱します。
例:
アシスタント:承知しました。8… 3… 5… 7… 1 で合っていますか?
## Exact Identifier Confirmation
Before calling tools with high-precision identifiers:
- Confirm the final normalized value with the user.
- Read numeric identifiers back digit by digit.
- Do not use guessed, partial, or ambiguous values.
- If the user corrects the value, repeat the full corrected value before calling the tool.メールアドレスを 1 文字ずつ確認
メールアドレスは重要な値です。ドット、ハイフン、アンダースコア、連続する同じ文字、似た響きの名前などを取り違えると、アカウント検索に失敗したり、誤ったアドレスにメッセージを送信したりするおそれがあります。
メールアドレスを 1 文字ずつ読み上げるようユーザーに依頼します:
アシスタント:正確に確認したいので、メールアドレスを 1 文字ずつ教えていただけますか?
復唱する際は、最終的なアドレスが正確かどうかを確認します:
アシスタント:確認ですが、c-h-e-n、アットマーク、example、ドット、com で合っていますか?
## Email Confirmation
Email addresses must be captured exactly.
If the user says the email naturally without spelling it out, ask them to repeat it character by character.
Example:
"Could you spell the email address character by character so I can make sure I have it exactly right?"
When reading an email back, confirm the exact final email address.
Example:
"Just to confirm, that is c-h-e-n at example dot com, right?"エンティティ収集のワークフロー
指示の字義どおりの解釈による落とし穴の回避
gpt-realtime-2 は、従来のリアルタイムモデルよりも指示を字義どおりに解釈して従います。以前のモデルでうまく機能していたプロンプトも、調整が必要になる場合があります。
正確な表現を使います。モデルは、開発者が意図した全体的な振る舞いよりも、指示の文言そのものを優先する場合があります。適用範囲が広いルールや厳格なルールは、特に複数のルールが重なると、予想外の形でアシスタントの動作を支配することがあります。
must、only、never、always など、制約を表す語の使用には注意します。単なる強調としてではなく、その動作が本当に必須の場合に使います。厳しい制約を多用すると、アシスタントが柔軟性を失い、過度に慎重になったり、妥当な例外に対応できなくなったりするおそれがあります。
適用範囲は明確に定めます:
For write actions that modify user data, ask for confirmation before calling the tool.適用範囲を広くしすぎないようにします:
Always ask for confirmation before doing anything.適用範囲が広い指示では、注文状況の確認、空き状況の取得、アカウント情報の読み取りなど、無害な読み取り専用の照会でも、不要な確認を求めるおそれがあります。
字義どおりに解釈される例
プロンプト作成全般の推奨事項:
- 意図を暗に伝えるのではなく、明示的に指示します。
- 動作を厳密に制限する必要がない限り、制約を表す語をむやみに使わないようにします。
- 矛盾する指示を最小限に抑えます。
- 優先順位に関する指示を重ねたり、競合させたりしないよう注意します。
- プロンプトは段階的にテストします。わずかな文言の変更でも、動作に大きく影響する場合があります。
- 従来のリアルタイムモデルから移行する際は、最良の結果を得るために、一部のプロンプトの構成を見直す必要があると考えておきます。
言語とアクセントの個別制御
言語とアクセントは別々に制御する必要があります。
ユーザーのアクセントは、そのユーザーが希望する言語と同じではありません。ヒンディー語、スペイン語、フランス語、中国語(標準中国語)のアクセントで英語を話すユーザーでも、英語での応答を期待している場合があります。
次のように、言語について適用範囲を広くしすぎた指示は避けます:
Mirror the user.
Respond naturally in the user's language.
Switch languages when appropriate.
Sound local.
Adapt to the user's accent.これらの指示は適用範囲が広すぎます。モデルが、アクセント、つなぎ言葉、相づち、単発の外国語の単語を、言語を切り替える理由として解釈するおそれがあります。
英語での応答ポリシー
## Language
English is the default response language.
- Do not infer language from accent alone.
- Ignore short filler sounds, backchannels, and isolated foreign words for language detection.
- Only switch languages if the user explicitly asks or provides a substantive utterance in another language.
- If language confidence is low, ask a short clarification instead of guessing.
- Keep preambles, spoken bridges, tool-related messages, and final answers in the same language.
- Accent adaptation must not change the response language.多言語での応答ポリシー
## Language
Default to English unless the user clearly uses another language.
Switch languages only when:
- the user explicitly asks to use another language;
- the user provides a substantive utterance in another language. A substantive utterance means the user gives a complete request, question, or correction in another language, not just a greeting, name, address, filler word, or borrowed phrase.
Do not switch languages based on:
- accent;
- pronunciation;
- filler words;
- short backchannels;
- names;
- addresses;
- isolated foreign words.
If uncertain, ask:
"Would you like me to continue in English or [LANGUAGE]?"アクセントの制御
gpt-realtime-2 はアクセントに関する指示により忠実に従えますが、曖昧なプロンプトでは、アクセントが変化したり、意図せず言語が切り替わったりするおそれがあります。
アクセントを制御するプロンプトでは、次の点を明示すると最も効果的です:
- 目標とするアクセント
- 一定に保つべき特徴
- 意図する話すペース、強勢、韻律
- アクセントの調整を使用言語の選択に反映させるかどうか
避けたい例:
Sound Australian.推奨する例:
## Accent
Speak English with a light Australian accent.
- Keep the accent stable from the first word to the last.
- Use natural Australian vowel shaping, but keep speech easy to understand.
- Do not exaggerate the accent.
- Do not change response language based on the user's accent.カスタム音声
標準の音声ではブランド、アクセント、キャラクターの要件を安定して満たせない場合は、カスタム音声を使用してください。
プロンプトでアクセント、話すペース、話し方を調整できますが、音声そのものの設計を完全に代替することはできません。ブランド固有の声を一貫して保つ必要がある場合や、アクセントを忠実に再現する必要がある場合は、カスタム音声を検討してください。
カスタム音声は、承認されたお客様のみ利用できます。利用を希望する場合は、担当のアカウントチームにお問い合わせください。
長時間セッションでの状態の維持
gpt-realtime-2 では、リアルタイムのコンテキストウィンドウが 32k トークンから 128k トークンに拡張され、長時間のセッションにより適しています。発話が密に続く双方向の会話では、128k トークンは、おおよそ 1~2 時間分の生の音声コンテキストに相当すると考えるとよいでしょう。この時間は、ツールの使用、内部推論、追加されたレコードなど、セッションの内容によって変わります。
長いコンテキストを扱うユースケースでは、gpt-realtime-2 が現在有効な情報、背景情報、情報源が矛盾した場合に無視すべき情報を区別できると、最も高い性能を発揮します。未整理の文字起こしや大量のコンテキストをそのまま渡して、情報源の優先順位をモデルに推測させないでください。情報を構造化してください。
取得したレコード、過去の会話履歴、ポリシー、要約、アカウントに関するメモ、背景資料など、大量のコンテキストを渡してセッションを開始する場合は、構造化した形式を使用してください。
以前のリアルタイムモデルからの移行
以前のリアルタイムモデルから移行する際は、プロンプトを単に移植するテキストとしてではなく、動作を設計するものとして扱ってください。
- Codex または高性能なリーズニングモデルを使い、最新の Realtime プロンプトガイダンスに沿ってプロンプトを再構成してください。ベストプラクティスに基づいて移行できるよう、このプロンプトガイドへのリンクを含めてください。
- 推論強度は、デフォルト値ではなく
lowに設定してください。より深い計画立案が必要なワークフローでのみ、推論強度を上げてください。 - ツール名、パラメーター、列挙値、JSON スキーマなどの設定を点検し、想定する実装と一致していることを確認してください。
- 古くなった例を削除してください。正常系、曖昧な状況、割り込み、ツール呼び出し、フォールバック時の動作について、短い例を追加してください。
- 移行前後の代表的な会話を比較してください。既存の評価を使って性能や動作の悪化がないか確認し、意図した動作変更は文書に記録してください。
- 最後に整合性を確認してください。必須要件、デフォルトの動作、ツールのルール、安全性のルール、フォールバック時の動作が、プロンプト内で明確に区別されていることを確認してください。
- 評価を実行して代表的な失敗例を調べ、目標とする動作が安定するまでプロンプトの改善を繰り返してください。
Realtime 1.5 プロンプトガイド
gpt-realtime-1.5 は、Realtime API の音声変換モデルです。このモデルにも、gpt-realtime と同じプロンプトガイダンスが適用されます。
音声を AI の主要なインターフェースにするには、音声変換システムが不可欠です。gpt-realtime-1.5 は、ミッションクリティカルなワークフローを大規模に処理できる、堅牢で実用的なリアルタイム音声エージェントを支えます。
以前のリアルタイムプレビューモデルと比べて、gpt-realtime-1.5 は指示への追従性、ツール呼び出しの信頼性、音声品質が向上しており、全体としてより滑らかな体験を提供します。こうした改善により、複数の処理を連鎖させる方式から、真にリアルタイムな体験への移行が現実的になります。レイテンシを抑えながら、より自然で表現豊かな音声応答を生成できます。
リアルタイムモデルでは、テキストベースのモデルにはそのまま適用できないプロンプト手法が効果を発揮します。このガイドでは、まず推奨するプロンプトの基本構成を示し、各部分について、実践的なヒント、そのまま使える簡単なパターン、ユースケースに合わせて調整できる例を紹介します。
全般的なヒント
- 粘り強く改善を繰り返す:わずかな言い回しの変更が、動作の成否を左右することがあります。
- 例:不明瞭な音声への対応指示で、「inaudible(聞こえない)」を「unintelligible(理解できない)」に変えたところ、ノイズの多い入力への対応が改善しました。
- 段落より箇条書きを使う:長い段落よりも、明確で短い箇条書きの方が効果的です。
- 例を示して導く:モデルは、例として示したフレーズに忠実に従います。
- 正確に指示する:GPT-5 と同様に、曖昧な指示や矛盾する指示は性能の低下につながります。
- 使用言語を制御する:意図しない言語の切り替えが見られる場合は、出力言語を指定した言語に固定してください。
- 繰り返しを減らす:表現に変化を持たせるルールを追加して、機械的な言い回しを減らしてください。
- 大文字で強調する:重要なルールを大文字で書くと目立つため、モデルが従いやすくなります。
- 記号を使ったルールを文章にする:「IF x > 3 THEN ESCALATE」ではなく、「失敗が 3 回を超えたらエスカレーションしてください」と書いてください。
プロンプトの構成
プロンプトを整理すると、モデルがコンテキストを理解しやすくなり、ターンをまたいで一貫性を保ちやすくなります。また、問題のあるセクションを修正し、改善を繰り返す作業も容易になります。
- 効果:システムプロンプトを見出しの付いた明確なセクションに分けると、モデルが指示を見つけて従いやすくなります。各セクションでは、扱う内容を 1 つに絞ってください。
- 調整方法:分野固有のセクション(コンプライアンス、ブランドポリシーなど)を追加してください。不要なセクションは削除してください。たとえば、発音に問題がなければ「発音の参考情報」は不要です。
例
# Role & Objective — who you are and what “success” means
# Personality & Tone — the voice and style to maintain
# Context — retrieved context, relevant info
# Reference Pronunciations — phonetic guides for tricky words
# Tools — names, usage rules, and preambles
# Instructions / Rules — do’s, don’ts, and approach
# Conversation Flow — states, goals, and transitions
# Safety & Escalation — fallback and handoff logic役割と目的
このセクションでは、エージェントが何者であり、何をもって「完了」とするかを定義します。例では 2 つの異なる人物設定を使い、役割と目的を明示するとモデルがどれほど忠実に従うかを示します。
- 使用する場面:モデルが、求めるペルソナ、役割、タスクの範囲に沿って動作しない場合
- 効果:音声エージェントの人物設定を固定し、指定した役割に沿った応答を引き出します。
- 調整方法:ユースケースに合わせて役割を変更してください。
例(特定のアクセントで話すモデル)
# Role & Objective
You are a Quebecois French-speaking customer service bot. Your task is to answer the user's question.以前のリアルタイムプレビュー:
gpt-realtime-1.5:
例(キャラクターを演じるモデル)
# Role & Objective
You are a high-energy game-show host guiding the caller to guess a secret number from 1 to 100 to win 1,000,000$.以前のリアルタイムプレビュー:
gpt-realtime-1.5:
gpt-realtime-1.5 は、以前のリアルタイムプレビューモデルよりも確実に、指定された役割を演じることができます。
パーソナリティと口調
gpt-realtime-1.5 は、特定のパーソナリティや口調を再現する際にも指示によく従います。ユースケースで求められる体験に合わせて、音声体験や話し方を調整できます。
- 使用する場面:応答が単調、冗長すぎる、またはターン間で一貫性に欠ける場合
- 効果:声の表現、簡潔さ、話すペースを設定し、自然で一貫した応答にします。
- 調整方法:親しみやすさや改まった表現の度合い、通常の応答の長さを調整してください。規制のある分野では、中立性と正確さを優先してください。ユースケースに関連するサブセクションも追加してください。
例
# Personality & Tone
## Personality
- Friendly, calm and approachable expert customer service assistant.
## Tone
- Warm, concise, confident, never fawning.
## Length
2–3 sentences per turn.例(複数の感情表現)
# Personality & Tone
- Start your response very happy
- Midway, change to sad
- At the end change your mood to very angrygpt-realtime-1.5:
モデルは複雑な指示に従い、音声応答の中で 3 つの感情を切り替えて表現できます。
話す速さの指示
Realtime API の speed パラメーターが変更するのは再生速度であり、モデルが音声を生成する際の話し方ではありません。実際に速く話すようにするには、話すペースを指定する指示を追加します。
- 使用する場面:ユーザーがより速い話し方を求めていて、再生速度の調整(speed パラメーター)だけでは話し方を改善できない場合
- 効果:クライアントの再生速度とは独立して、話し方(簡潔さやリズム)を調整します。
- 調整方法:ユースケースの要件に合わせて、話す速さの指示を変更します。
例
# Personality & Tone
## Personality
- Friendly, calm and approachable expert customer service assistant.
## Tone
- Warm, concise, confident, never fawning.
## Length
- 2–3 sentences per turn.
## Pacing
- Deliver your audio response fast, but do not sound rushed.
- Do not modify the content of your response, only increase speaking speed for the same response.従来のリアルタイムプレビューモデル:
gpt-realtime-1.5:
話すペースを明確に指示すると、gpt-realtime-1.5 は急ぎすぎた印象を与えずに、はっきりとわかるほど速く話せます。
言語の制約
言語の制約を設けると、背景ノイズや多言語の入力などの難しい条件でも、モデルが意図した言語で一貫して応答するようになります。
- 使用する場面:複数の言語が使われる環境やノイズの多い環境で、意図しない言語の切り替えを防ぎたい場合
- 効果:出力を選択した言語に固定し、意図しない言語の切り替えを防ぎます。
- 調整方法:「英語」を目的の言語に置き換えるか、ユースケースに応じてより複雑な指示を追加します。
例(単一言語への固定)
# Personality & Tone
## Personality
- Friendly, calm and approachable expert customer service assistant.
## Tone
- Warm, concise, confident, never fawning.
## Length
- 2–3 sentences per turn.
## Language
- The conversation will be only in English.
- Do not respond in any other language even if the user asks.
- If the user speaks another language, politely explain that support is limited to English.以下は、gpt-realtime-1.5 に指示を適用した後の応答です。

例(モデルによる語学指導)
# Role & Objective
- You are a friendly, knowledgeable voice tutor for French learners.
- Your goal is to help the user improve their French speaking and listening skills through engaging conversation and clear explanations.
- Balance immersive French practice with supportive English guidance to ensure understanding and progress.
# Personality & Tone
## Personality
- Friendly, calm and approachable expert customer service assistant.
## Tone
- Warm, concise, confident, never fawning.
## Length
- 2–3 sentences per turn.
## Language
### Explanations
Use English when explaining grammar, vocabulary, or cultural context.
### Conversation
Speak in French when conducting practice, giving examples, or engaging in dialogue.以下は、gpt-realtime-1.5 に指示を適用した後の応答です。

モデルはカスタム指示に基づいて、会話中に言語を切り替えられます。
繰り返しの抑制
リアルタイムモデルは、例文に忠実に従ってブランドらしい表現を保てますが、例文を使いすぎて応答が機械的になったり、同じ表現を繰り返したりすることがあります。繰り返しに関するルールを追加すると、わかりやすさとブランドの語り口を保ちながら、表現に変化をつけられます。
- 使用する場面:ターンやセッションをまたいで、同じ書き出し、つなぎ言葉、文のパターンが繰り返し使われる場合
- 効果:表現に変化をつける制約を追加します。同じフレーズの繰り返しを抑え、同義語や別の文構造の使用を促しながら、必須の用語はそのまま維持します。
- 調整方法:制約の厳しさを調整し(例:「同じ書き出しは N ターンにつき 1 回までにする」)、必ず保持するフレーズ(法務、コンプライアンス、ブランド関連)を例外として指定します。一貫性が重要な箇所では、表現の幅を狭めることを許容します。
例
# Personality & Tone
## Personality
- Friendly, calm and approachable expert customer service assistant.
## Tone
- Warm, concise, confident, never fawning.
## Length
- 2–3 sentences per turn.
## Language
- The conversation will be only in English.
- Do not respond in any other language even if the user asks.
- If the user speaks another language, politely explain that support is limited to English.
## Variety
- Do not repeat the same sentence twice.
- Vary your responses so they don't sound robotic.以下は、gpt-realtime-1.5 に指示を適用する 前 の応答です。モデルは Got it という同じ確認の言葉を繰り返しています。

以下は、gpt-realtime-1.5 に指示を適用した 後 の応答です。

これでモデルは、応答や確認の言葉に変化をつけ、機械的に聞こえないようにできます。
発音の指定
このセクションでは、音声でのやり取りで、モデルが重要な単語、数字、名前、用語を正しく発音するようにする方法を説明します。
- 使用する場面:ブランド名、専門用語、地名の発音をよく間違える場合
- 効果:発音のヒントにより、信頼感とわかりやすさを高めます。
- 調整方法:リストは短くまとめ、発音の誤りに気づいたら更新します。
例
# Reference Pronunciations
When voicing these words, use the respective pronunciations:
- Pronounce “SQL” as “sequel.”
- Pronounce “PostgreSQL” as “post-gress.”
- Pronounce “Kyiv” as “KEE-iv.”
- Pronounce "Huawei" as “HWAH-way”従来のリアルタイムプレビューモデル:
gpt-realtime-1.5:
発音を指定する指示を使うと、gpt-realtime-1.5 は SQL を「sequel」と正しく発音できます。
英数字の発音
Realtime S2S は、重要な情報(電話番号、クレジットカード番号、注文 ID)を復唱するときに、数字や文字の発音が不明瞭になったり、つながって聞こえたりすることがあります。1 文字ずつ明確に確認すると、聞き間違いを防ぎ、より明瞭な音声を生成できます。
- 使用する場面:電話番号、カード番号、2FA コード、注文 ID、シリアル番号、住所、部屋番号、英数字が混在する文字列を、モデルがうまく聞き取れない、または復唱できない場合
- 効果:モデルに区切りを入れて 1 文字ずつ読み上げさせた後、ユーザーに確認し、訂正があれば再確認させます。必要に応じて、「Alpha の A」のように、文字を聞き分けるための単語も使います。
例(一般的な指示のセクション)
# Instructions/Rules
- When reading numbers or codes, speak each character separately, separated by hyphens (e.g., 4-1-5).
- Repeat EXACTLY the provided number; do not omit any digits.ヒント:会話フローに沿ってプロンプトを設計する場合は、英数字の発音に関する指示をどの会話の状態で適用するか指定できます。
例(会話の状態ごとの指示)
(OpenAI の openai-realtime-agents のプロンプトにある会話フローから抜粋)
{
"id": "3_get_and_verify_phone",
"description": "Request phone number and verify by repeating it back.",
"instructions": [
"Politely request the user’s phone number.",
"Once provided, confirm it by repeating each digit and ask if it’s correct.",
"If the user corrects you, confirm AGAIN to make sure you understand.",
],
"examples": [
"I'll need some more information to access your account if that's okay. May I have your phone number, please?",
"You said 0-2-1-5-5-5-1-2-3-4, correct?",
"You said 4-5-6-7-8-9-0-1-2-3, correct?"
],
"transitions": [{
"next_step": "4_authentication_DOB",
"condition": "Once phone number is confirmed"
}]
}以下は、gpt-realtime-1.5 に指示を適用する 前 の応答です。
もちろんです!番号は 55119765423 です。ほかにも必要なことがあればお知らせください!
以下は、gpt-realtime-1.5 に指示を適用した 後 の応答です。
もちろんです!番号は 5-5-1-1-1-9-7-6-5-4-2-3 です。ほかにも必要なことがあればお知らせください!
指示
このセクションでは、モデルにタスクを解決させ、ベストプラクティスを適用し、起こりうる問題を修正するためのプロンプトの書き方を説明します。
意外ではないかもしれませんが、最良の結果を得るには、GPT-4.1 で推奨されるプロンプトのパターンと同様のものをお勧めします。
指示への追従
GPT-4.1 や GPT-5 と同様に、指示が矛盾していたり、曖昧だったり、不明確だったりすると、gpt-realtime-1.5 の性能は低下します。
- 使用する場面:出力がルールから外れたり、段階を飛ばしたり、ツールを誤用したりする場合
- 効果:リリース前に、LLM を使って曖昧さ、矛盾、定義の欠落を指摘させます。
指示の品質を確認するプロンプト(ChatGPT または API で利用可能)
以下のプロンプトを GPT-5 で使い、プロンプト内の修正可能な問題箇所を特定します。
## Role & Objective
You are a **Prompt-Critique Expert**.
Examine a user-supplied LLM prompt and surface any weaknesses following the instructions below.
## Instructions
Review the prompt that is meant for an LLM to follow and identify the following issues:
- Ambiguity: Could any wording be interpreted in more than one way?
- Lacking Definitions: Are there any class labels, terms, or concepts that are not defined that might be misinterpreted by an LLM?
- Conflicting, missing, or vague instructions: Are directions incomplete or contradictory?
- Unstated assumptions: Does the prompt assume the model has to be able to do something that is not explicitly stated?
## Do **NOT** list issues of the following types:
- Invent new instructions, tool calls, or external information. You do not know what tools need to be added that are missing.
- Issues that you are unsure about.
## Output Format
"""
# Issues
- Numbered list; include brief quote snippets.
# Improvements
- Numbered list; provide the revised lines you would change and how you would change them.
# Revised Prompt
- Revised prompt where you have applied all your improvements surgically with minimal edits to the original prompt
"""プロンプト最適化用のメタプロンプト(ChatGPT または API で利用可能)
このメタプロンプトは、特定の失敗パターンに焦点を当てて、基本となるシステムプロンプトの改善を支援します。現在のプロンプトと発生している問題を伝えると、モデル(GPT-5)が制約を強化し、問題を減らすための改善案を提案します。
Here's my current prompt to an LLM:
[BEGIN OF CURRENT PROMPT]
{CURRENT_PROMPT}
[END OF CURRENT PROMPT]
But I see this issue happening from the LLM:
[BEGIN OF ISSUE]
{ISSUE}
[END OF ISSUE]
Can you provide some variants of the prompt so that the model can better understand the constraints to alleviate the issue?音声がない場合や不明瞭な場合
モデルは、何かが聞こえたと判断して応答しようとすることがあります。不明瞭な音声やユーザー入力を受け取ったときの振る舞いを、カスタム指示で指定できます。ユースケースに合わせて、望ましい振る舞いに調整してください。たとえば、聞き返す代わりに、直前の質問を繰り返すように指定できます。
- 使用する場面:背景ノイズ、途切れた言葉、無音によって不要な応答が発生する場合
- 効果:誤検知による応答を防ぎ、自然に聞き返せるようにします。
- 調整方法:ユースケースに応じて、聞き返すか、直前の質問を繰り返すかを選びます。
例(咳と不明瞭な音声)
# Instructions/Rules
...
## Unclear audio
- Always respond in the same language the user is speaking in, if unintelligible.
- Only respond to clear audio or text.
- If the user's audio is not clear (e.g. ambiguous input/background noise/silent/unintelligible) or if you did not fully hear or understand the user, ask for clarification using {preferred_language} phrases.以下は、gpt-realtime-1.5 に指示を適用した 後 の応答です。
この例では、私の (とても) 大きな咳と不明瞭な音声の後に、モデルが聞き返しています。
背景音楽や音
音声生成中に、意図しない背景音楽、ハミング、リズミカルなノイズ、音のようなアーティファクトが生成されることがあります。こうした不要な音は、聞き取りやすさを損ねたり、ユーザーの気を散らしたり、アシスタントのプロらしさを損なったりする可能性があります。次の指示は、これらの発生を防いだり、大幅に減らしたりするのに役立ちます。
- 使用する場面:Realtime の音声応答に、意図しない音楽的な要素や効果音が含まれる場合
- 効果:こうした不要な音声アーティファクトを生成しないようにモデルを誘導します。
- 調整方法:実際に発生している特定の音のパターンを明示的に抑制するよう、指示を調整してみてください。
例
# Instructions/Rules
...
- Do not include any sound effects or onomatopoeic expressions in your responses.ツール
このセクションでは、関数やツールの使い方をモデルに指示します。ツールを呼び出す条件と呼び出さない条件、収集する引数、呼び出しの実行中に伝える内容、エラーや部分的な結果への対処方法を明記してください。
ツールの選択
gpt-realtime-1.5 は指示に忠実に従います。ただし、ツールリストに渡していないツールをプロンプトで言及するなど、モデルが実際にアクセスできるものと指示が矛盾していると、不適切な応答につながる可能性があります。
- 使用する場面:実際には利用できないツールがプロンプトに記載されている場合
- 効果:利用可能なツールとシステムプロンプトをレビューし、整合性を確認します。
例
# Tools
## lookup_account(email_or_phone)
...
## check_outage(address)
...記載されたツールが実際に利用でき、 説明同士が矛盾していないことを確認する必要があります。
[
{
"name": "lookup_account",
"description": "Retrieve a customer account using either an email or phone number to enable verification and account-specific actions.",
"parameters": {
...
},
{
"name": "check_outage",
"description": "Check for network outages affecting a given service address and return status and ETA if applicable.",
"parameters": {
...
}
]ツール呼び出しの前置き
ユースケースによっては、Realtime モデルがツール呼び出しと同時に音声で応答すると効果的です。待ち時間を感じにくくなり、ユーザー体験が向上します。サンプルフレーズはユースケースに合わせて変更できます。
- 使用する場面:ツール呼び出しと同時に、処理を受け付けたことをユーザーにすぐ伝える必要がある場合。待ち時間を感じにくくする効果もあります。
- 効果:ツール呼び出しの前に、短く一貫した前置きを加えます。
例
# Tools
- Before any tool call, say one short line like “I’m checking that now.” Then call the tool immediately.以下は、gpt-realtime-1.5 に指示を適用した後の応答です。

この指示により、モデルはツール呼び出しと同時に「今、確認しています」という音声応答を出力します。
ツール呼び出しの前置きとサンプルフレーズ
ツール呼び出しと同時にモデルが出力するフレーズをより細かく制御したい場合は、ツール仕様の説明にサンプルフレーズを追加できます。
例
tools = [
{
"name": "lookup_account",
"description": """Retrieve a customer account using either an email or phone number to enable verification and account-specific actions.
Preamble sample phrases:
- For security, I’ll pull up your account using the email on file.
- Let me look up your account by {email} now.
- I’m fetching the account linked to {phone} to verify access.
- One moment—I’m opening your account details.""",
"parameters": {
"type": "object",
"properties": {
"email": {"type": "string"},
"phone": {"type": "string"},
},
"additionalProperties": False,
},
},
{
"name": "check_outage",
"description": """Check for network outages affecting a given service address and return status and ETA if applicable.
Preamble sample phrases:
- I’ll check for any outages at {service_address} right now.
- Let me look up network status for your area.
- I’m checking whether there’s an active outage impacting your address.
- One sec—verifying service status and any posted ETA.""",
"parameters": {
"type": "object",
"properties": {
"service_address": {"type": "string"},
},
"required": ["service_address"],
"additionalProperties": False,
},
},
]確認なしのツール呼び出し
モデルがツール呼び出しの前に確認を求めることがあります。ユースケースによっては、モデルが自ら進んで行動しないことで、エンドユーザーの体験を損なう可能性があります。
- 使用する場面:ツールを呼び出すべきことが明らかなのに、エージェントが事前に許可を求める場合
- 効果:不要な確認の繰り返しをなくします。
例
# Tools
- When calling a tool, do not ask for any user confirmation. Be proactive以下は、gpt-realtime-1.5 に指示を適用した 後 の応答です。

この例では、リアルタイムモデルは音声応答を出力せず、該当するツールを直接呼び出しています。
ヒント:モデルが性急にツールを呼び出してしまう場合は、表現を和らげてみてください。たとえば、「積極的に」のような強い言葉をより穏やかな表現に置き換えると、モデルが先を急がず、落ち着いて行動するよう誘導できます。
ツール呼び出しの性能
ユースケースが複雑になり、利用可能なツールが増えるほど、各ツールを使う条件を明示することが重要になります。使わない条件も同じくらい重要です。明確な使用ルールは、ツール呼び出しの精度を高めるだけでなく、モデルが適切なタイミングで適切なツールを選ぶのにも役立ちます。
- 使用する場面:モデルのツール呼び出し性能が十分でなく、誤用を減らすために明示的な指示が必要な場合
- 効果:各ツールを「使う条件/使わない条件」を指示に追加します。ツール呼び出しの順序に関する指示も追加できます(ツール A の呼び出し後は、ツール B または C を呼び出せる、など)。
例
# Tools
- When you call any tools, you must output at the same time a response letting the user know that you are calling the tool.
## lookup_account(email_or_phone)
Use when: verifying identity or viewing plan/outage flags.
Do NOT use when: the user is clearly anonymous and only asks general questions.
## check_outage(address)
Use when: user reports connectivity issues or slow speeds.
Do NOT use when: question is billing-only.
## refund_credit(account_id, minutes)
Use when: confirmed outage > 240 minutes in the past 7 days.
Do NOT use when: outage is unconfirmed; route to Diagnose → check_outage first.
## schedule_technician(account_id, window)
Use when: repeated failures after reboot and outage status = false.
Do NOT use when: outage status = true (send status + ETA instead).
## escalate_to_human(account_id, reason)
Use when: user seems very frustrated, abuse/harassment, repeated failures, billing disputes >$50, or user requests escalation.ヒント:ツール呼び出しが予測できない形で失敗する可能性がある場合は、モデルが適切に対応できるよう、失敗時の処理を明確に指示してください。
ツールごとの振る舞い
すべてのツールに一律のルールを適用する代わりに、ツールごとにモデルの振る舞いを細かく調整できます。たとえば、読み取りツールは積極的に呼び出し、書き込みツールは明示的な確認を必要とするように設定できます。
- 使用する場面:積極性、確認、前置きに関する一律の指示が、すべてのツールには適さない場合
- 効果:すぐに呼び出すか、先に確認するか、呼び出し前に前置きを話すかを定める、ツールごとの振る舞いのルールを追加します。
例
# TOOLS
- For the tools marked PROACTIVE: do not ask for confirmation from the user and do not output a preamble.
- For the tools marked as CONFIRMATION FIRST: always ask for confirmation to the user.
- For the tools marked as PREAMBLES: Before any tool call, say one short line like “I’m checking that now.” Then call the tool immediately.
## lookup_account(email_or_phone) — PROACTIVE
Use when: verifying identity or accessing billing.
Do NOT use when: caller refuses to identify after second request.
## check_outage(address) — PREAMBLES
Use when: caller reports failed connection or speed lower than 10 Mbps.
Do NOT use when: purely billing OR when internet speed is above 10 Mbps.
If either condition applies, inform the customer you cannot assist and hang up.
## refund_credit(account_id, minutes) — CONFIRMATION FIRST
Use when: confirmed outage > 240 minutes in the past 7 days (credit 60 minutes).
Do NOT use when: outage unconfirmed.
Confirmation phrase: “I can issue a credit for this outage—would you like me to go ahead?”
## schedule_technician(account_id, window) — CONFIRMATION FIRST
Use when: reboot + line checks fail AND outage=false.
Windows: “10am–12pm ET” or “2pm–4pm ET”.
Confirmation phrase: “I can schedule a technician to visit—should I book that for you?”
## escalate_to_human(account_id, reason) — PREAMBLES
Use when: harassment, threats, self-harm, repeated failure, billing disputes > $50, caller is frustrated, or caller requests escalation.
Preamble: “Let me connect you to a senior agent who can assist further.”ツール出力の形式
ツール出力の中には、モデルの学習データの分布から外れるものがあります。特に、一字一句そのまま繰り返す必要がある長い文字列が該当します。学習時のツール出力は、一般に名前付きフィールドを持つ JSON オブジェクトの形式です。ツールが生の文字列を返し、それとは別に「正確に繰り返す」ようモデルに指示すると、言い換え、切り詰め、独自の前置きの挿入が起こりやすくなる可能性があります。
実用的な対策は、ツール出力を通常のツール結果と同じような形式にし、そのまま繰り返すという要件を機械が明確に解釈できる形で指定することです。
-
使用する場面: ツールが 長い、または複雑な構造化コンテンツ (複数文の指示、引き継ぎ用データ、ID やリンク、ポリシーの要約、複数ステップの手順など)を返し、 切り詰め、言い換え、フィールドの欠落、順序の変更、モデル独自の前置きやコメントの挿入が見られる場合
-
効果: ツール出力を 小さく明確な JSON エンベロープ (たとえば、
response_textにrequire_repeat_verbatim、format、content_typeなどのフラグを添えたもの)で包みます。これにより、応答の形式を 学習データの分布に近づけ 、期待する出力の仕方を 機械が明確に解釈できるようにします。 -
調整方法: スキーマは 最小限にし、安定した形に保ちます。想定するツール出力の形式を、 ツールに関する指示 と ツール定義 のそばの両方に明記してください(たとえば、「
require_repeat_verbatimが true の場合は、response_textだけを一字一句そのまま出力してください」や「response_textをそのまま表示してください。ツール出力のフィールドを追加、省略、並べ替えしないでください」など)。
例
例:生の文字列(誤りが起こりやすい形式)
ツールの戻り値:
I just sent you an email with the verification link. Please open it and click “Confirm”.モデルは、次のように応答することがあります。
-
「確認用のリンクをメールでお送りしました…」(言い換え)
-
最後の文を省略(途中で切り捨て)
-
余分なコメントを追加(「ほかにお手伝いできることはありますか?」)
例:JSON でラップした出力(学習データの分布に近く、信頼性が高い形式)
ツールの戻り値:
{
"response_text": "I just sent you an email with the verification link. Please open it and click “Confirm”.",
"require_repeat_verbatim": true
}これは一般的なツールの結果(JSON オブジェクト)と同じ形式なので、通常、モデルは次のことを行いやすくなります。
-
どれが「正」となる内容かを認識(response_text)
-
発話時の制約を理解(require_repeat_verbatim)
-
途中で切り捨てたり余分なコメントを加えたりせず、ツールの出力を正確に再現
スーパーバイザーツールの出力の言い換え(応答役と思考役を分けるアーキテクチャ)
多くの音声システムでは、リアルタイムモデルが応答役(ユーザーへの発話)を担い、より高性能なテキストモデルが思考役(計画、ポリシーの参照、標準作業手順に沿った処理の完遂)を担います。テキストの回答がそのまま発話に適しているとは限らないため、応答役は音声を生成する前に、思考役のテキストを音声で聞き取りやすい回答に言い換える必要があります。
- 使用する場面:思考役の回答を受け取った後の応答役の発話が、機械的に聞こえたり、長すぎたり、不自然になったりする場合
- 効果:思考役のテキストを、短く自然な、発話に適した回答に言い換えるよう、応答役に明確な指示を追加します。
- 調整方法:言い回し、話し始めの表現、長さの上限を、ユースケースで求める応答に合わせて調整します。
例
# Tools
## Supervisor Tool
Name: getNextResponseFromSupervisor(relevantContextFromLastUserMessage: string)
When to call:
- Any request outside the allow list.
- Any factual, policy, account, or process question.
- Any action that might require internal lookups or system changes.
When not to call:
- Simple greetings and basic chitchat.
- Requests to repeat or clarify.
- Collecting parameters for later Supervisor use:
- phone_number for account help (getUserAccountInfo)
- zip_code for store lookup (findNearestStore)
- topic or keyword for policy lookup (lookupPolicyDocument)
Usage rules and preamble:
1) Say a neutral filler phrase to the user, then immediately call the tool. Approved fillers: “One moment.”, “Let me check.”, “Just a second.”, “Give me a moment.”, “Let me see.”, “Let me look into that.” Fillers must not imply success or failure.
2) Do not mention the “Supervisor” when responding with filler phrase.
3) relevantContextFromLastUserMessage is a one-line summary of the latest user message; use an empty string if nothing salient.
4) After the tool returns, apply Rephrase Supervisor and send your reply.
### Rephrase Supervisor
- Start with a brief conversational opener using active language, then flow into the answer (for example: “Thanks for waiting—”, “Just finished checking that.”, “I’ve got that pulled up now.”).
- Keep it short: no more than 2 sentences.
- Use this template: opener + one-sentence gist + up to 3 key details + a quick confirmation or choice (for example: “Does that match what you expected?”, “Want me to review options?”).
- Read numbers for speech: money naturally (“$45.20” → “forty-five dollars and twenty cents”), phone numbers 3-3-4, addresses with individual digits, dates/times plainly (“August twelfth”, “three-thirty p.m.”).言い換えの指示がない場合の例です。
アシスタント:現在のクレジットカードの残高は、プラス 32,323,232 AUD です。
同じ例に言い換えの指示を加えると、次のようになります。
アシスタント:確認できました。クレジットカードには、三千二百三十二万三千二百三十二ドルの預かり残高があります。前回のお支払いは八月一日に処理されています。ご認識と合っていますか?
一般的なツール
gpt-realtime-1.5 は、以下の一般的なツールを効果的に使えるように学習されています。ユースケースで同様の動作が必要な場合は、名前、シグネチャ、説明をこれらに近づけてください。学習データの分布に近づけることで、信頼性を最大限に高められます。
モデルが学習した一般的なツールのうち、重要なものをいくつか紹介します。
例
# answer(question: string)
Description: Call this when the customer asks a question that you don't have an answer to or asks to perform an action.
# escalate_to_human()
Description: Call this when a customer asks for escalation, or to talk to someone else, or expresses dissatisfaction with the call.
# finish_session()
Description: Call this when a customer says they're done with the session or doesn't want to continue. If it's ambiguous, confirm with the customer before calling.会話フロー
このセクションでは、対話を目標の明確なフェーズに分け、各ステップで何をすべきかをモデルに正確に伝える方法を説明します。各フェーズの目的、進め方の指示、次のフェーズに移るための具体的な「終了条件」を定義します。これにより、モデルが行き詰まったり、手順を飛ばしたり、先走ったりするのを防ぎ、あいさつから問題解決まで、会話を順序立てて進められます。
また、会話の状態ごとにプロンプトを整理すると、エラーのパターンを特定しやすくなり、より効果的に改善を重ねられます。
- 使用する場面:会話にまとまりがない場合、目標に達する前に行き詰まる場合、またはモデルが目的をうまく達成できない場合
- 効果:やり取りをフェーズに分け、それぞれに明確な目標、指示、終了条件を設けます。
- 調整方法:ワークフローに合わせてフェーズの名前を変更し、意図した動作になるように各フェーズの指示を調整します。「終了条件」は具体的かつ最小限に保ちます。
例
# Conversation Flow
## 1) Greeting
Goal: Set tone and invite the reason for calling.
How to respond:
- Identify as NorthLoop Internet Support.
- Keep the opener brief and invite the caller’s goal.
- Confirm that customer is a Northloop customer
Exit to Discovery: Caller states they are a Northloop customer and mentions an initial goal or symptom.
## 2) Discover
Goal: Classify the issue and capture minimal details.
How to respond:
- Determine billing vs connectivity with one targeted question.
- For connectivity: collect the service address.
- For billing/account: collect email or phone used on the account.
Exit when: Intent and address (for connectivity) or email/phone (for billing) are known.
## 3) Verify
Goal: Confirm identity and retrieve the account.
How to respond:
- Once you have email or phone, call lookup_account(email_or_phone).
- If lookup fails, try the alternate identifier once; otherwise proceed with general guidance or offer escalation if account actions are required.
Exit when: Account ID is returned.
## 4) Diagnose
Goal: Decide outage vs local issue.
How to respond:
- For connectivity, call check_outage(address).
- If outage=true, skip local steps; move to Resolve with outage context.
- If outage=false, guide a short reboot/cabling check; confirm each step’s result before continuing.
Exit when: Root cause known.
## 5) Resolve
Goal: Apply fix, credit, or appointment.
How to respond:
- If confirmed outage > 240 minutes in the last 7 days, call refund_credit(account_id, 60).
- If outage=false and issue persists after basic checks, offer “10am–12pm ET” or “2pm–4pm ET” and call schedule_technician(account_id, chosen window).
- If the local fix worked, state the result and next steps briefly.
Exit when: A fix/credit/appointment has been applied and acknowledged by the caller.
## 6) Confirm/Close
Goal: Confirm outcome and end cleanly.
How to respond:
- Restate the result and any next step (e.g., stabilization window or tech ETA).
- Invite final questions; close politely if none.
Exit when: Caller declines more help.フレーズ例
フレーズ例は、モデルが応答を作る際の基準となります。回答を一つの固定表現に縛ることなく、求めるスタイル、簡潔さ、トーンを示せます。
- 使用する場面:応答にブランドらしさがない場合や、一貫性がない場合
- 効果:モデルが表現を変えながら、自然で簡潔に応答するためのフレーズ例を提示します。
- 調整方法:ブランドに合った例に置き換えます。「毎回使わない」という注意書きは残します。
例
# Sample Phrases
- Below are sample examples that you should use for inspiration. DO NOT ALWAYS USE THESE EXAMPLES, VARY YOUR RESPONSES.
Acknowledgements: “On it.” “One moment.” “Good question.”
Clarifiers: “Do you want A or B?” “What’s the deadline?”
Bridges: “Here’s the quick plan.” “Let’s keep it simple.”
Empathy (brief): “That’s frustrating—let’s fix it.”
Closers: “Anything else before we wrap?” “Happy to help next time.”注:音声システムがフレーズ例ばかり繰り返し、機械的な応答になってしまう場合は、表現に変化を持たせる制約を追加してみてください。これによって問題が解消した事例があります。
会話フローとフレーズ例
会話フローの各状態にフレーズ例を追加すると、適切な応答がどのようなものかをモデルに示すうえで役立ちます。
例
# Conversation Flow
## 1) Greeting
Goal: Set tone and invite the reason for calling.
How to respond:
- Identify as NorthLoop Internet Support.
- Keep the opener brief and invite the caller’s goal.
Sample phrases (do not always repeat the same phrases, vary your responses):
- “Thanks for calling NorthLoop Internet—how can I help today?”
- “You’ve reached NorthLoop Support. What’s going on with your service?”
- “Hi there—tell me what you’d like help with.”
Exit when: Caller states an initial goal or symptom.
## 2) Discover
Goal: Classify the issue and capture minimal details.
How to respond:
- Determine billing vs connectivity with one targeted question.
- For connectivity: collect the service address.
- For billing/account: collect email or phone used on the account.
Sample phrases (do not always repeat the same phrases, vary your responses):
- “Is this about your bill or your internet speed?”
- “What address are you using for the connection?”
- “What’s the email or phone number on the account?”
Exit when: Intent and address (for connectivity) or email/phone (for billing) are known.
## 3) Verify
Goal: Confirm identity and retrieve the account.
How to respond:
- Once you have email or phone, call lookup_account(email_or_phone).
- If lookup fails, try the alternate identifier once; otherwise proceed with general guidance or offer escalation if account actions are required.
Sample phrases:
- “Thanks—looking up your account now.”
- “If that doesn’t pull up, what’s the other contact—email or phone?”
- “Found your account. I’ll take care of this.”
Exit when: Account ID is returned.
## 4) Diagnose
Goal: Decide outage vs local issue.
How to respond:
- For connectivity, call check_outage(address).
- If outage=true, skip local steps; move to Resolve with outage context.
- If outage=false, guide a short reboot/cabling check; confirm each step’s result before continuing.
Sample phrases (do not always repeat the same phrases, vary your responses):
- “I’m running a quick outage check for your area.”
- “No outage reported—let’s try a fast modem reboot.”
- “Please confirm the modem lights: is the internet light solid or blinking?”
Exit when: Root cause known.
## 5) Resolve
Goal: Apply fix, credit, or appointment.
How to respond:
- If confirmed outage > 240 minutes in the last 7 days, call refund_credit(account_id, 60).
- If outage=false and issue persists after basic checks, offer “10am–12pm ET” or “2pm–4pm ET” and call schedule_technician(account_id, chosen window).
- If the local fix worked, state the result and next steps briefly.
Sample phrases (do not always repeat the same phrases, vary your responses):
- “There’s been an extended outage—adding a 60-minute bill credit now.”
- “No outage—let’s book a technician. I can do 10am–12pm ET or 2pm–4pm ET.”
- “Credit applied—you’ll see it on your next bill.”
Exit when: A fix/credit/appointment has been applied and acknowledged by the caller.
## 6) Confirm/Close
Goal: Confirm outcome and end cleanly.
How to respond:
- Restate the result and any next step (e.g., stabilization window or tech ETA).
- Invite final questions; close politely if none.
Sample phrases (do not always repeat the same phrases, vary your responses):
- “We’re all set: [credit applied / appointment booked / service restored].”
- “You should see stable speeds within a few minutes.”
- “Your technician window is 10am–12pm ET.”
Exit when: Caller declines more help.
高度な会話フロー
ユースケースが複雑になるにつれて、モデルの有効性を保ちながら拡張できる構造が必要になります。重要なのは、保守性とシンプルさのバランスです。厳密に固定された状態が多すぎると、モデルに過度な負荷がかかり、性能が低下して会話も機械的になりかねません。
よりよい方法は、モデルにとって複雑さが少なくなるようにフローを設計することです。状態を構造化しつつ柔軟に扱うことで、モデルが必要なことに集中し、素早く応答しやすくなり、ユーザー体験が向上します。
複雑なシナリオを管理する一般的なパターンには、次の 2 つがあります。
- ステートマシンによる会話フロー
- session.updates による動的な会話フロー
ステートマシンによる会話フロー
状態と遷移の両方を表す JSON 構造として会話を定義します。これにより、どの範囲をカバーしているかを検討し、エッジケースを特定し、変更の履歴を追いやすくなります。コードとして保存されるため、フローの発展に合わせてバージョン管理、差分比較、拡張ができます。また、ステートマシンを使うと、会話がある状態から別の状態に移る方法とタイミングを細かく制御できます。
例
# Conversation States
[
{
"id": "1_greeting",
"description": "Begin each conversation with a warm, friendly greeting, identifying the service and offering help.",
"instructions": [
"Use the company name 'Snowy Peak Boards' and provide a warm welcome.",
"Let them know upfront that for any account-specific assistance, you’ll need some verification details."
],
"examples": [
"Hello, this is Snowy Peak Boards. Thanks for reaching out! How can I help you today?"
],
"transitions": [{
"next_step": "2_get_first_name",
"condition": "Once greeting is complete."
}, {
"next_step": "3_get_and_verify_phone",
"condition": "If the user provides their first name."
}]
},
{
"id": "2_get_first_name",
"description": "Ask for the user’s name (first name only).",
"instructions": [
"Politely ask, 'Who do I have the pleasure of speaking with?'",
"Do NOT verify or spell back the name; just accept it."
],
"examples": [
"Who do I have the pleasure of speaking with?"
],
"transitions": [{
"next_step": "3_get_and_verify_phone",
"condition": "Once name is obtained, OR name is already provided."
}]
},
{
"id": "3_get_and_verify_phone",
"description": "Request phone number and verify by repeating it back.",
"instructions": [
"Politely request the user’s phone number.",
"Once provided, confirm it by repeating each digit and ask if it’s correct.",
"If the user corrects you, confirm AGAIN to make sure you understand.",
],
"examples": [
"I'll need some more information to access your account if that's okay. May I have your phone number, please?",
"You said 0-2-1-5-5-5-1-2-3-4, correct?",
"You said 4-5-6-7-8-9-0-1-2-3, correct?"
],
"transitions": [{
"next_step": "4_authentication_DOB",
"condition": "Once phone number is confirmed"
}]
},
...動的な会話フロー
このパターンでは、現在の状態に応じてシステムプロンプトとツール一覧を更新し、会話をリアルタイムに適応させます。すべてのルールとツールを一度にモデルに提示するのではなく、会話の現在のフェーズに関係するものだけを提供します。
ある状態の終了条件を満たしたら、session.update を使って遷移し、プロンプトとツールを次のフェーズで必要なものに置き換えます。
この方法はモデルの認知負荷を軽減し、不要なコンテキストに注意をそらされることなく、複雑なタスクに取り組みやすくします。
例
from typing import Literal
State = Literal["verify", "resolve"]
# Allowed transitions
TRANSITIONS: dict[State, list[State]] = {
"verify": ["resolve"],
"resolve": [], # terminal
}
def build_state_change_tool(current: State) -> dict:
allowed = TRANSITIONS[current]
readable = ", ".join(allowed) if allowed else "no further states (terminal)"
return {
"type": "function",
"name": "set_conversation_state",
"description": (
f"Switch the conversation phase. Current: '{current}'. "
f"You may switch only to: {readable}. "
"Call this AFTER exit criteria are satisfied."
),
"parameters": {
"type": "object",
"properties": {"next_state": {"type": "string", "enum": allowed}},
"required": ["next_state"],
},
}
# Minimal business tools per state
TOOLS_BY_STATE: dict[State, list[dict]] = {
"verify": [
{
"type": "function",
"name": "lookup_account",
"description": "Fetch account by email or phone.",
"parameters": {
"type": "object",
"properties": {"email_or_phone": {"type": "string"}},
"required": ["email_or_phone"],
},
}
],
"resolve": [
{
"type": "function",
"name": "schedule_technician",
"description": "Book a technician visit.",
"parameters": {
"type": "object",
"properties": {
"account_id": {"type": "string"},
"window": {"type": "string", "enum": ["10-12 ET", "14-16 ET"]},
},
"required": ["account_id", "window"],
},
}
],
}
# Short, phase-specific instructions
INSTRUCTIONS_BY_STATE: dict[State, str] = {
"verify": (
"# Role & Objective\n"
"Verify identity to access the account.\n\n"
"# Conversation (Verify)\n"
"- Ask for the email or phone on the account.\n"
"- Read back digits one-by-one (e.g., '4-1-5… Is that correct?').\n"
"Exit when: Account ID is returned.\n"
'When exit is satisfied: call set_conversation_state(next_state="resolve").'
),
"resolve": (
"# Role & Objective\n"
"Apply a fix by booking a technician.\n\n"
"# Conversation (Resolve)\n"
"- Offer two windows: '10–12 ET' or '2–4 ET'.\n"
"- Book the chosen window.\n"
"Exit when: Appointment is confirmed.\n"
"When exit is satisfied: end the call politely."
),
}
def build_session_update(state: State) -> dict:
"""Return the JSON payload for a Realtime `session.update` event."""
return {
"type": "session.update",
"session": {
"instructions": INSTRUCTIONS_BY_STATE[state],
"tools": TOOLS_BY_STATE[state] + [build_state_change_tool(state)],
},
}安全性とエスカレーション
Realtime 音声エージェントでは、人間の担当者に確実にエスカレーションできる仕組みが重要になることがよくあります。このセクションでは、ユースケースに合わせて、いつエスカレーションするかの指示を調整してください。
- 使用する場面:人間の担当者やフォールバックシステムにエスカレーションすべきタイミングを、モデルが適切に判断できない場合
- 効果:迅速かつ確実なエスカレーションの手順と、その際に伝える内容を定義します。
- 調整方法:独自のしきい値と、モデルが伝えるべき内容を設定します。
例
# Safety & Escalation
When to escalate (no extra troubleshooting):
- Safety risk (self-harm, threats, harassment)
- User explicitly asks for a human
- Severe dissatisfaction (e.g., “extremely frustrated,” repeated complaints, profanity)
- **2** failed tool attempts on the same task **or** **3** consecutive no-match/no-input events
- Out-of-scope or restricted (e.g., real-time news, financial/legal/medical advice)
What to say at the same time as calling the escalate_to_human tool (MANDATORY):
- “Thanks for your patience—I’m connecting you with a specialist now.”
- Then call the tool: `escalate_to_human`
Examples that would require escalation:
- “This is the third time the reset didn’t work. Just get me a person.”
- “I am extremely frustrated!”最初の例は、この指示を適用した gpt-4o-realtime-preview-2025-06-03 の会話での応答を示しています。

2 つ目の例は、この指示を適用した gpt-realtime-1.5 の会話での応答です。

gpt-realtime-1.5 は指示に従い、人間へのエスカレーションをより確実に行えます。
次のステップ
GPT-Live の場合:
- バックエンドのプロンプトと、アプリケーションが管理するコンテキストについては、委任とツールを参照してください。
- WebRTC または WebSockets で接続します。電話との連携については、電話と SIP を参照してください。
- 会話の品質と検証済みのタスク成果の両面から、音声エージェントを評価してください。
Realtime の場合:
gpt-realtime-1.5のその他の例については、以前のリアルタイムのプロンプトガイドを参照してください。- 音声エージェントの代表的な動作をテストするには、Realtime 評価ガイドを参照してください。
- WebRTC、WebSockets、または SIP で接続します。
- Realtime の会話ライフサイクルを学び、Realtime のコストを確認してください。