@@ -4,65 +4,65 @@ search:
44---
55# ガイド
66
7- このガイドでは、OpenAI Agents SDK のリアルタイム機能を用いて音声対応の AI エージェントを構築する方法を詳しく説明します 。
7+ このガイドでは、OpenAI Agents SDK の realtime 機能を使用して音声対応 AI エージェントを構築する方法を詳しく解説します 。
88
9- !!! warning "ベータ機能 "
10- リアルタイム エージェントはベータ版です。実装の改善に伴い、互換性のない変更が発生する可能性があります 。
9+ !!! warning "Beta 機能 "
10+ Realtime エージェントは beta です。実装を改善するにあたり、破壊的変更が入る可能性があります 。
1111
1212## 概要
1313
14- リアルタイム エージェントは、音声とテキストの入力をリアルタイムに処理し、リアルタイム音声で応答する会話フローを可能にします 。OpenAI の Realtime API との永続的な接続を維持し、低遅延で自然な音声対話と、割り込みへの柔軟な対応を実現します 。
14+ Realtime エージェントは会話フローを可能にし、音声およびテキスト入力をリアルタイムに処理して realtime 音声で応答します 。OpenAI の Realtime API と永続的な接続を維持し、低レイテンシで自然な音声会話を実現するとともに、割り込みも適切に処理できます 。
1515
1616## アーキテクチャ
1717
18- ### 中核コンポーネント
18+ ### コアコンポーネント
1919
20- リアルタイム システムは、次の主要コンポーネントで構成されます 。
20+ realtime システムは、いくつかの主要コンポーネントで構成されます 。
2121
22- - ** RealtimeAgent** : instructions、tools、handoffs で構成されたエージェント 。
22+ - ** RealtimeAgent** : instructions、tools、handoffs で構成されたエージェントです 。
2323- ** RealtimeRunner** : 設定を管理します。` runner.run() ` を呼び出してセッションを取得できます。
24- - ** RealtimeSession** : 単一の対話セッション。通常、ユーザーが会話を開始するたびに作成し 、会話が完了するまで維持します。
25- - ** RealtimeModel** : 基盤となるモデル インターフェース(通常は OpenAI の WebSocket 実装)
24+ - ** RealtimeSession** : 単一の対話セッションです。通常は ユーザー が会話を開始するたびに 1 つ作成し 、会話が完了するまで維持します。
25+ - ** RealtimeModel** : 基盤となるモデル インターフェース(通常は OpenAI の WebSocket 実装)です。
2626
27- ### セッションの流れ
27+ ### セッションフロー
2828
29- 一般的なリアルタイム セッションは次の流れに従います 。
29+ 一般的な realtime セッションは次のフローに従います 。
3030
31- 1 . ** RealtimeAgent を作成** し、instructions、tools、handoffs を設定します 。
32- 2 . ** RealtimeRunner をセットアップ** し、エージェントと設定オプションを渡します 。
33- 3 . ** セッションを開始 ** します。 ` await runner.run() ` を使用すると RealtimeSession が返されます 。
34- 4 . ** 音声またはテキスト メッセージを送信 ** します。 ` send_audio() ` または ` send_message() ` を使用します 。
35- 5 . ** イベントをリッスン** します。セッションをイテレートしてイベント(音声出力 、文字起こし、ツール呼び出し、ハンドオフ、エラー)を受け取ります 。
36- 6 . ** 割り込みに対応 ** します。ユーザーが発話で割り込むと、現在の音声生成は自動的に停止します 。
31+ 1 . instructions、tools、handoffs を指定して ** RealtimeAgent(群) を作成** します 。
32+ 2 . エージェントと設定オプションで ** RealtimeRunner をセットアップ** します 。
33+ 3 . ` await runner.run() ` を使用して ** セッションを開始 ** すると、 RealtimeSession が返ります 。
34+ 4 . ` send_audio() ` または ` send_message() ` を使用して、セッションへ ** 音声またはテキストメッセージを送信 ** します 。
35+ 5 . セッションを反復して ** イベントをリッスン** します。イベントには音声出力 、文字起こし、ツール呼び出し、ハンドオフ、エラーが含まれます 。
36+ 6 . ユーザー がエージェントに被せて話す ** 割り込みを処理 ** します。これにより現在の音声生成が自動的に停止します 。
3737
38- セッションは会話履歴を保持し、リアルタイム モデルとの永続接続を管理します 。
38+ セッションは会話履歴を維持し、realtime モデルとの永続的な接続を管理します 。
3939
40- ## エージェントの設定
40+ ## エージェント設定
4141
42- RealtimeAgent は、通常の Agent クラスと同様に動作しますが、いくつか重要な違いがあります。完全な API 詳細は 、[ ` RealtimeAgent ` ] [ agents.realtime.agent.RealtimeAgent ] の API リファレンスをご覧ください 。
42+ RealtimeAgent は通常の Agent クラスと同様に動作しますが、いくつか重要な違いがあります。API の詳細は 、[ ` RealtimeAgent ` ] [ agents.realtime.agent.RealtimeAgent ] の API リファレンスを参照してください 。
4343
44- 通常のエージェントとの主な違い :
44+ 通常の エージェント との主な違い :
4545
46- - モデルの選択はエージェント レベルではなくセッション レベルで設定します。
47- - 構造化出力のサポートはありません (` outputType ` はサポートされません)。
48- - 音声はエージェントごとに設定できますが、最初のエージェントが発話した後は変更できません 。
49- - tools、handoffs、instructions など、その他の機能は同様に動作します 。
46+ - モデル選択はエージェント レベルではなく、セッション レベルで設定します。
47+ - structured outputs はサポートされません (` outputType ` はサポートされません)。
48+ - Voice はエージェントごとに設定できますが、最初のエージェントが話した後は変更できません 。
49+ - tools、handoffs、instructions などのその他の機能は同様に動作します 。
5050
51- ## セッションの設定
51+ ## セッション設定
5252
5353### モデル設定
5454
55- セッション設定では、基盤となるリアルタイム モデルの動作を制御できます 。モデル名(` gpt-realtime ` など)、音声の選択 (alloy、echo、fable、onyx、nova、shimmer)、サポートするモダリティ(テキストや音声)を構成できます。音声フォーマットは入力と出力の両方で設定でき、デフォルトは PCM16 です。
55+ セッション設定では、基盤となる realtime モデルの挙動を制御できます 。モデル名(` gpt-realtime ` など)、voice 選択 (alloy、echo、fable、onyx、nova、shimmer)、対応 modality(テキスト および/または 音声)を設定できます。音声フォーマットは入力・出力の両方で設定でき、既定は PCM16 です。
5656
5757### 音声設定
5858
59- 音声設定では、セッションが音声入力と出力をどのように処理するかを制御します 。Whisper などのモデルを使った入力音声の文字起こし、言語設定、ドメイン固有用語の精度向上のための文字起こしプロンプトを設定できます。応答開始/停止の検出設定では、音声活動検知のしきい値、 無音時間、検出された音声の前後パディングなどを指定できます 。
59+ 音声設定は、セッションが音声入力と出力をどのように扱うかを制御します 。Whisper などのモデルを使用した入力音声の文字起こしを設定し、言語設定を指定し、ドメイン固有の用語の精度を向上させるための文字起こしプロンプトを提供できます。ターン検出設定では、エージェントが応答を開始・停止すべきタイミングを制御し、音声アクティビティ検出の閾値、 無音時間、検出された音声の前後のパディングなどのオプションがあります 。
6060
61- ## ツールと関数
61+ ## Tools と Functions
6262
6363### ツールの追加
6464
65- 通常のエージェントと同様に、リアルタイム エージェントは会話中に実行される 関数ツール をサポートします。
65+ 通常の エージェント と同様に、realtime エージェントは会話中に実行される 関数ツール をサポートします。
6666
6767``` python
6868from agents import function_tool
@@ -90,7 +90,7 @@ agent = RealtimeAgent(
9090
9191### ハンドオフの作成
9292
93- ハンドオフにより、特化したエージェント間で会話を引き継ぐことができます 。
93+ ハンドオフにより、会話を専門 エージェント 間で移管できます 。
9494
9595``` python
9696from agents.realtime import realtime_handoff
@@ -119,22 +119,22 @@ main_agent = RealtimeAgent(
119119
120120## イベント処理
121121
122- セッションはイベントをストリーミングし、セッション オブジェクトをイテレートしてリッスンできます 。イベントには、音声出力チャンク、文字起こし結果、ツール実行の開始と終了 、エージェントのハンドオフ、エラーなどが含まれます。特に次のイベントを処理してください 。
122+ セッションはイベントをストリーミングし、セッション オブジェクトを反復することでリッスンできます 。イベントには、音声出力チャンク、文字起こし結果、ツール実行の開始・終了 、エージェントのハンドオフ、エラーが含まれます。処理すべき主要イベントは次のとおりです 。
123123
124- - ** audio** : エージェントの応答からの raw 音声データ
125- - ** audio_end** : エージェントが話し終えた
126- - ** audio_interrupted** : ユーザーがエージェントを割り込んだ
127- - ** tool_start/tool_end** : ツール実行のライフサイクル
124+ - ** audio** : エージェント応答の Raw 音声データ
125+ - ** audio_end** : エージェントの発話終了
126+ - ** audio_interrupted** : ユーザー がエージェントを割り込んだ
127+ - ** tool_start/tool_end** : ツール実行ライフサイクル
128128- ** handoff** : エージェントのハンドオフが発生
129129- ** error** : 処理中にエラーが発生
130130
131- 完全なイベントの詳細は 、[ ` RealtimeSessionEvent ` ] [ agents.realtime.events.RealtimeSessionEvent ] を参照してください。
131+ イベントの完全な詳細は 、[ ` RealtimeSessionEvent ` ] [ agents.realtime.events.RealtimeSessionEvent ] を参照してください。
132132
133133## ガードレール
134134
135- リアルタイム エージェントでサポートされるのは出力 ガードレール のみです。パフォーマンス問題を避けるため、これらのガードレールは(単語ごとではなく)定期的にデバウンスして実行されます。デフォルトのデバウンス長は 100 文字ですが、設定可能です。
135+ realtime エージェントでは出力ガードレールのみがサポートされます。これらのガードレールはデバウンスされ、リアルタイム生成中のパフォーマンス問題を避けるため、(各単語ごとではなく)定期的に実行されます。既定のデバウンス長は 100 文字ですが、設定可能です。
136136
137- ガードレールは ` RealtimeAgent ` に直接アタッチするか 、セッションの ` run_config ` で提供できます。両方のソースからのガードレールは併せて実行されます 。
137+ ガードレールは ` RealtimeAgent ` に直接付与するか 、セッションの ` run_config ` 経由で提供できます。両方のソースのガードレールが一緒に実行されます 。
138138
139139``` python
140140from agents.guardrail import GuardrailFunctionOutput, OutputGuardrail
@@ -152,19 +152,19 @@ agent = RealtimeAgent(
152152)
153153```
154154
155- ガードレールが発火すると、 ` guardrail_tripped ` イベントが生成され、エージェントの現在の応答を中断できます。デバウンス動作は、安全性とリアルタイム性能要件のバランスを取るのに役立ちます 。テキスト エージェントと異なり、リアルタイム エージェントはガードレールが発火しても ** Exception ** を送出しません 。
155+ ガードレールがトリガーされると ` guardrail_tripped ` イベントが生成され、エージェントの現在の応答を割り込めます。デバウンスの挙動は、安全性とリアルタイムのパフォーマンス要件のバランスを取るのに役立ちます 。テキスト エージェント と異なり、realtime エージェントではガードレールがトリップしても Exception は ** 送出されません ** 。
156156
157157## 音声処理
158158
159- [ ` session.send_audio(audio_bytes) ` ] [ agents.realtime.session.RealtimeSession.send_audio ] を使って音声を送信するか 、[ ` session.send_message() ` ] [ agents.realtime.session.RealtimeSession.send_message ] を使ってテキストを送信します 。
159+ [ ` session.send_audio(audio_bytes) ` ] [ agents.realtime.session.RealtimeSession.send_audio ] を使用して音声をセッションへ送信するか 、[ ` session.send_message() ` ] [ agents.realtime.session.RealtimeSession.send_message ] を使用してテキストを送信します 。
160160
161- 音声出力については、` audio ` イベントをリッスンし、任意の音声ライブラリで再生してください。ユーザーがエージェントを割り込んだ場合にすぐに再生を停止し、キュー済みの音声をクリアするため 、` audio_interrupted ` イベントを必ず監視してください 。
161+ 音声出力については、` audio ` イベントをリッスンし、お使いの音声ライブラリで音声データを再生してください。ユーザー がエージェントを割り込んだときに直ちに再生を停止し、キューに溜まった音声をクリアできるよう 、` audio_interrupted ` イベントも必ずリッスンしてください 。
162162
163163## SIP 連携
164164
165- [ Realtime Calls API] ( https://platform.openai.com/docs/guides/realtime-sip ) 経由で着信する電話にリアルタイム エージェントを接続できます 。SDK は [ ` OpenAIRealtimeSIPModel ` ] [ agents.realtime.openai_realtime.OpenAIRealtimeSIPModel ] を提供しており、SIP 上でメディアをネゴシエーションしながら同じエージェント フローを再利用します 。
165+ [ Realtime Calls API] ( https://platform.openai.com/docs/guides/realtime-sip ) 経由で着信する電話に realtime エージェントを紐付けられます 。SDK は [ ` OpenAIRealtimeSIPModel ` ] [ agents.realtime.openai_realtime.OpenAIRealtimeSIPModel ] を提供しており、SIP でメディアをネゴシエートしつつ同じエージェントフローを再利用します 。
166166
167- 使用するには、モデル インスタンスを runner に渡し 、セッション開始時に SIP の ` call_id ` を指定します。コール ID は、着信を通知する webhook によって渡されます 。
167+ 使用するには、runner にモデル インスタンスを渡し 、セッション開始時に SIP の ` call_id ` を指定します。call ID は着信を通知する webhook により配信されます 。
168168
169169``` python
170170from agents.realtime import RealtimeAgent, RealtimeRunner
@@ -187,19 +187,32 @@ async with await runner.run(
187187 ...
188188```
189189
190- 発信者が電話を切ると、 SIP セッションは終了し、リアルタイム接続は自動的にクローズされます。完全なテレフォニーの例は 、[ ` examples/realtime/twilio_sip ` ] ( https://github.com/openai/openai-agents-python/tree/main/examples/realtime/twilio_sip ) を参照してください。
190+ 発信者が電話を切ると SIP セッションが終了し、realtime 接続は自動的にクローズされます。完全な電話連携の例は 、[ ` examples/realtime/twilio_sip ` ] ( https://github.com/openai/openai-agents-python/tree/main/examples/realtime/twilio_sip ) を参照してください。
191191
192192## モデルへの直接アクセス
193193
194- 基盤となるモデルにアクセスして、カスタム リスナーを追加したり高度な操作を実行したりできます 。
194+ 基盤となるモデルにアクセスして、カスタム リスナーを追加したり高度な操作を行ったりできます 。
195195
196196``` python
197197# Add a custom listener to the model
198198session.model.add_listener(my_custom_listener)
199199```
200200
201- これにより、接続を低レベルに制御する必要がある高度なユースケース向けに 、[ ` RealtimeModel ` ] [ agents.realtime.model.RealtimeModel ] インターフェースへ直接アクセスできます。
201+ これにより、接続に対するより低レベルの制御が必要となる高度なユースケース向けに 、[ ` RealtimeModel ` ] [ agents.realtime.model.RealtimeModel ] インターフェースへ直接アクセスできます。
202202
203- ## コード例
203+ ## 例
204204
205- 完全に動作するコード例は、[ examples/realtime ディレクトリ] ( https://github.com/openai/openai-agents-python/tree/main/examples/realtime ) を参照してください。UI コンポーネントの有無それぞれのデモが含まれています。
205+ UI コンポーネントあり・なしのデモを含む、動作する完全な例については、[ examples/realtime directory] ( https://github.com/openai/openai-agents-python/tree/main/examples/realtime ) を参照してください。
206+
207+ ## Azure OpenAI エンドポイント形式
208+
209+ Azure OpenAI に接続する際は、GA Realtime のエンドポイント形式を使用し、` model_config ` の headers で認証情報を渡してください。
210+
211+ ``` python
212+ model_config = {
213+ " url" : " wss://<your-resource>.openai.azure.com/openai/v1/realtime?model=<deployment-name>" ,
214+ " headers" : {" api-key" : " <your-azure-api-key>" },
215+ }
216+ ```
217+
218+ トークンベースの auth では、` headers ` に ` {"authorization": f"Bearer {token}"} ` を使用してください。
0 commit comments