From 7e1aaf8df6a689de48e1339451ed3b4ddbd119ae Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 3 Sep 2025 21:33:52 +0000 Subject: [PATCH] Update all translated document pages --- docs/ja/agents.md | 103 +++++++++++++++++-------- docs/ja/config.md | 18 ++--- docs/ja/context.md | 42 +++++------ docs/ja/examples.md | 33 +++++---- docs/ja/guardrails.md | 28 +++---- docs/ja/handoffs.md | 36 ++++----- docs/ja/index.md | 36 ++++----- docs/ja/mcp.md | 48 ++++++------ docs/ja/models/index.md | 86 ++++++++++----------- docs/ja/models/litellm.md | 14 ++-- docs/ja/multi_agent.md | 44 +++++------ docs/ja/quickstart.md | 34 ++++----- docs/ja/realtime/guide.md | 88 +++++++++++----------- docs/ja/realtime/quickstart.md | 22 +++--- docs/ja/release.md | 18 ++--- docs/ja/repl.md | 7 +- docs/ja/results.md | 40 +++++----- docs/ja/running_agents.md | 68 ++++++++--------- docs/ja/sessions.md | 64 ++++++++++------ docs/ja/streaming.md | 14 ++-- docs/ja/tools.md | 98 ++++++++++++------------ docs/ja/tracing.md | 132 ++++++++++++++++----------------- docs/ja/usage.md | 34 ++++----- docs/ja/visualization.md | 41 +++++----- docs/ja/voice/pipeline.md | 26 +++---- docs/ja/voice/quickstart.md | 14 ++-- docs/ja/voice/tracing.md | 16 ++-- 27 files changed, 634 insertions(+), 570 deletions(-) diff --git a/docs/ja/agents.md b/docs/ja/agents.md index e26156bc5..5e371b584 100644 --- a/docs/ja/agents.md +++ b/docs/ja/agents.md @@ -4,16 +4,16 @@ search: --- # エージェント -エージェントはアプリの中核となる基本コンポーネントです。エージェントは instructions と tools で構成された大規模言語モデル( LLM )です。 +エージェントはアプリの中核となる基本コンポーネントです。エージェントは、instructions とツールで設定された大規模言語モデル(LLM)です。 -## 基本構成 +## 基本設定 -設定で最も一般的に指定するエージェントのプロパティは次のとおりです。 +エージェントで最も一般的に設定するプロパティは次のとおりです。 -- `name`: エージェントを識別する必須の文字列。 -- `instructions`: developer メッセージ、または system prompt とも呼ばれます。 -- `model`: 使用する LLM と、temperature、top_p などのモデル調整用 `model_settings`(任意)。 -- `tools`: エージェントがタスク達成のために使用できるツール。 +- `name`: エージェントを識別する必須の文字列です。 +- `instructions`: developer メッセージまたは システムプロンプト とも呼ばれます。 +- `model`: 使用する LLM と、temperature、top_p などのモデル調整パラメーターを設定する任意の `model_settings`。 +- `tools`: エージェントがタスクを達成するために使用できるツールです。 ```python from agents import Agent, ModelSettings, function_tool @@ -33,7 +33,7 @@ agent = Agent( ## コンテキスト -エージェントは `context` 型に対してジェネリックです。コンテキストは依存性注入ツールです。あなたが作成して `Runner.run()` に渡すオブジェクトで、すべてのエージェント、ツール、ハンドオフなどに渡され、エージェントの実行における依存関係と状態の入れ物として機能します。任意の Python オブジェクトを context として提供できます。 +エージェントはその `context` 型に対してジェネリックです。コンテキストは依存性注入のためのツールで、あなたが作成して `Runner.run()` に渡すオブジェクトです。これはすべてのエージェント、ツール、ハンドオフなどに渡され、エージェント実行のための依存関係や状態をまとめて保持します。任意の Python オブジェクトをコンテキストとして提供できます。 ```python @dataclass @@ -52,7 +52,7 @@ agent = Agent[UserContext]( ## 出力タイプ -デフォルトでは、エージェントはプレーンテキスト(つまり `str`)を出力します。特定の型で出力させたい場合は、`output_type` パラメーターを使用できます。一般的な選択肢としては [Pydantic](https://docs.pydantic.dev/) オブジェクトがありますが、Pydantic の [TypeAdapter](https://docs.pydantic.dev/latest/api/type_adapter/) でラップできる任意の型(dataclasses、lists、TypedDict など)をサポートします。 +デフォルトでは、エージェントはプレーンテキスト(つまり `str`)の出力を生成します。特定のタイプの出力をエージェントに生成させたい場合は、`output_type` パラメーターを使用できます。一般的な選択肢は [Pydantic](https://docs.pydantic.dev/) オブジェクトの使用ですが、Pydantic の [TypeAdapter](https://docs.pydantic.dev/latest/api/type_adapter/) でラップできる任意の型(dataclasses、lists、TypedDict など)をサポートします。 ```python from pydantic import BaseModel @@ -75,9 +75,47 @@ agent = Agent( `output_type` を渡すと、モデルは通常のプレーンテキスト応答ではなく [structured outputs](https://platform.openai.com/docs/guides/structured-outputs) を使用するよう指示されます。 -## ハンドオフ +## マルチエージェントシステムの設計パターン -ハンドオフは、エージェントが委譲できるサブエージェントです。ハンドオフのリストを提供すると、エージェントは関連がある場合にそれらへ委譲できます。これは、単一タスクに特化したモジュール型のエージェントをオーケストレーションする強力なパターンです。詳しくは [ハンドオフ](handoffs.md) のドキュメントを参照してください。 +マルチエージェントシステムの設計方法は多数ありますが、一般的に適用できるパターンとして次の 2 つがよく見られます。 + +1. マネージャー(ツールとしてのエージェント): 中央のマネージャー/オーケストレーターが、ツールとして公開された専門のサブエージェントを呼び出し、会話の制御を保持します。 +2. ハンドオフ: ピアのエージェントが、会話を引き継ぐ専門のエージェントに制御を引き渡します。これは分散型です。 + +詳細は [エージェント構築の実践ガイド](https://cdn.openai.com/business-guides-and-resources/a-practical-guide-to-building-agents.pdf) を参照してください。 + +### マネージャー(ツールとしてのエージェント) + +`customer_facing_agent` はすべてのユーザーとのやり取りを処理し、ツールとして公開された専門のサブエージェントを呼び出します。詳細は [ツール](tools.md#agents-as-tools) ドキュメントを参照してください。 + +```python +from agents import Agent + +booking_agent = Agent(...) +refund_agent = Agent(...) + +customer_facing_agent = Agent( + name="Customer-facing agent", + instructions=( + "Handle all direct user communication. " + "Call the relevant tools when specialized expertise is needed." + ), + tools=[ + booking_agent.as_tool( + tool_name="booking_expert", + tool_description="Handles booking questions and requests.", + ), + refund_agent.as_tool( + tool_name="refund_expert", + tool_description="Handles refund questions and requests.", + ) + ], +) +``` + +### ハンドオフ + +ハンドオフは、エージェントが委譲できるサブエージェントです。ハンドオフが発生すると、委譲先のエージェントは会話履歴を受け取り、会話を引き継ぎます。このパターンにより、単一のタスクに優れたモジュール式で専門的なエージェントが可能になります。詳細は [ハンドオフ](handoffs.md) ドキュメントを参照してください。 ```python from agents import Agent @@ -88,9 +126,9 @@ refund_agent = Agent(...) triage_agent = Agent( name="Triage agent", instructions=( - "Help the user with their questions." - "If they ask about booking, handoff to the booking agent." - "If they ask about refunds, handoff to the refund agent." + "Help the user with their questions. " + "If they ask about booking, hand off to the booking agent. " + "If they ask about refunds, hand off to the refund agent." ), handoffs=[booking_agent, refund_agent], ) @@ -98,7 +136,7 @@ triage_agent = Agent( ## 動的 instructions -多くの場合、エージェント作成時に instructions を指定できますが、関数を使って動的に提供することも可能です。この関数はエージェントと context を受け取り、プロンプトを返す必要があります。通常の関数と `async` 関数の両方が使用できます。 +多くの場合、エージェントを作成するときに instructions を指定できます。ただし、関数を介して動的な instructions を提供することもできます。この関数はエージェントとコンテキストを受け取り、プロンプトを返す必要があります。通常の関数と `async` 関数の両方が使用可能です。 ```python def dynamic_instructions( @@ -115,15 +153,15 @@ agent = Agent[UserContext]( ## ライフサイクルイベント(フック) -エージェントのライフサイクルを観測したいことがあります。たとえば、イベントをログに記録したり、特定のイベント発生時にデータを事前取得したりするなどです。`hooks` プロパティでエージェントのライフサイクルにフックできます。[`AgentHooks`][agents.lifecycle.AgentHooks] クラスをサブクラス化し、関心のあるメソッドをオーバーライドしてください。 +場合によっては、エージェントのライフサイクルを観測したいことがあります。たとえば、イベントをログに記録したり、特定のイベントが発生したときにデータを事前取得したりできます。`hooks` プロパティでエージェントのライフサイクルにフックできます。[`AgentHooks`][agents.lifecycle.AgentHooks] クラスをサブクラス化し、関心のあるメソッドをオーバーライドしてください。 ## ガードレール -ガードレールにより、エージェントの実行と並行してユーザー入力に対するチェック/バリデーションを行い、出力が生成された後にはエージェントの出力に対しても実行できます。たとえば、ユーザー入力やエージェント出力の関連性をスクリーニングできます。詳しくは [ガードレール](guardrails.md) のドキュメントを参照してください。 +ガードレールにより、エージェントの実行と並行してユーザー入力に対するチェック/検証を実行し、エージェントの出力が生成された後にも実行できます。たとえば、ユーザーの入力とエージェントの出力が関連するかどうかをスクリーニングできます。詳細は [ガードレール](guardrails.md) ドキュメントを参照してください。 ## エージェントのクローン/コピー -エージェントの `clone()` メソッドを使用すると、エージェントを複製し、任意のプロパティを変更できます。 +エージェントの `clone()` メソッドを使用すると、エージェントを複製し、必要に応じて任意のプロパティを変更できます。 ```python pirate_agent = Agent( @@ -140,12 +178,12 @@ robot_agent = pirate_agent.clone( ## ツール使用の強制 -ツールのリストを提供しても、LLM が必ずしもツールを使うとは限りません。[`ModelSettings.tool_choice`][agents.model_settings.ModelSettings.tool_choice] を設定することでツール使用を強制できます。指定可能な値は次のとおりです。 +ツールのリストを提供しても、LLM が必ずしもツールを使用するとは限りません。[`ModelSettings.tool_choice`][agents.model_settings.ModelSettings.tool_choice] を設定して、ツール使用を強制できます。有効な値は次のとおりです。 -1. `auto`: ツールを使用するかどうかを LLM に委ねます。 -2. `required`: ツールの使用を必須にします(どのツールを使うかは賢く選択されます)。 -3. `none`: ツールを使用しないことを必須にします。 -4. 特定の文字列(例: `my_tool`)を設定: その特定のツールを必ず使用させます。 +1. `auto`: LLM がツールを使用するかどうかを判断します。 +2. `required`: LLM にツールの使用を要求します(ただし、どのツールを使うかは賢く判断できます)。 +3. `none`: LLM にツールを使用しないことを要求します。 +4. 特定の文字列(例: `my_tool`)を設定すると、LLM にその特定のツールを使用することを要求します。 ```python from agents import Agent, Runner, function_tool, ModelSettings @@ -159,15 +197,16 @@ agent = Agent( name="Weather Agent", instructions="Retrieve weather details.", tools=[get_weather], - model_settings=ModelSettings(tool_choice="get_weather") + model_settings=ModelSettings(tool_choice="get_weather") ) ``` -## ツール使用の動作 +## ツール使用の挙動 + +`Agent` の `tool_use_behavior` パラメーターは、ツール出力の扱いを制御します。 -`Agent` 構成の `tool_use_behavior` パラメーターは、ツール出力の扱い方を制御します。 -- `"run_llm_again"`: デフォルト。ツールを実行し、その結果を LLM が処理して最終応答を生成します。 -- `"stop_on_first_tool"`: 最初のツール呼び出しの出力を、その後の LLM 処理なしで最終応答として使用します。 +- `"run_llm_again"`: デフォルト。ツールが実行され、LLM が結果を処理して最終応答を生成します。 +- `"stop_on_first_tool"`: 最初のツール呼び出しの出力を、追加の LLM 処理なしで最終応答として使用します。 ```python from agents import Agent, Runner, function_tool, ModelSettings @@ -185,7 +224,8 @@ agent = Agent( ) ``` -- `StopAtTools(stop_at_tool_names=[...])`: 指定したいずれかのツールが呼び出されたら停止し、その出力を最終応答として使用します。 +- `StopAtTools(stop_at_tool_names=[...])`: 指定したいずれかのツールが呼び出された時点で停止し、その出力を最終応答として使用します。 + ```python from agents import Agent, Runner, function_tool from agents.agent import StopAtTools @@ -207,7 +247,8 @@ agent = Agent( tool_use_behavior=StopAtTools(stop_at_tool_names=["get_weather"]) ) ``` -- `ToolsToFinalOutputFunction`: ツール結果を処理し、停止するか LLM を継続するかを決定するカスタム関数。 + +- `ToolsToFinalOutputFunction`: ツール結果を処理し、停止するか LLM を続行するかを決定するカスタム関数です。 ```python from agents import Agent, Runner, function_tool, FunctionToolResult, RunContextWrapper @@ -245,4 +286,4 @@ agent = Agent( !!! note - 無限ループを防ぐため、フレームワークはツール呼び出し後に `tool_choice` を自動的に "auto" にリセットします。この挙動は [`agent.reset_tool_choice`][agents.agent.Agent.reset_tool_choice] で設定できます。無限ループは、ツール結果が LLM に送られ、`tool_choice` により LLM が再びツール呼び出しを生成し続けるために発生します。 \ No newline at end of file + 無限ループを防ぐため、フレームワークはツール呼び出し後に `tool_choice` を自動的に "auto" にリセットします。この挙動は [`agent.reset_tool_choice`][agents.agent.Agent.reset_tool_choice] で設定できます。無限ループの原因は、ツール結果が LLM に送られ、`tool_choice` により LLM が再度ツール呼び出しを生成し続けてしまうためです。 \ No newline at end of file diff --git a/docs/ja/config.md b/docs/ja/config.md index 410b55602..b520f3bd1 100644 --- a/docs/ja/config.md +++ b/docs/ja/config.md @@ -6,7 +6,7 @@ search: ## API キーとクライアント -デフォルトで、SDK はインポートされるとすぐに、LLM リクエストおよび トレーシング 用の `OPENAI_API_KEY` 環境変数を探します。アプリ起動前にその環境変数を設定できない場合は、[set_default_openai_key()][agents.set_default_openai_key] 関数でキーを設定できます。 +デフォルトでは、SDK はインポートされた直後から、LLM リクエストと トレーシング 用に `OPENAI_API_KEY` 環境変数を探します。アプリ起動前にその環境変数を設定できない場合は、[set_default_openai_key()][agents.set_default_openai_key] 関数でキーを設定できます。 ```python from agents import set_default_openai_key @@ -14,7 +14,7 @@ from agents import set_default_openai_key set_default_openai_key("sk-...") ``` -また、使用する OpenAI クライアントを設定することもできます。デフォルトでは、SDK は環境変数または上記で設定したデフォルトキーから API キーを使用して `AsyncOpenAI` インスタンスを作成します。これを変更するには、[set_default_openai_client()][agents.set_default_openai_client] 関数を使用します。 +また、使用する OpenAI クライアントを設定することもできます。デフォルトでは、SDK は環境変数または上記で設定したデフォルトキーを使って `AsyncOpenAI` インスタンスを作成します。これを変更するには、[set_default_openai_client()][agents.set_default_openai_client] 関数を使用します。 ```python from openai import AsyncOpenAI @@ -24,7 +24,7 @@ custom_client = AsyncOpenAI(base_url="...", api_key="...") set_default_openai_client(custom_client) ``` -最後に、使用する OpenAI API をカスタマイズすることもできます。デフォルトでは OpenAI Responses API を使用します。[set_default_openai_api()][agents.set_default_openai_api] 関数を使って、Chat Completions API を使用するように上書きできます。 +最後に、使用する OpenAI API をカスタマイズすることもできます。デフォルトでは OpenAI Responses API を使用します。これを上書きして Chat Completions API を使うには、[set_default_openai_api()][agents.set_default_openai_api] 関数を使用します。 ```python from agents import set_default_openai_api @@ -34,7 +34,7 @@ set_default_openai_api("chat_completions") ## トレーシング -トレーシング はデフォルトで有効です。デフォルトでは上記の OpenAI API キー(すなわち環境変数、または設定したデフォルトキー)を使用します。トレーシング に使用する API キーを個別に設定するには、[`set_tracing_export_api_key`][agents.set_tracing_export_api_key] 関数を使用します。 +トレーシング はデフォルトで有効です。デフォルトでは、上記の OpenAI API キー(つまり、環境変数または設定したデフォルトキー)を使用します。トレーシング に使用する API キーを個別に設定するには、[`set_tracing_export_api_key`][agents.set_tracing_export_api_key] 関数を使用します。 ```python from agents import set_tracing_export_api_key @@ -52,9 +52,9 @@ set_tracing_disabled(True) ## デバッグログ -SDK には、ハンドラーが設定されていない Python ロガーが 2 つあります。デフォルトでは、警告とエラーは `stdout` に送られ、その他のログは抑制されます。 +SDK にはハンドラー未設定の Python ロガーが 2 つあります。デフォルトでは、警告とエラーは `stdout` に送られ、それ以外のログは抑制されます。 -詳細なログ出力を有効にするには、[`enable_verbose_stdout_logging()`][agents.enable_verbose_stdout_logging] 関数を使用します。 +詳細なログを有効にするには、[`enable_verbose_stdout_logging()`][agents.enable_verbose_stdout_logging] 関数を使用します。 ```python from agents import enable_verbose_stdout_logging @@ -62,7 +62,7 @@ from agents import enable_verbose_stdout_logging enable_verbose_stdout_logging() ``` -また、ハンドラー、フィルター、フォーマッターなどを追加してログをカスタマイズできます。詳細は [Python logging ガイド](https://docs.python.org/3/howto/logging.html)を参照してください。 +また、ハンドラー、フィルター、フォーマッターなどを追加してログをカスタマイズできます。詳細は [Python logging guide](https://docs.python.org/3/howto/logging.html) を参照してください。 ```python import logging @@ -81,9 +81,9 @@ logger.setLevel(logging.WARNING) logger.addHandler(logging.StreamHandler()) ``` -### ログ内の機微データ +### ログ内の機微情報 -一部のログには機微なデータ(例: ユーザー データ)が含まれる場合があります。これらのデータをログ出力しないようにするには、次の環境変数を設定します。 +一部のログには機微情報(例: ユーザー データ)が含まれる場合があります。これらのデータがログに出力されないようにするには、以下の環境変数を設定してください。 LLM の入力および出力のログを無効化するには: diff --git a/docs/ja/context.md b/docs/ja/context.md index b18e8cae1..1dd8d54d0 100644 --- a/docs/ja/context.md +++ b/docs/ja/context.md @@ -4,30 +4,30 @@ search: --- # コンテキスト管理 -コンテキストは多義的な用語です。主に次の 2 つのクラスのコンテキストがあります。 +コンテキストという語は多義的です。考慮すべきコンテキストには主に 2 つのクラスがあります。 -1. コードでローカルに利用可能なコンテキスト: これは、ツール関数の実行時、`on_handoff` のようなコールバック内、ライフサイクルフック内などで必要となるデータや依存関係です。 -2. LLM に対して利用可能なコンテキスト: これは、応答を生成するときに LLM が参照できるデータです。 +1. コードからローカルに利用できるコンテキスト: これは、ツール関数の実行時、`on_handoff` のようなコールバック中、ライフサイクルフック内などで必要になる可能性のあるデータや依存関係です。 +2. LLM に利用可能なコンテキスト: これは、応答生成時に LLM が参照できるデータです。 ## ローカルコンテキスト -これは [`RunContextWrapper`][agents.run_context.RunContextWrapper] クラスと、その中の [`context`][agents.run_context.RunContextWrapper.context] プロパティを通じて表現されます。仕組みは次のとおりです。 +これは [`RunContextWrapper`][agents.run_context.RunContextWrapper] クラスと、その中の [`context`][agents.run_context.RunContextWrapper.context] プロパティで表されます。動作は次のとおりです。 -1. 任意の Python オブジェクトを作成します。一般的なパターンとしては、dataclass や Pydantic オブジェクトを使います。 -2. そのオブジェクトをさまざまな実行メソッドに渡します(例: `Runner.run(..., **context=whatever**)`)。 -3. すべてのツール呼び出し、ライフサイクルフックなどに、`RunContextWrapper[T]` というラッパーオブジェクトが渡されます。ここで `T` はコンテキストオブジェクトの型を表し、`wrapper.context` 経由でアクセスできます。 +1. 任意の Python オブジェクトを作成します。一般的なパターンとしては、dataclass や Pydantic オブジェクトを用います。 +2. そのオブジェクトを各種の実行メソッド(例: `Runner.run(..., **context=whatever**)`)に渡します。 +3. すべてのツール呼び出しやライフサイクルフックなどには、`RunContextWrapper[T]` というラッパーオブジェクトが渡されます。ここで `T` はコンテキストオブジェクトの型で、`wrapper.context` からアクセスできます。 -最も **重要** な注意点: あるエージェント実行においては、そのエージェント、ツール関数、ライフサイクルなどのすべてで、同じ型のコンテキストを使う必要があります。 +最も **重要** な点: あるエージェント実行に関わるすべてのエージェント、ツール関数、ライフサイクルなどは、同じコンテキストの型を使用しなければなりません。 コンテキストは次のような用途に使えます: -- 実行のためのコンテキストデータ(例: ユーザー名/uid など、ユーザーに関する情報) -- 依存関係(例: ロガーオブジェクト、データフェッチャーなど) -- ヘルパー関数 +- 実行のための状況依存データ(例: ユーザー名/uid やその他のユーザー情報) +- 依存関係(例: ロガーオブジェクト、データ取得クラスなど) +- ヘルパー関数 -!!! danger "Note" +!!! danger "注意" - コンテキストオブジェクトは LLM には送信されません。これは純粋にローカルなオブジェクトであり、読み書きやメソッド呼び出しが可能です。 + コンテキストオブジェクトは LLM に **送信されません**。これは純粋にローカルなオブジェクトであり、読み書きやメソッド呼び出しが可能です。 ```python import asyncio @@ -67,16 +67,16 @@ if __name__ == "__main__": ``` 1. これはコンテキストオブジェクトです。ここでは dataclass を使用していますが、任意の型を使えます。 -2. これはツールです。`RunContextWrapper[UserInfo]` を受け取ることが分かります。ツールの実装はコンテキストから読み取ります。 -3. ジェネリクスの `UserInfo` をエージェントに付与し、型チェッカーがエラーを検出できるようにします(たとえば、異なるコンテキスト型を受け取るツールを渡そうとした場合など)。 +2. これはツールです。`RunContextWrapper[UserInfo]` を受け取ることがわかります。ツールの実装はコンテキストから読み取ります。 +3. 型チェッカーでエラーを検出できるよう、エージェントにジェネリックの `UserInfo` を付けます(たとえば、異なるコンテキスト型を受け取るツールを渡そうとした場合など)。 4. コンテキストは `run` 関数に渡されます。 5. エージェントはツールを正しく呼び出し、年齢を取得します。 -## エージェント/ LLM のコンテキスト +## エージェント/LLM のコンテキスト -LLM が呼び出されると、参照できるデータは会話履歴にあるものだけです。したがって、新しいデータを LLM に利用可能にしたい場合は、その履歴で参照できるようにする必要があります。これには次の方法があります。 +LLM が呼び出されると、参照できるデータは会話履歴にあるもの **のみ** です。したがって、LLM に新しいデータを利用可能にしたい場合は、その履歴で参照できる形で提供する必要があります。これにはいくつかの方法があります。 -1. エージェントの `instructions` に追加します。これは「システムプロンプト」または「開発者メッセージ」とも呼ばれます。システムプロンプトは静的な文字列でも、コンテキストを受け取って文字列を出力する動的関数でも構いません。これは常に有用な情報(例: ユーザー名や現在の日付)に適した一般的な手法です。 -2. `Runner.run` 関数を呼び出すときに `input` に追加します。これは `instructions` の手法に似ていますが、[指揮系統](https://cdn.openai.com/spec/model-spec-2024-05-08.html#follow-the-chain-of-command) の下位にメッセージを配置できます。 -3. 関数ツールを通じて公開します。これはオンデマンドなコンテキストに有用です。LLM が必要になったときにデータを取得するためにツールを呼び出せます。 -4. リトリーバルまたは Web 検索を使用します。これらは、ファイルやデータベース(リトリーバル)または Web(Web 検索)から関連データを取得できる特別なツールです。これは、関連するコンテキストデータに応答を「グラウンディング」するのに有用です。 \ No newline at end of file +1. エージェントの `instructions` に追加します。これは "system prompt" や "developer message" とも呼ばれます。system prompt は静的な文字列でも、コンテキストを受け取って文字列を出力する動的関数でも構いません。これは常に有用な情報(例: ユーザーの名前や現在の日付)に一般的な手法です。 +2. `Runner.run` 関数を呼び出すときの `input` に追加します。これは `instructions` の手法に似ていますが、[指揮系統](https://cdn.openai.com/spec/model-spec-2024-05-08.html#follow-the-chain-of-command)の下位に位置するメッセージを持てます。 +3. 関数ツールで公開します。これはオンデマンドのコンテキストに有用です。LLM が必要に応じてデータ取得を判断し、ツールを呼び出してそのデータを取得できます。 +4. リトリーバルや Web 検索を使用します。これらは、ファイルやデータベース(リトリーバル)または Web(Web 検索)から関連データを取得できる特別なツールです。これは、応答を関連する文脈データで「グラウンディング」するのに有用です。 \ No newline at end of file diff --git a/docs/ja/examples.md b/docs/ja/examples.md index af72fd700..9e51aa9d8 100644 --- a/docs/ja/examples.md +++ b/docs/ja/examples.md @@ -4,45 +4,46 @@ search: --- # コード例 -リポジトリの [リポジトリ](https://github.com/openai/openai-agents-python/tree/main/examples) の examples セクションで、 SDK の多様なサンプル実装をご覧ください。これらのコード例は、さまざまなパターンや機能を示す複数のカテゴリーに整理されています。 +[repo](https://github.com/openai/openai-agents-python/tree/main/examples) の examples セクションで、SDK の多様なサンプル実装をご覧ください。これらのコード例は、さまざまなパターンや機能を示す複数の カテゴリー に整理されています。 ## カテゴリー - **[agent_patterns](https://github.com/openai/openai-agents-python/tree/main/examples/agent_patterns):** - このカテゴリーのコード例は、一般的なエージェントの設計パターンを示します。たとえば次のとおりです。 + このカテゴリーの例では、次のような一般的な エージェント の設計パターンを示します - - 決定的なワークフロー - - ツールとしてのエージェント - - エージェントの並列実行 + - 決定論的なワークフロー + - ツールとしての エージェント + - エージェント の並列実行 - **[basic](https://github.com/openai/openai-agents-python/tree/main/examples/basic):** - これらのコード例は、 SDK の基礎的な機能を紹介します。たとえば次のとおりです。 + このカテゴリーの例では、SDK の基礎的な機能を示します - - 動的な system prompts + - 動的な system prompt - ストリーミング出力 - ライフサイクルイベント -- **[ツールのコード例](https://github.com/openai/openai-agents-python/tree/main/examples/tools):** - Web 検索やファイル検索などの OpenAI がホストするツールの実装方法を学び、エージェントに統合する方法を理解できます。 +- **[tool examples](https://github.com/openai/openai-agents-python/tree/main/examples/tools):** + Web 検索 や ファイル検索 などの OpenAI がホストするツール の実装方法を学び、 + それらを エージェント に統合します。 - **[model providers](https://github.com/openai/openai-agents-python/tree/main/examples/model_providers):** - OpenAI 以外のモデルを SDK で使う方法を学べます。 + SDK で OpenAI 以外のモデルを使用する方法を探ります。 - **[handoffs](https://github.com/openai/openai-agents-python/tree/main/examples/handoffs):** - エージェントのハンドオフの実用的なコード例をご覧ください。 + エージェント のハンドオフの実用的な例をご覧ください。 - **[mcp](https://github.com/openai/openai-agents-python/tree/main/examples/mcp):** - MCP を使ってエージェントを構築する方法を学べます。 + MCP で エージェント を構築する方法を学びます。 - **[customer_service](https://github.com/openai/openai-agents-python/tree/main/examples/customer_service)** と **[research_bot](https://github.com/openai/openai-agents-python/tree/main/examples/research_bot):** - 実運用を想定した 2 つのより作り込まれたコード例です。 + 実運用での活用を想定した、さらに作り込まれた 2 つのコード例 - **customer_service**: 航空会社向けのカスタマーサービスシステムの例。 - - **research_bot**: シンプルなディープリサーチのクローン。 + - **research_bot**: シンプルな ディープリサーチ のクローン。 - **[voice](https://github.com/openai/openai-agents-python/tree/main/examples/voice):** - TTS と STT のモデルを使った音声エージェントのコード例です。 + 当社の TTS および STT モデルを使った音声 エージェント のコード例をご覧ください。 - **[realtime](https://github.com/openai/openai-agents-python/tree/main/examples/realtime):** - SDK を使ってリアルタイム体験を構築する方法を示すコード例です。 \ No newline at end of file + SDK を使用してリアルタイム体験を構築する方法を示すコード例。 \ No newline at end of file diff --git a/docs/ja/guardrails.md b/docs/ja/guardrails.md index 3f224d532..fb98e3c99 100644 --- a/docs/ja/guardrails.md +++ b/docs/ja/guardrails.md @@ -4,44 +4,44 @@ search: --- # ガードレール -ガードレールはエージェントと _並行して_ 実行され、ユーザー入力のチェックや検証を行います。例えば、顧客からのリクエストに対応するために非常に賢い(つまり遅く/高価な)モデルを使うエージェントがあるとします。悪意のあるユーザーに、数学の宿題を手伝うようにそのモデルへ依頼させたくはありません。そのために、より高速/低コストのモデルでガードレールを走らせることができます。ガードレールが悪意のある利用を検出した場合、即座にエラーを送出し、高価なモデルの実行を止めて時間と費用を節約できます。 +ガードレールは、エージェントと _並行して_ 実行され、ユーザー入力のチェックや検証を行います。例えば、カスタマー対応に非常に賢い(そのぶん遅く/高価な)モデルを使うエージェントがあるとします。悪意のあるユーザーがそのモデルに数学の宿題を手伝わせるような依頼をするのは避けたいはずです。そこで、高速/低コストなモデルでガードレールを実行できます。ガードレールが悪用を検知した場合、即座にエラーを送出し、高価なモデルの実行を止めて時間やコストを節約できます。 -ガードレールには 2 種類あります。 +ガードレールには 2 種類あります: 1. 入力ガードレールは最初のユーザー入力に対して実行されます 2. 出力ガードレールは最終的なエージェント出力に対して実行されます ## 入力ガードレール -入力ガードレールは 3 つのステップで実行されます。 +入力ガードレールは 3 ステップで実行されます: -1. まず、ガードレールはエージェントに渡されたものと同じ入力を受け取ります。 -2. 次に、ガードレール関数が実行され、[`GuardrailFunctionOutput`][agents.guardrail.GuardrailFunctionOutput] を生成し、それを [`InputGuardrailResult`][agents.guardrail.InputGuardrailResult] にラップします。 -3. 最後に、[`.tripwire_triggered`][agents.guardrail.GuardrailFunctionOutput.tripwire_triggered] が true かどうかを確認します。true の場合、[`InputGuardrailTripwireTriggered`][agents.exceptions.InputGuardrailTripwireTriggered] 例外が送出されるため、ユーザーへの適切な応答や例外処理ができます。 +1. まず、ガードレールはエージェントに渡されたのと同じ入力を受け取ります。 +2. 次に、ガードレール関数が実行され、[`GuardrailFunctionOutput`][agents.guardrail.GuardrailFunctionOutput] を生成し、それが [`InputGuardrailResult`][agents.guardrail.InputGuardrailResult] にラップされます。 +3. 最後に、[`.tripwire_triggered`][agents.guardrail.GuardrailFunctionOutput.tripwire_triggered] が true かを確認します。true の場合、[`InputGuardrailTripwireTriggered`][agents.exceptions.InputGuardrailTripwireTriggered] 例外が送出されるため、ユーザーへの適切な応答や例外処理が行えます。 !!! Note - 入力ガードレールはユーザー入力に対して実行されることを意図しているため、エージェントのガードレールはそのエージェントが「最初の」エージェントである場合にのみ実行されます。なぜ `guardrails` プロパティがエージェント側にあり、`Runner.run` に渡さないのかと思われるかもしれません。これは、ガードレールが実際のエージェントに密接に関係する傾向があるためです。エージェントごとに異なるガードレールを実行するため、コードを同じ場所に置くことで可読性が向上します。 + 入力ガードレールはユーザー入力に対して実行されることを想定しているため、エージェントのガードレールは、そのエージェントが「最初の」エージェントである場合にのみ実行されます。なぜ `guardrails` プロパティがエージェント側にあり、`Runner.run` に渡さないのか疑問に思うかもしれません。これは、ガードレールが実際のエージェントに密接に関連する傾向があるためです。エージェントごとに異なるガードレールを実行することになるので、コードを同じ場所に置くことで可読性が向上します。 ## 出力ガードレール -出力ガードレールは 3 つのステップで実行されます。 +出力ガードレールは 3 ステップで実行されます: 1. まず、ガードレールはエージェントが生成した出力を受け取ります。 -2. 次に、ガードレール関数が実行され、[`GuardrailFunctionOutput`][agents.guardrail.GuardrailFunctionOutput] を生成し、それを [`OutputGuardrailResult`][agents.guardrail.OutputGuardrailResult] にラップします。 -3. 最後に、[`.tripwire_triggered`][agents.guardrail.GuardrailFunctionOutput.tripwire_triggered] が true かどうかを確認します。true の場合、[`OutputGuardrailTripwireTriggered`][agents.exceptions.OutputGuardrailTripwireTriggered] 例外が送出されるため、ユーザーへの適切な応答や例外処理ができます。 +2. 次に、ガードレール関数が実行され、[`GuardrailFunctionOutput`][agents.guardrail.GuardrailFunctionOutput] を生成し、それが [`OutputGuardrailResult`][agents.guardrail.OutputGuardrailResult] にラップされます。 +3. 最後に、[`.tripwire_triggered`][agents.guardrail.GuardrailFunctionOutput.tripwire_triggered] が true かを確認します。true の場合、[`OutputGuardrailTripwireTriggered`][agents.exceptions.OutputGuardrailTripwireTriggered] 例外が送出されるため、ユーザーへの適切な応答や例外処理が行えます。 !!! Note - 出力ガードレールは最終的なエージェント出力に対して実行されることを意図しているため、エージェントのガードレールはそのエージェントが「最後の」エージェントである場合にのみ実行されます。入力ガードレールと同様に、ガードレールは実際のエージェントに密接に関係する傾向があるため、コードを同じ場所に置くことで可読性が向上します。 + 出力ガードレールは最終的なエージェント出力に対して実行されることを想定しているため、エージェントのガードレールは、そのエージェントが「最後の」エージェントである場合にのみ実行されます。入力ガードレールと同様に、ガードレールは実際のエージェントに密接に関連する傾向があるため、コードを同じ場所に置くことで可読性が向上します。 ## トリップワイヤー -入力または出力がガードレールに不合格となった場合、ガードレールはトリップワイヤーでそれを通知できます。トリップワイヤーが発動したガードレールが見つかり次第、直ちに `{Input,Output}GuardrailTripwireTriggered` 例外を送出し、エージェントの実行を停止します。 +入力または出力がガードレールに不合格となった場合、ガードレールはトリップワイヤーでそれを通知できます。トリップワイヤーが発動したガードレールを検知するとすぐに、`{Input,Output}GuardrailTripwireTriggered` 例外を送出し、エージェントの実行を停止します。 ## ガードレールの実装 -入力を受け取り、[`GuardrailFunctionOutput`][agents.guardrail.GuardrailFunctionOutput] を返す関数を用意する必要があります。次の例では、内部でエージェントを実行してこれを行います。 +入力を受け取り、[`GuardrailFunctionOutput`][agents.guardrail.GuardrailFunctionOutput] を返す関数を用意する必要があります。この例では、内部でエージェントを実行することで実現します。 ```python from pydantic import BaseModel @@ -96,7 +96,7 @@ async def main(): 1. このエージェントをガードレール関数内で使用します。 2. これはエージェントの入力/コンテキストを受け取り、結果を返すガードレール関数です。 -3. ガードレール結果に追加情報を含めることができます。 +3. ガードレールの結果に追加情報を含めることができます。 4. これはワークフローを定義する実際のエージェントです。 出力ガードレールも同様です。 diff --git a/docs/ja/handoffs.md b/docs/ja/handoffs.md index 60647ed77..e5ae1b584 100644 --- a/docs/ja/handoffs.md +++ b/docs/ja/handoffs.md @@ -4,15 +4,15 @@ search: --- # ハンドオフ -ハンドオフは、エージェント が別の エージェント にタスクを委譲できる機能です。これは、異なる エージェント が異なる分野を専門としている状況で特に有用です。たとえば、カスタマーサポートアプリでは、注文状況、返金、FAQ などのタスクをそれぞれ専門に扱う エージェント がいるかもしれません。 +ハンドオフにより、エージェントが別のエージェントにタスクを委任できます。これは、異なるエージェントがそれぞれ別の領域を専門にしている状況で特に有用です。たとえば、カスタマーサポートアプリでは、注文状況、返金、FAQ などのタスクを個別に扱うエージェントがいるかもしれません。 -ハンドオフは LLM からはツールとして表現されます。たとえば `Refund Agent` へのハンドオフがある場合、そのツール名は `transfer_to_refund_agent` になります。 +ハンドオフは LLM に対してツールとして表現されます。たとえば、`Refund Agent` というエージェントへのハンドオフがある場合、ツール名は `transfer_to_refund_agent` になります。 ## ハンドオフの作成 -すべての エージェント は [`handoffs`][agents.agent.Agent.handoffs] パラメーターを持ち、これは `Agent` を直接渡すか、ハンドオフをカスタマイズする `Handoff` オブジェクトを受け取れます。 +すべてのエージェントは [`handoffs`][agents.agent.Agent.handoffs] パラメーターを持ち、これは `Agent` を直接渡すことも、ハンドオフをカスタマイズする `Handoff` オブジェクトを渡すこともできます。 -OpenAI Agents SDK が提供する [`handoff()`][agents.handoffs.handoff] 関数を使ってハンドオフを作成できます。この関数では、引き渡し先の エージェント に加えて、任意のオーバーライドや入力フィルターを指定できます。 +Agents SDK が提供する [`handoff()`][agents.handoffs.handoff] 関数を使ってハンドオフを作成できます。この関数では、ハンドオフ先のエージェントに加えて、任意のオーバーライドや入力フィルターを指定できます。 ### 基本的な使い方 @@ -28,19 +28,19 @@ refund_agent = Agent(name="Refund agent") triage_agent = Agent(name="Triage agent", handoffs=[billing_agent, handoff(refund_agent)]) ``` -1. `billing_agent` のように エージェント を直接使っても、`handoff()` 関数を使っても構いません。 +1. `billing_agent` のようにエージェントを直接使うことも、`handoff()` 関数を使うこともできます。 ### `handoff()` 関数によるハンドオフのカスタマイズ -[`handoff()`][agents.handoffs.handoff] 関数では、以下の項目をカスタマイズできます。 +[`handoff()`][agents.handoffs.handoff] 関数ではさまざまなカスタマイズが可能です。 -- `agent`: ハンドオフ先の エージェント です。 -- `tool_name_override`: 既定では `Handoff.default_tool_name()` が使われ、`transfer_to_` が割り当てられます。これを上書きできます。 +- `agent`: ハンドオフ先となるエージェントです。 +- `tool_name_override`: 既定では `Handoff.default_tool_name()` が使用され、`transfer_to_` に解決されます。これを上書きできます。 - `tool_description_override`: `Handoff.default_tool_description()` による既定のツール説明を上書きします。 -- `on_handoff`: ハンドオフが呼び出されたときに実行されるコールバック関数です。ハンドオフが呼び出されることが分かった時点でデータ取得を開始するなどに便利です。この関数はエージェントのコンテキストを受け取り、任意で LLM が生成した入力も受け取れます。入力データは `input_type` パラメーターで制御します。 -- `input_type`: ハンドオフが想定する入力の型(任意)。 -- `input_filter`: 次の エージェント が受け取る入力をフィルタリングできます。詳細は下記を参照してください。 -- `is_enabled`: ハンドオフを有効にするかどうか。真偽値、または真偽値を返す関数を指定でき、実行時に動的に有効/無効を切り替えられます。 +- `on_handoff`: ハンドオフが呼び出されたときに実行されるコールバック関数です。ハンドオフが呼ばれたことが分かった直後にデータ取得を開始する、といった用途に便利です。この関数はエージェントのコンテキストを受け取り、任意で LLM が生成した入力も受け取れます。入力データは `input_type` パラメーターで制御します。 +- `input_type`: ハンドオフが想定する入力の型(任意)です。 +- `input_filter`: 次のエージェントが受け取る入力をフィルタリングします。詳細は以下を参照してください。 +- `is_enabled`: ハンドオフを有効にするかどうかです。真偽値、または真偽値を返す関数を指定でき、実行時に動的に有効・無効を切り替えられます。 ```python from agents import Agent, handoff, RunContextWrapper @@ -58,9 +58,9 @@ handoff_obj = handoff( ) ``` -## ハンドオフの入力 +## ハンドオフ入力 -状況によっては、ハンドオフ呼び出し時に LLM にいくらかのデータを渡してほしい場合があります。たとえば「エスカレーション エージェント」へのハンドオフを考えてみてください。ログのために理由を渡したいかもしれません。 +状況によっては、ハンドオフ呼び出し時に LLM にデータを提供してほしい場合があります。たとえば「エスカレーション エージェント」へのハンドオフを想像してください。記録できるように、理由を提供してほしいことがあります。 ```python from pydantic import BaseModel @@ -84,9 +84,9 @@ handoff_obj = handoff( ## 入力フィルター -ハンドオフが発生すると、新しい エージェント が会話を引き継ぎ、以前の会話履歴全体を参照できるかのように振る舞います。これを変更したい場合は、[`input_filter`][agents.handoffs.Handoff.input_filter] を設定できます。入力フィルターは、[`HandoffInputData`][agents.handoffs.HandoffInputData] として既存の入力を受け取り、新しい `HandoffInputData` を返す関数です。 +ハンドオフが発生すると、新しいエージェントが会話を引き継ぎ、以前の会話履歴全体を閲覧できるかのように振る舞います。これを変更したい場合は、[`input_filter`][agents.handoffs.Handoff.input_filter] を設定できます。入力フィルターは、既存の入力を [`HandoffInputData`][agents.handoffs.HandoffInputData] として受け取り、新しい `HandoffInputData` を返す関数です。 -よくあるパターン(たとえば履歴からすべてのツール呼び出しを削除する)が、[`agents.extensions.handoff_filters`][] に実装されています。 +一般的なパターン(たとえば履歴からすべてのツール呼び出しを削除するなど)は、[`agents.extensions.handoff_filters`][] で実装済みです。 ```python from agents import Agent, handoff @@ -100,11 +100,11 @@ handoff_obj = handoff( ) ``` -1. これは、`FAQ agent` が呼び出されたときに履歴から自動的にすべてのツールを削除します。 +1. これは、`FAQ agent` が呼び出されたときに履歴からすべてのツールを自動的に削除します。 ## 推奨プロンプト -LLM がハンドオフを正しく理解できるようにするため、エージェント にハンドオフに関する情報を含めることを推奨します。[`agents.extensions.handoff_prompt.RECOMMENDED_PROMPT_PREFIX`][] に提案のプレフィックスがあり、または [`agents.extensions.handoff_prompt.prompt_with_handoff_instructions`][] を呼び出して、推奨情報をプロンプトに自動的に追加できます。 +LLM がハンドオフを正しく理解できるようにするため、エージェントにハンドオフに関する情報を含めることを推奨します。[`agents.extensions.handoff_prompt.RECOMMENDED_PROMPT_PREFIX`][] に推奨のプレフィックスがあり、あるいは [`agents.extensions.handoff_prompt.prompt_with_handoff_instructions`][] を呼び出して、推奨データをプロンプトに自動的に追加できます。 ```python from agents import Agent diff --git a/docs/ja/index.md b/docs/ja/index.md index c4aca6001..bbd9e131d 100644 --- a/docs/ja/index.md +++ b/docs/ja/index.md @@ -4,31 +4,31 @@ search: --- # OpenAI Agents SDK -[OpenAI Agents SDK](https://github.com/openai/openai-agents-python) は、抽象化を最小限に抑えた軽量で使いやすいパッケージで、エージェント型の AI アプリを構築できるようにします。これは、当社のエージェントに関する過去の実験である [Swarm](https://github.com/openai/swarm/tree/main) の本番対応版アップグレードです。Agents SDK にはごく少数の基本コンポーネントがあります。 +[OpenAI Agents SDK](https://github.com/openai/openai-agents-python) は、抽象化を最小限に抑えた軽量で使いやすいパッケージで、エージェント型の AI アプリを構築できるようにします。これは、以前のエージェント実験である [Swarm](https://github.com/openai/swarm/tree/main) の本番対応版アップグレードです。Agents SDK はごく少数の基本コンポーネントから成ります: -- **エージェント**: instructions と tools を備えた LLM -- **ハンドオフ**: 特定のタスクを他のエージェントへ委譲できる機能 -- **ガードレール**: エージェントの入力と出力を検証できる機能 -- **セッション**: エージェントの実行をまたいで会話履歴を自動的に維持 +- **エージェント**: instructions とツールを備えた LLM +- **ハンドオフ**: 特定のタスクを他のエージェントに委譲できる仕組み +- **ガードレール**: エージェントの入力と出力の検証を可能にする仕組み +- **セッション**: エージェントの実行をまたいで会話履歴を自動的に維持します -Python と組み合わせることで、これらの基本コンポーネントはツールとエージェント間の複雑な関係を十分に表現でき、学習コストをかけずに実運用アプリケーションを構築できます。さらに、SDK には組み込みの **トレーシング** があり、エージェントフローの可視化とデバッグ、評価、そしてアプリケーション向けのモデルのファインチューニングまで行えます。 +Python と組み合わせることで、これらの基本コンポーネントはツールとエージェント間の複雑な関係性を表現でき、急な学習コストなしに実運用レベルのアプリケーションを構築できます。さらに、SDK には組み込みの **トレーシング** が付属しており、エージェントのフローを可視化・デバッグできるほか、評価や、アプリケーション向けのモデルのファインチューニングまで行えます。 ## Agents SDK を使う理由 -この SDK は次の 2 つの設計原則に基づいています。 +この SDK には 2 つの設計原則があります: -1. 使う価値があるだけの機能を備えつつ、学習が速いよう基本コンポーネントは少数にする。 -2. すぐ使えて優れた体験を提供しつつ、挙動を正確にカスタマイズできる。 +1. 使う価値があるだけの機能を備えつつ、学習を容易にするための最小限の基本コンポーネントにとどめること。 +2. すぐに使えて高品質に動作しつつ、起きることを正確にカスタマイズできること。 -SDK の主な機能は次のとおりです。 +SDK の主な特長は次のとおりです: -- エージェントループ: ツールの呼び出し、結果を LLM へ渡す処理、LLM が完了するまでのループを内蔵。 -- Python ファースト: 新しい抽象化を学ぶのではなく、言語の機能を使ってエージェントをオーケストレーションし連鎖できます。 -- ハンドオフ: 複数のエージェント間で協調と委譲を行う強力な機能。 -- ガードレール: エージェントと並行して入力の検証やチェックを実行し、チェックが失敗したら早期に中断。 -- セッション: エージェントの実行をまたいだ会話履歴の自動管理により、手動での状態管理が不要。 -- 関数ツール: 任意の Python 関数をツールに変換し、自動スキーマ生成と Pydantic ベースの検証を提供。 -- トレーシング: ワークフローの可視化、デバッグ、監視に加え、OpenAI の評価、ファインチューニング、蒸留ツール群を活用可能。 +- エージェントループ: ツールの呼び出し、結果の LLM への送信、LLM が完了するまでのループを処理する組み込みのエージェントループ。 +- Python ファースト: 新しい抽象を学ぶのではなく、言語の組み込み機能を使ってエージェントをオーケストレーションし、連携できます。 +- ハンドオフ: 複数のエージェント間で調整・委譲するための強力な機能。 +- ガードレール: エージェントと並行して入力の検証やチェックを実行し、失敗した場合は早期に打ち切ります。 +- セッション: エージェントの実行をまたいだ会話履歴の自動管理により、手動での状態管理が不要になります。 +- 関数ツール: 任意の Python 関数をツール化し、自動スキーマ生成と Pydantic ベースのバリデーションを提供します。 +- トレーシング: ワークフローの可視化、デバッグ、監視を可能にする組み込みのトレーシング。さらに OpenAI の評価、ファインチューニング、蒸留ツール群も活用できます。 ## インストール @@ -36,7 +36,7 @@ SDK の主な機能は次のとおりです。 pip install openai-agents ``` -## Hello World の例 +## Hello world の例 ```python from agents import Agent, Runner diff --git a/docs/ja/mcp.md b/docs/ja/mcp.md index 48179984e..46d314781 100644 --- a/docs/ja/mcp.md +++ b/docs/ja/mcp.md @@ -4,23 +4,23 @@ search: --- # Model context protocol (MCP) -[Model context protocol](https://modelcontextprotocol.io/introduction)(別名 MCP)は、LLM にツールとコンテキストを提供するための方法です。MCP のドキュメントからの引用です: +[Model context protocol](https://modelcontextprotocol.io/introduction)(別名 MCP)は、LLM にツールとコンテキストを提供する方法です。MCP のドキュメントより: -> MCP は、アプリケーションが LLM にコンテキストを提供する方法を標準化するオープンプロトコルです。MCP は AI アプリケーション向けの USB‑C ポートのようなものだと考えてください。USB‑C がさまざまな周辺機器やアクセサリにデバイスを接続する標準化された方法を提供するのと同様に、MCP は AI モデルを異なるデータソースやツールに接続する標準化された方法を提供します。 +> MCP は、アプリケーションが LLM にコンテキストを提供する方法を標準化するオープンなプロトコルです。MCP は AI アプリケーションのための USB‑C ポートのようなものだと考えてください。USB‑C がデバイスをさまざまな周辺機器やアクセサリに接続する標準化された方法を提供するのと同様に、MCP は AI モデルをさまざまなデータソースやツールに接続する標準化された方法を提供します。 -Agents SDK には MCP のサポートがあります。これにより、幅広い MCP サーバーを使用して、エージェントにツールやプロンプトを提供できます。 +Agents SDK は MCP をサポートしています。これにより、幅広い MCP サーバーを使用して、エージェントにツールやプロンプトを提供できます。 ## MCP サーバー -現在、MCP 仕様は、使用するトランスポートメカニズムに基づいて 3 種類のサーバーを定義しています: +現在、MCP 仕様は使用するトランスポートメカニズムに基づいて 3 種類のサーバーを定義しています: -1. **stdio** サーバーは、アプリケーションのサブプロセスとして実行されます。ローカルで実行されると考えることができます。 -2. **HTTP over SSE** サーバーはリモートで実行されます。URL を介して接続します。 +1. **stdio** サーバーはアプリケーションのサブプロセスとして実行されます。いわば「ローカル」で動作します。 +2. **HTTP over SSE** サーバーはリモートで実行され、URL で接続します。 3. **Streamable HTTP** サーバーは、MCP 仕様で定義された Streamable HTTP トランスポートを使用してリモートで実行されます。 これらのサーバーには、[`MCPServerStdio`][agents.mcp.server.MCPServerStdio]、[`MCPServerSse`][agents.mcp.server.MCPServerSse]、[`MCPServerStreamableHttp`][agents.mcp.server.MCPServerStreamableHttp] クラスを使用して接続できます。 -たとえば、[公式の MCP ファイルシステム サーバー](https://www.npmjs.com/package/@modelcontextprotocol/server-filesystem)を次のように使用します。 +たとえば、[公式 MCP filesystem サーバー](https://www.npmjs.com/package/@modelcontextprotocol/server-filesystem)は次のように使用します。 ```python from agents.run_context import RunContextWrapper @@ -41,7 +41,7 @@ async with MCPServerStdio( ## MCP サーバーの使用 -MCP サーバーはエージェントに追加できます。Agents SDK は、エージェントが実行されるたびに MCP サーバーで `list_tools()` を呼び出します。これにより、LLM が MCP サーバーのツールを認識できるようになります。LLM が MCP サーバーのツールを呼び出すと、SDK はそのサーバーで `call_tool()` を呼び出します。 +MCP サーバーはエージェントに追加できます。Agents SDK はエージェントが実行されるたびに MCP サーバーで `list_tools()` を呼び出します。これにより、LLM は MCP サーバーのツールを認識します。LLM が MCP サーバーのツールを呼び出すと、SDK はそのサーバーで `call_tool()` を呼び出します。 ```python @@ -54,11 +54,11 @@ agent=Agent( ## ツールのフィルタリング -MCP サーバーでツールフィルターを構成して、エージェントで使用可能なツールを制限できます。SDK は静的および動的なツールフィルタリングの両方をサポートします。 +MCP サーバーでツールフィルターを設定することで、エージェントで利用可能なツールを絞り込めます。SDK は静的および動的なツールフィルタリングの両方をサポートします。 ### 静的ツールフィルタリング -単純な許可/ブロックリストの場合は、静的フィルタリングを使用できます: +単純な許可/ブロックのリストには、静的フィルタリングを使用します: ```python from agents.mcp import create_static_tool_filter @@ -87,15 +87,15 @@ server = MCPServerStdio( ``` -**`allowed_tool_names` と `blocked_tool_names` の両方が構成されている場合、処理順序は次のとおりです:** -1. まず `allowed_tool_names`(許可リスト)を適用します — 指定されたツールのみを残します -2. 次に `blocked_tool_names`(ブロックリスト)を適用します — 残ったツールから指定されたツールを除外します +**`allowed_tool_names` と `blocked_tool_names` の両方が設定されている場合の処理順序は次のとおりです:** +1. まず `allowed_tool_names`(許可リスト)を適用し、指定したツールだけを残します +2. 次に `blocked_tool_names`(ブロックリスト)を適用し、残ったツールから指定したツールを除外します -たとえば、`allowed_tool_names=["read_file", "write_file", "delete_file"]` と `blocked_tool_names=["delete_file"]` を構成した場合、使用可能になるのは `read_file` と `write_file` ツールのみです。 +たとえば、`allowed_tool_names=["read_file", "write_file", "delete_file"]` と `blocked_tool_names=["delete_file"]` を設定すると、利用可能なのは `read_file` と `write_file` のみになります。 ### 動的ツールフィルタリング -より複雑なフィルタリングロジックには、関数を使った動的フィルターを使用できます: +より複雑なフィルタリングロジックには、関数を使った動的フィルターを使用します: ```python from agents.mcp import ToolFilterContext @@ -134,21 +134,21 @@ server = MCPServerStdio( ) ``` -`ToolFilterContext` では次の情報にアクセスできます: +`ToolFilterContext` では次にアクセスできます: - `run_context`: 現在の実行コンテキスト - `agent`: ツールを要求しているエージェント - `server_name`: MCP サーバー名 ## プロンプト -MCP サーバーは、エージェントの instructions を動的に生成するために使用できるプロンプトも提供できます。これにより、パラメーターでカスタマイズ可能な再利用可能な指示テンプレートを作成できます。 +MCP サーバーは、エージェントの instructions を動的に生成するためのプロンプトも提供できます。これにより、パラメーターでカスタマイズ可能な再利用可能な instructions テンプレートを作成できます。 ### プロンプトの使用 プロンプトをサポートする MCP サーバーは、次の 2 つの主要メソッドを提供します: -- `list_prompts()`: サーバー上で利用可能なすべてのプロンプトを一覧表示します -- `get_prompt(name, arguments)`: 任意のパラメーター付きで特定のプロンプトを取得します +- `list_prompts()`: サーバー上で利用可能なすべてのプロンプトを一覧表示 +- `get_prompt(name, arguments)`: 任意のパラメーター付きで特定のプロンプトを取得 ```python # List available prompts @@ -173,19 +173,19 @@ agent = Agent( ## キャッシュ -エージェントが実行されるたびに、MCP サーバーで `list_tools()` が呼び出されます。特にサーバーがリモートサーバーの場合、これはレイテンシーの原因になり得ます。ツール一覧を自動的にキャッシュするには、[`MCPServerStdio`][agents.mcp.server.MCPServerStdio]、[`MCPServerSse`][agents.mcp.server.MCPServerSse]、[`MCPServerStreamableHttp`][agents.mcp.server.MCPServerStreamableHttp] に `cache_tools_list=True` を渡します。ツール一覧が変更されないことが確実な場合にのみ行ってください。 +エージェントが実行されるたびに、MCP サーバーで `list_tools()` が呼び出されます。特にサーバーがリモートの場合、これは待ち時間の原因になり得ます。ツール一覧を自動的にキャッシュするには、[`MCPServerStdio`][agents.mcp.server.MCPServerStdio]、[`MCPServerSse`][agents.mcp.server.MCPServerSse]、[`MCPServerStreamableHttp`][agents.mcp.server.MCPServerStreamableHttp] に `cache_tools_list=True` を渡します。ツール一覧が変更されないと確信できる場合にのみ実行してください。 キャッシュを無効化したい場合は、サーバーで `invalidate_tools_cache()` を呼び出せます。 -## エンドツーエンドの code examples +## エンドツーエンドのコード例 -完全に動作する code examples は [examples/mcp](https://github.com/openai/openai-agents-python/tree/main/examples/mcp) を参照してください。 +[examples/mcp](https://github.com/openai/openai-agents-python/tree/main/examples/mcp) に完全に動作するコード例があります。 ## トレーシング -[トレーシング](./tracing.md)は、次を含む MCP の操作を自動的に捕捉します: +[トレーシング](./tracing.md) は MCP の操作を自動的に捕捉します。含まれる内容: -1. ツール一覧を取得するための MCP サーバーへの呼び出し +1. ツール一覧の取得のための MCP サーバー呼び出し 2. 関数呼び出しに関する MCP 関連情報 ![MCP トレーシングのスクリーンショット](../assets/images/mcp-tracing.jpg) \ No newline at end of file diff --git a/docs/ja/models/index.md b/docs/ja/models/index.md index 06bb8bb8e..231df20a8 100644 --- a/docs/ja/models/index.md +++ b/docs/ja/models/index.md @@ -4,20 +4,20 @@ search: --- # モデル -Agents SDK には、OpenAI モデルのサポートが 2 種類用意されています。 +Agents SDK には、2 つの形態で OpenAI モデルの即時利用が含まれます。 -- **推奨**: [`OpenAIResponsesModel`][agents.models.openai_responses.OpenAIResponsesModel]。新しい [Responses API](https://platform.openai.com/docs/api-reference/responses) を使って OpenAI API を呼び出します。 -- [`OpenAIChatCompletionsModel`][agents.models.openai_chatcompletions.OpenAIChatCompletionsModel]。 [Chat Completions API](https://platform.openai.com/docs/api-reference/chat) を使って OpenAI API を呼び出します。 +- **推奨**: 新しい [Responses API](https://platform.openai.com/docs/api-reference/responses) を用いて OpenAI API を呼び出す [`OpenAIResponsesModel`][agents.models.openai_responses.OpenAIResponsesModel] +- [Chat Completions API](https://platform.openai.com/docs/api-reference/chat) を用いて OpenAI API を呼び出す [`OpenAIChatCompletionsModel`][agents.models.openai_chatcompletions.OpenAIChatCompletionsModel] ## OpenAI モデル -`Agent` を初期化するときにモデルを指定しない場合、デフォルトモデルが使用されます。現在のデフォルトは [`gpt-4.1`](https://platform.openai.com/docs/models/gpt-4.1) で、エージェント型ワークフローの予測可能性と低レイテンシのバランスに優れています。 +`Agent` を初期化する際にモデルを指定しない場合、デフォルトモデルが使用されます。現在のデフォルトは [`gpt-4.1`](https://platform.openai.com/docs/models/gpt-4.1) で、エージェント的ワークフローにおける予測可能性と低レイテンシのバランスに優れています。 -[`gpt-5`](https://platform.openai.com/docs/models/gpt-5) のような他のモデルに切り替える場合は、次のセクションの手順に従ってください。 +[`gpt-5`](https://platform.openai.com/docs/models/gpt-5) など他のモデルに切り替えたい場合は、次のセクションの手順に従ってください。 -### OpenAI のデフォルトモデル +### 既定の OpenAI モデル -カスタムモデルを設定していないすべての エージェント で特定のモデルを一貫して使用したい場合は、エージェント を実行する前に `OPENAI_DEFAULT_MODEL` 環境変数を設定します。 +カスタムモデルを設定していないすべてのエージェントに対して特定のモデルを一貫して使用したい場合は、エージェントを実行する前に `OPENAI_DEFAULT_MODEL` 環境変数を設定してください。 ```bash export OPENAI_DEFAULT_MODEL=gpt-5 @@ -26,9 +26,9 @@ python3 my_awesome_agent.py #### GPT-5 モデル -GPT-5 の reasoning モデル([`gpt-5`](https://platform.openai.com/docs/models/gpt-5)、[`gpt-5-mini`](https://platform.openai.com/docs/models/gpt-5-mini)、または [`gpt-5-nano`](https://platform.openai.com/docs/models/gpt-5-nano))をこの方法で使用すると、SDK はデフォルトで妥当な `ModelSettings` を適用します。具体的には、`reasoning.effort` と `verbosity` をどちらも `"low"` に設定します。これらの設定を自分で構築したい場合は、`agents.models.get_default_model_settings("gpt-5")` を呼び出してください。 +この方法で GPT-5 のいずれかの reasoning モデル([`gpt-5`](https://platform.openai.com/docs/models/gpt-5)、[`gpt-5-mini`](https://platform.openai.com/docs/models/gpt-5-mini)、[`gpt-5-nano`](https://platform.openai.com/docs/models/gpt-5-nano))を使用すると、SDK は既定で妥当な `ModelSettings` を適用します。具体的には、`reasoning.effort` と `verbosity` をともに `"low"` に設定します。これらの設定を自分で構築したい場合は、`agents.models.get_default_model_settings("gpt-5")` を呼び出してください。 -レイテンシを下げたい場合や特定の要件がある場合は、別のモデルと設定を選択できます。デフォルトモデルの reasoning effort を調整するには、独自の `ModelSettings` を渡します。 +より低レイテンシや特定の要件がある場合は、別のモデルと設定を選択できます。デフォルトモデルの reasoning 努力度を調整するには、独自の `ModelSettings` を渡してください。 ```python from openai.types.shared import Reasoning @@ -44,11 +44,11 @@ my_agent = Agent( ) ``` -特に低レイテンシが目的であれば、[`gpt-5-mini`](https://platform.openai.com/docs/models/gpt-5-mini) や [`gpt-5-nano`](https://platform.openai.com/docs/models/gpt-5-nano) に `reasoning.effort="minimal"` を指定すると、デフォルト設定より高速に応答が返ることがよくあります。ただし、Responses API の一部の組み込みツール(例えば ファイル検索 と 画像生成)は `"minimal"` の reasoning effort をサポートしていないため、本 Agents SDK ではデフォルトを `"low"` にしています。 +特に低レイテンシを狙う場合、[`gpt-5-mini`](https://platform.openai.com/docs/models/gpt-5-mini) または [`gpt-5-nano`](https://platform.openai.com/docs/models/gpt-5-nano) モデルを `reasoning.effort="minimal"` で使用すると、デフォルト設定より高速に応答が返ることがよくあります。ただし、Responses API の一部の組み込みツール(ファイル検索や画像生成など)は `"minimal"` の reasoning 努力度をサポートしていないため、この Agents SDK は既定で `"low"` に設定しています。 #### 非 GPT-5 モデル -カスタム `model_settings` なしで GPT-5 以外のモデル名を渡した場合、SDK はあらゆるモデルと互換性のある汎用の `ModelSettings` にフォールバックします。 +カスタムの `model_settings` なしで GPT-5 以外のモデル名を渡した場合、SDK はあらゆるモデルと互換性のある汎用的な `ModelSettings` に戻します。 ## 非 OpenAI モデル @@ -58,38 +58,38 @@ my_agent = Agent( pip install "openai-agents[litellm]" ``` -次に、`litellm/` プレフィックスを付けて [対応モデル](https://docs.litellm.ai/docs/providers) を使用します。 +次に、`litellm/` プレフィックスを付けて [サポートされているモデル](https://docs.litellm.ai/docs/providers) を使用します。 ```python claude_agent = Agent(model="litellm/anthropic/claude-3-5-sonnet-20240620", ...) gemini_agent = Agent(model="litellm/gemini/gemini-2.5-flash-preview-04-17", ...) ``` -### 非 OpenAI モデルを使う他の方法 +### 非 OpenAI モデルを使うその他の方法 -他の LLM プロバイダーは、さらに 3 つの方法で統合できます(code examples は[こちら](https://github.com/openai/openai-agents-python/tree/main/examples/model_providers/))。 +他の LLM プロバイダーを統合する方法はさらに 3 つあります(code examples は[こちら](https://github.com/openai/openai-agents-python/tree/main/examples/model_providers/))。 -1. [`set_default_openai_client`][agents.set_default_openai_client] は、グローバルに `AsyncOpenAI` インスタンスを LLM クライアントとして使いたい場合に便利です。これは、LLM プロバイダーが OpenAI 互換の API エンドポイントを持ち、`base_url` と `api_key` を設定できるケース向けです。設定可能な code examples は [examples/model_providers/custom_example_global.py](https://github.com/openai/openai-agents-python/tree/main/examples/model_providers/custom_example_global.py) を参照してください。 -2. [`ModelProvider`][agents.models.interface.ModelProvider] は `Runner.run` レベルにあります。これにより、「この実行のすべての エージェント にカスタムのモデルプロバイダーを使う」と指定できます。設定可能な code examples は [examples/model_providers/custom_example_provider.py](https://github.com/openai/openai-agents-python/tree/main/examples/model_providers/custom_example_provider.py) を参照してください。 -3. [`Agent.model`][agents.agent.Agent.model] では、特定の Agent インスタンスにモデルを指定できます。これにより、異なる エージェント に対して異なるプロバイダーを組み合わせて使用できます。設定可能な code examples は [examples/model_providers/custom_example_agent.py](https://github.com/openai/openai-agents-python/tree/main/examples/model_providers/custom_example_agent.py) を参照してください。最も多くの利用可能なモデルを簡単に使う方法は、[LiteLLM 連携](./litellm.md) を介することです。 +1. [`set_default_openai_client`][agents.set_default_openai_client] は、LLM クライアントとして `AsyncOpenAI` のインスタンスをグローバルに使用したい場合に便利です。これは、LLM プロバイダーが OpenAI 互換の API エンドポイントを持ち、`base_url` と `api_key` を設定できる場合に該当します。設定可能な例は [examples/model_providers/custom_example_global.py](https://github.com/openai/openai-agents-python/tree/main/examples/model_providers/custom_example_global.py) を参照してください。 +2. [`ModelProvider`][agents.models.interface.ModelProvider] は `Runner.run` レベルにあります。これにより、「この実行のすべてのエージェントにカスタムモデルプロバイダーを使用する」と指定できます。設定可能な例は [examples/model_providers/custom_example_provider.py](https://github.com/openai/openai-agents-python/tree/main/examples/model_providers/custom_example_provider.py) を参照してください。 +3. [`Agent.model`][agents.agent.Agent.model] は、特定の Agent インスタンスでモデルを指定できるようにします。これにより、エージェントごとに異なるプロバイダーを組み合わせて使用できます。設定可能な例は [examples/model_providers/custom_example_agent.py](https://github.com/openai/openai-agents-python/tree/main/examples/model_providers/custom_example_agent.py) を参照してください。ほとんどの利用可能なモデルを簡単に使う方法は、[LiteLLM 連携](./litellm.md) を利用することです。 -`platform.openai.com` の API キーを持っていない場合は、`set_tracing_disabled()` で トレーシング を無効化するか、[別のトレーシング プロセッサー](../tracing.md) を設定することを推奨します。 +`platform.openai.com` の API キーを持っていない場合は、`set_tracing_disabled()` によるトレーシングの無効化、または [別のトレーシング プロセッサー](../tracing.md) の設定を推奨します。 !!! note - これらの code examples では、Responses API/モデルではなく Chat Completions API/モデルを使用しています。これは、ほとんどの LLM プロバイダーがまだ Responses API をサポートしていないためです。もしお使いの LLM プロバイダーが対応している場合は、Responses の使用をおすすめします。 + これらの code examples では、Responses API をサポートしていない LLM プロバイダーがほとんどであるため、Chat Completions API/モデルを使用しています。もしお使いの LLM プロバイダーが Responses をサポートしている場合は、Responses の使用を推奨します。 ## モデルの組み合わせ -単一のワークフロー内で、エージェント ごとに異なるモデルを使いたい場合があります。例えば、振り分けには小型で高速なモデルを使い、複雑なタスクには大型で高性能なモデルを使うといった具合です。[`Agent`][agents.Agent] を設定するとき、以下のいずれかで特定のモデルを選択できます。 +単一のワークフロー内で、エージェントごとに異なるモデルを使用したい場合があります。たとえば、振り分けには小型で高速なモデルを使用し、複雑なタスクには大型で高性能なモデルを使用できます。[`Agent`][agents.Agent] を構成する際には、以下のいずれかの方法で特定のモデルを選択できます。 1. モデル名を渡す。 -2. 任意のモデル名 + その名前を Model インスタンスにマッピングできる [`ModelProvider`][agents.models.interface.ModelProvider] を渡す。 -3. [`Model`][agents.models.interface.Model] 実装を直接提供する。 +2. 任意のモデル名と、それを Model インスタンスへマッピングできる [`ModelProvider`][agents.models.interface.ModelProvider] を渡す。 +3. 直接 [`Model`][agents.models.interface.Model] 実装を提供する。 !!!note - 本 SDK は [`OpenAIResponsesModel`][agents.models.openai_responses.OpenAIResponsesModel] と [`OpenAIChatCompletionsModel`][agents.models.openai_chatcompletions.OpenAIChatCompletionsModel] の両方の形状をサポートしますが、各ワークフローでは単一のモデル形状を使用することを推奨します。2 つの形状はサポートする機能やツールのセットが異なるためです。もしワークフローでモデル形状を混在させる必要がある場合は、使用するすべての機能が双方で利用可能であることを確認してください。 + 当社の SDK は [`OpenAIResponsesModel`][agents.models.openai_responses.OpenAIResponsesModel] と [`OpenAIChatCompletionsModel`][agents.models.openai_chatcompletions.OpenAIChatCompletionsModel] の両方の形態をサポートしますが、両者はサポートする機能やツールのセットが異なるため、各ワークフローでは単一のモデル形態の使用を推奨します。ワークフローがモデル形態の混在を必要とする場合は、使用するすべての機能が双方で利用可能であることを確認してください。 ```python from agents import Agent, Runner, AsyncOpenAI, OpenAIChatCompletionsModel @@ -122,10 +122,10 @@ async def main(): print(result.final_output) ``` -1. OpenAI のモデル名を直接設定します。 -2. [`Model`][agents.models.interface.Model] 実装を提供します。 +1. OpenAI モデルの名前を直接設定します。 +2. [`Model`][agents.models.interface.Model] 実装を提供します。 -エージェント で使用するモデルをさらに細かく設定したい場合は、[`ModelSettings`][agents.models.interface.ModelSettings] を渡すことができます。これは temperature などの任意のモデル設定パラメーターを提供します。 +エージェントで使用するモデルをさらに構成したい場合は、温度などの任意のモデル構成パラメーターを提供する [`ModelSettings`][agents.models.interface.ModelSettings] を渡すことができます。 ```python from agents import Agent, ModelSettings @@ -138,7 +138,7 @@ english_agent = Agent( ) ``` -また、OpenAI の Responses API を使う場合、[他にもいくつかの任意パラメーター](https://platform.openai.com/docs/api-reference/responses/create)(例: `user`, `service_tier` など)があります。トップレベルで指定できない場合は、`extra_args` で渡せます。 +また、OpenAI の Responses API を使用する場合、[他にもいくつかの任意パラメーター](https://platform.openai.com/docs/api-reference/responses/create)(例: `user`、`service_tier` など)があります。トップレベルで利用できない場合は、`extra_args` を使ってそれらを渡せます。 ```python from agents import Agent, ModelSettings @@ -154,26 +154,26 @@ english_agent = Agent( ) ``` -## 他社 LLM プロバイダー利用時の一般的な問題 +## 他社 LLM プロバイダー使用時の一般的な問題 ### トレーシング クライアントのエラー 401 -トレーシング に関連するエラーが発生する場合、これはトレースが OpenAI の サーバー にアップロードされる一方で、OpenAI の API キーをお持ちでないことが原因です。解決策は次の 3 つです。 +トレースは OpenAI のサーバーにアップロードされ、OpenAI の API キーを持っていない場合、トレーシング関連のエラーが発生します。解決策は 3 つあります。 -1. トレーシング を完全に無効化: [`set_tracing_disabled(True)`][agents.set_tracing_disabled]。 -2. トレーシング 用に OpenAI キーを設定: [`set_tracing_export_api_key(...)`][agents.set_tracing_export_api_key]。この API キーはトレースのアップロードのみに使用され、[platform.openai.com](https://platform.openai.com/) のキーである必要があります。 -3. 非 OpenAI のトレース プロセッサーを使用。 [tracing ドキュメント](../tracing.md#custom-tracing-processors) を参照してください。 +1. トレーシングを完全に無効化する: [`set_tracing_disabled(True)`][agents.set_tracing_disabled] +2. トレーシング用の OpenAI キーを設定する: [`set_tracing_export_api_key(...)`][agents.set_tracing_export_api_key]。この API キーはトレースのアップロードにのみ使用され、[platform.openai.com](https://platform.openai.com/) のものが必要です。 +3. 非 OpenAI のトレース プロセッサーを使用する。[トレーシングのドキュメント](../tracing.md#custom-tracing-processors) を参照してください。 ### Responses API のサポート -SDK はデフォルトで Responses API を使用しますが、多くの他社 LLM プロバイダーはまだ対応していません。そのため、404 などの問題が発生する場合があります。解決策は次の 2 つです。 +SDK は既定で Responses API を使用しますが、ほとんどの他社 LLM プロバイダーはまだサポートしていません。その結果、404 などの問題が発生することがあります。解決策は 2 つあります。 -1. [`set_default_openai_api("chat_completions")`][agents.set_default_openai_api] を呼び出します。これは、環境変数で `OPENAI_API_KEY` と `OPENAI_BASE_URL` を設定している場合に機能します。 -2. [`OpenAIChatCompletionsModel`][agents.models.openai_chatcompletions.OpenAIChatCompletionsModel] を使用します。code examples は[こちら](https://github.com/openai/openai-agents-python/tree/main/examples/model_providers/)にあります。 +1. [`set_default_openai_api("chat_completions")`][agents.set_default_openai_api] を呼び出す。これは環境変数で `OPENAI_API_KEY` と `OPENAI_BASE_URL` を設定している場合に機能します。 +2. [`OpenAIChatCompletionsModel`][agents.models.openai_chatcompletions.OpenAIChatCompletionsModel] を使用する。code examples は[こちら](https://github.com/openai/openai-agents-python/tree/main/examples/model_providers/)にあります。 -### Structured outputs のサポート +### structured outputs のサポート -一部のモデルプロバイダーは [structured outputs](https://platform.openai.com/docs/guides/structured-outputs) をサポートしていません。これにより、次のようなエラーが発生することがあります。 +一部のモデルプロバイダーは [structured outputs](https://platform.openai.com/docs/guides/structured-outputs) をサポートしていません。その結果、次のようなエラーが発生することがあります。 ``` @@ -181,12 +181,12 @@ BadRequestError: Error code: 400 - {'error': {'message': "'response_format.type' ``` -これは一部のモデルプロバイダー側の制限で、JSON 出力はサポートしていても、出力に使用する `json_schema` を指定できないというものです。現在この問題の修正に取り組んでいますが、JSON schema 出力をサポートするプロバイダーに依存することをおすすめします。そうでない場合、JSON の形式が不正になることでアプリが頻繁に壊れる可能性があります。 +これは一部のモデルプロバイダーの制約で、JSON 出力はサポートしていても、出力に使用する `json_schema` を指定できないというものです。私たちはこれに対する修正に取り組んでいますが、JSON schema 出力をサポートするプロバイダーに依存することをおすすめします。そうでない場合、JSON の不正形式によりアプリがしばしば壊れてしまいます。 -## プロバイダーをまたぐモデルの混在 +## プロバイダーをまたいだモデルの混在 -モデルプロバイダー間の機能差異に注意しないと、エラーに遭遇する可能性があります。例えば、OpenAI は structured outputs、マルチモーダル入力、ホスト型の ファイル検索 と Web 検索 をサポートしますが、多くの他社プロバイダーはこれらの機能をサポートしていません。次の制限に注意してください。 +モデルプロバイダー間の機能差異に注意しないと、エラーに直面する可能性があります。たとえば、OpenAI は structured outputs、マルチモーダル入力、ホスト型のファイル検索と Web 検索をサポートしますが、多くの他社プロバイダーはこれらの機能をサポートしていません。次の制限に注意してください。 -- サポートされていない `tools` を理解しないプロバイダーに送らないでください -- テキスト専用のモデルを呼び出す前に、マルチモーダル入力をフィルタリングしてください -- structured JSON 出力をサポートしないプロバイダーでは、無効な JSON が生成されることがあります \ No newline at end of file +- サポートされていない `tools` を理解しないプロバイダーへ送信しないでください +- テキストのみのモデルを呼び出す前に、マルチモーダル入力をフィルタリングしてください +- structured な JSON 出力をサポートしないプロバイダーは、無効な JSON を生成することがあります \ No newline at end of file diff --git a/docs/ja/models/litellm.md b/docs/ja/models/litellm.md index 7dff14767..9cc8e02c2 100644 --- a/docs/ja/models/litellm.md +++ b/docs/ja/models/litellm.md @@ -6,13 +6,13 @@ search: !!! note - LiteLLM との統合は beta です。特に小規模なモデルプロバイダーでは問題が発生する可能性があります。問題があれば [GitHub issues](https://github.com/openai/openai-agents-python/issues) に報告してください。迅速に修正します。 + LiteLLM 統合はベータ版です。特に小規模なモデルプロバイダで問題が発生する可能性があります。問題があれば [GitHub issues](https://github.com/openai/openai-agents-python/issues) で報告してください。迅速に対応します。 -[LiteLLM](https://docs.litellm.ai/docs/) は、単一のインターフェースで 100+ のモデルを利用できるライブラリです。Agents SDK で任意の AI モデルを使えるようにするため、LiteLLM との統合を追加しました。 +[LiteLLM](https://docs.litellm.ai/docs/) は、単一のインターフェースで 100 以上のモデルを利用できるライブラリです。Agents SDK に LiteLLM 統合を追加し、任意の AI モデルを利用できるようにしました。 ## セットアップ -`litellm` が利用可能であることを確認する必要があります。オプションの `litellm` 依存関係グループをインストールすることで実行できます: +`litellm` を利用可能にする必要があります。オプションの `litellm` 依存関係グループをインストールしてください。 ```bash pip install "openai-agents[litellm]" @@ -22,13 +22,13 @@ pip install "openai-agents[litellm]" ## 例 -これは完全に動作する例です。実行すると、モデル名と API キーの入力を求められます。例えば次のように入力できます: +これは完全に動作する例です。実行すると、モデル名と API キーの入力を求められます。例えば次のように入力できます。 -- モデルには `openai/gpt-4.1`、API キーには OpenAI の API キー -- モデルには `anthropic/claude-3-5-sonnet-20240620`、API キーには Anthropic の API キー +- モデルに `openai/gpt-4.1`、API キーに OpenAI の API キー +- モデルに `anthropic/claude-3-5-sonnet-20240620`、API キーに Anthropic の API キー - など -LiteLLM でサポートされているモデルの一覧は、[litellm providers docs](https://docs.litellm.ai/docs/providers) を参照してください。 +LiteLLM でサポートされているモデルの一覧は、[litellm のプロバイダ ドキュメント](https://docs.litellm.ai/docs/providers) を参照してください。 ```python from __future__ import annotations diff --git a/docs/ja/multi_agent.md b/docs/ja/multi_agent.md index 95e222018..7e2de1e80 100644 --- a/docs/ja/multi_agent.md +++ b/docs/ja/multi_agent.md @@ -4,38 +4,38 @@ search: --- # 複数のエージェントのオーケストレーション -オーケストレーションとは、アプリ内でのエージェントの流れのことです。どのエージェントが、どの順番で動作し、その後どう決めるのか。エージェントをオーケストレーションする方法は主に 2 つあります。 +オーケストレーションとは、アプリ内でのエージェントの流れを指します。どのエージェントがどの順序で実行され、次に何をするかをどのように決めるか、ということです。エージェントをオーケストレーションする主な方法は 2 つあります。 -1. LLM に意思決定させる: LLM の知能を使って、計画・推論し、それに基づいて次に取るべきステップを決定します。 -2. コードでオーケストレーションする: コードによってエージェントの流れを決定します。 +1. LLM に意思決定させる方法: LLM の知能を用いて計画・推論し、それに基づいて次の実行ステップを決めます。 +2. コードでオーケストレーションする方法: コードでエージェントの流れを決定します。 -これらのパターンは組み合わせ可能です。それぞれにトレードオフがあります。以下で説明します。 +これらのパターンは組み合わせて使えます。それぞれにトレードオフがあり、以下で説明します。 ## LLM によるオーケストレーション -エージェントは、 instructions、tools、handoffs を備えた LLM です。つまり、オープンエンドなタスクが与えられたときに、LLM はタスクへの取り組み方を自律的に計画し、ツールを使って行動やデータ取得を行い、ハンドオフを使ってサブエージェントにタスクを委任できます。例えば、リサーチ用エージェントには次のようなツールを備えられます。 +エージェントは、instructions、ツール、ハンドオフを備えた LLM です。つまり、オープンエンドなタスクが与えられたとき、LLM はツールを使って行動やデータ取得を行い、ハンドオフでサブエージェントにタスクを委譲しながら、タスクに取り組む計画を自律的に立てられます。たとえば、リサーチ用のエージェントには次のようなツールを備えられます。 -- Web 検索でオンライン情報を探す -- ファイル検索と取得で独自データや接続先を横断検索する -- コンピュータ操作でコンピュータ上のアクションを実行する -- コード実行でデータ分析を行う -- 計画立案、レポート作成などが得意な特化エージェントへのハンドオフ +- Web 検索でオンライン情報を探す +- ファイル検索と取得で独自データや接続を横断的に検索する +- コンピュータ操作でコンピュータ上のアクションを実行する +- コード実行でデータ分析を行う +- 計画立案、レポート作成などに長けた専門エージェントへのハンドオフ -このパターンは、タスクがオープンエンドで、LLM の知能に依拠したい場合に適しています。ここで重要な戦術は次のとおりです。 +このパターンは、タスクがオープンエンドで、LLM の知能に依存したい場合に有効です。ここで重要な戦術は次のとおりです。 -1. 良いプロンプトに投資する。利用可能なツール、その使い方、守るべきパラメーターを明確にします。 -2. アプリを監視して反復する。どこで問題が起きるかを確認し、プロンプトを反復改善します。 -3. エージェントに内省と改善を許可する。例えばループで実行し、自己批評させる、またはエラーメッセージを提供して改善させます。 -4. 何でもこなす汎用エージェントではなく、1 つのタスクに特化して優れるエージェントを用意する。 -5. [Evals](https://platform.openai.com/docs/guides/evals) に投資する。これによりエージェントを訓練し、タスクの遂行能力を向上できます。 +1. 良いプロンプトに投資する。利用可能なツール、使い方、どのパラメーター内で動作すべきかを明確にします。 +2. アプリをモニタリングして改善を繰り返す。問題が起きる箇所を把握し、プロンプトを反復改善します。 +3. エージェントが内省して改善できるようにする。例: ループで実行して自己批評させる、エラーメッセージを与えて改善させる、など。 +4. 何でもできる汎用エージェントではなく、1 つのタスクに特化して卓越したエージェントを用意する。 +5. [evals](https://platform.openai.com/docs/guides/evals) に投資する。これによりエージェントを訓練し、タスク遂行力を向上できます。 ## コードによるオーケストレーション -LLM によるオーケストレーションは強力ですが、コードによるオーケストレーションは速度・コスト・性能の観点でより決定的かつ予測可能にできます。一般的なパターンは次のとおりです。 +LLM によるオーケストレーションは強力ですが、コードによるオーケストレーションは、速度・コスト・性能の面で、より決定的かつ予測可能になります。ここでの一般的なパターンは次のとおりです。 -- [structured outputs](https://platform.openai.com/docs/guides/structured-outputs) を使って、コードで検査可能な 適切な形式のデータ を生成する。例えば、エージェントにタスクをいくつかの カテゴリー に分類させ、その カテゴリー に基づいて次のエージェントを選択できます。 -- 複数のエージェントを連結し、1 つの出力を次の入力に変換する。ブログ記事の作成のようなタスクを、リサーチ、アウトライン作成、本文作成、批評、改善という一連のステップに分解できます。 -- タスクを実行するエージェントと評価・フィードバックを行うエージェントを `while` ループで回し、評価者が特定の基準を満たしたと判断するまで繰り返す。 -- 複数のエージェントを並列に実行する(例: Python の基本コンポーネントである `asyncio.gather` を使用)。相互に依存しない複数のタスクがある場合、速度向上に有用です。 +- [structured outputs](https://platform.openai.com/docs/guides/structured-outputs) を使って、コードで検査可能な 適切な形式のデータ を生成する。たとえば、エージェントにタスクをいくつかのカテゴリーに分類させ、カテゴリーに基づいて次に使うエージェントを選ぶ、といった方法です。 +- 複数のエージェントをチェーンして、あるエージェントの出力を次のエージェントの入力へと変換する。ブログ記事の執筆タスクを、調査 → アウトライン作成 → 本文執筆 → 批評 → 改善、という一連のステップに分解できます。 +- タスクを実行するエージェントと、評価・フィードバックを行うエージェントを `while` ループで回し、評価者が一定の基準を満たしたと判断するまで繰り返す。 +- 複数のエージェントを並列実行する(例: `asyncio.gather` のような Python の基本コンポーネントを使用)。相互依存のない複数タスクがある場合、速度向上に有用です。 -[`examples/agent_patterns`](https://github.com/openai/openai-agents-python/tree/main/examples/agent_patterns) に多数の code examples があります。 \ No newline at end of file +[`examples/agent_patterns`](https://github.com/openai/openai-agents-python/tree/main/examples/agent_patterns) にいくつかの code examples があります。 \ No newline at end of file diff --git a/docs/ja/quickstart.md b/docs/ja/quickstart.md index e518cdac0..60fad9973 100644 --- a/docs/ja/quickstart.md +++ b/docs/ja/quickstart.md @@ -6,7 +6,7 @@ search: ## プロジェクトと仮想環境の作成 -これは最初に 1 回だけ実施します。 +これは 1 回だけ実行すれば十分です。 ```bash mkdir my_project @@ -16,7 +16,7 @@ python -m venv .venv ### 仮想環境の有効化 -新しいターミナル セッションを開始するたびに実施します。 +新しいターミナル セッションを開始するたびに実行します。 ```bash source .venv/bin/activate @@ -30,7 +30,7 @@ pip install openai-agents # or `uv add openai-agents`, etc ### OpenAI API キーの設定 -未作成の場合は、[これらの手順](https://platform.openai.com/docs/quickstart#create-and-export-an-api-key)に従って OpenAI API キーを作成してください。 +お持ちでない場合は、[こちらの手順](https://platform.openai.com/docs/quickstart#create-and-export-an-api-key)に従って OpenAI API キーを作成してください。 ```bash export OPENAI_API_KEY=sk-... @@ -38,7 +38,7 @@ export OPENAI_API_KEY=sk-... ## 最初の エージェント の作成 -エージェントは instructions、名前、オプションの設定(`model_config` など)で定義します。 +エージェント は instructions、名前、および任意の設定(例: `model_config`)で定義します。 ```python from agents import Agent @@ -51,7 +51,7 @@ agent = Agent( ## さらにいくつかの エージェント を追加 -追加のエージェントも同様に定義できます。`handoff_descriptions` は、ハンドオフのルーティングを判断するための追加コンテキストを提供します。 +追加の エージェント も同様に定義できます。`handoff_descriptions` は、ハンドオフ のルーティングを判断するための追加コンテキストを提供します。 ```python from agents import Agent @@ -69,9 +69,9 @@ math_tutor_agent = Agent( ) ``` -## ハンドオフの定義 +## ハンドオフ の定義 -各エージェントで、タスクを前進させる方法を判断するために選択できる、送信側ハンドオフ オプションの一覧を定義できます。 +各 エージェント で、タスクを前進させる方法を決める際に選択できる、送信側の ハンドオフ オプションの在庫(一覧)を定義できます。 ```python triage_agent = Agent( @@ -81,9 +81,9 @@ triage_agent = Agent( ) ``` -## エージェントのオーケストレーションの実行 +## エージェント オーケストレーションの実行 -ワークフローが実行され、トリアージ エージェントが 2 つの専門 エージェント 間で正しくルーティングすることを確認しましょう。 +ワークフローが実行され、トリアージ エージェント が 2 つの専門 エージェント 間を正しくルーティングすることを確認しましょう。 ```python from agents import Runner @@ -95,7 +95,7 @@ async def main(): ## ガードレールの追加 -入力または出力で実行するカスタム ガードレールを定義できます。 +入力または出力に対して実行するカスタム ガードレールを定義できます。 ```python from agents import GuardrailFunctionOutput, Agent, Runner @@ -121,9 +121,9 @@ async def homework_guardrail(ctx, agent, input_data): ) ``` -## 全体の統合 +## すべてを組み合わせる -すべてをまとめて、ハンドオフと入力ガードレールを使い、ワークフロー全体を実行しましょう。 +すべてを組み合わせ、ハンドオフ と入力 ガードレール を使用してワークフロー全体を実行しましょう。 ```python from agents import Agent, InputGuardrail, GuardrailFunctionOutput, Runner @@ -192,12 +192,12 @@ if __name__ == "__main__": ## トレースの表示 -エージェント実行中に何が起きたかを確認するには、[OpenAI ダッシュボードの Trace viewer](https://platform.openai.com/traces) に移動し、エージェント実行のトレースを表示してください。 +エージェント 実行中に何が起きたかを確認するには、[OpenAI Dashboard の Trace viewer](https://platform.openai.com/traces) に移動し、エージェント 実行のトレースを表示します。 ## 次のステップ -より複雑なエージェント フローの構築方法を学びましょう: +より複雑な エージェント フローの構築方法を学びましょう: -- Learn about how to configure [エージェント](agents.md). -- Learn about [エージェントの実行](running_agents.md). -- Learn about [ツール](tools.md)、[ガードレール](guardrails.md)、[モデル](models/index.md)。 \ No newline at end of file +- エージェント の設定方法について学ぶ: [エージェント](agents.md)。 +- [エージェント の実行](running_agents.md)について学ぶ。 +- [ツール](tools.md)、[ガードレール](guardrails.md)、[モデル](models/index.md)について学ぶ。 \ No newline at end of file diff --git a/docs/ja/realtime/guide.md b/docs/ja/realtime/guide.md index 00e559215..a3875ddb1 100644 --- a/docs/ja/realtime/guide.md +++ b/docs/ja/realtime/guide.md @@ -4,59 +4,59 @@ search: --- # ガイド -このガイドでは、 OpenAI Agents SDK の realtime 機能を用いて音声対応の AI エージェントを構築する方法を詳しく説明します。 +このガイドでは、OpenAI Agents SDK の realtime 機能を使って音声対応の AI エージェントを構築する方法を詳しく説明します。 -!!! warning "Beta feature" -Realtime エージェントはベータ版です。実装の改善に伴い、破壊的変更が発生する可能性があります。 +!!! warning "ベータ機能" +Realtime エージェントはベータ版です。実装の改善に伴い、互換性を損なう変更が発生する可能性があります。 ## 概要 -Realtime エージェントは、会話フローを実現し、音声とテキストの入力をリアルタイムに処理して、リアルタイム音声で応答します。OpenAI の Realtime API と永続的な接続を維持し、低遅延で自然な音声会話と、割り込みへのスムーズな対応を可能にします。 +Realtime エージェントは、リアルタイムで音声とテキスト入力を処理し、リアルタイム音声で応答する会話フローを実現します。OpenAI の Realtime API と持続的な接続を維持し、低レイテンシで自然な音声対話を可能にし、割り込みにも適切に対応します。 ## アーキテクチャ -### 中核コンポーネント +### コアコンポーネント realtime システムは、いくつかの主要コンポーネントで構成されます。 -- **RealtimeAgent**: instructions、tools、handoffs で構成されたエージェント。 -- **RealtimeRunner**: 設定を管理します。`runner.run()` を呼び出してセッションを取得できます。 -- **RealtimeSession**: 単一の対話セッション。通常、ユーザーが会話を開始するたびに 1 つ作成し、会話が終了するまで維持します。 -- **RealtimeModel**: 基盤となるモデル インターフェース(一般的には OpenAI の WebSocket 実装) +- **RealtimeAgent**: instructions、tools、handoffs を設定したエージェントです。 +- **RealtimeRunner**: 構成を管理します。`runner.run()` を呼び出してセッションを取得できます。 +- **RealtimeSession**: 1 回の対話セッションです。通常は ユーザー が会話を開始するたびに作成し、会話が終了するまで維持します。 +- **RealtimeModel**: 基盤となるモデルインターフェース(通常は OpenAI の WebSocket 実装) ### セッションフロー -一般的な realtime セッションは次のフローに従います。 +一般的な realtime セッションは、次のフローに従います。 -1. instructions、tools、handoffs を使用して **RealtimeAgent を作成** します。 -2. エージェントと設定オプションで **RealtimeRunner をセットアップ** します。 -3. `await runner.run()` を使用して **セッションを開始** します。RealtimeSession が返されます。 -4. `send_audio()` または `send_message()` を使用して **音声またはテキストメッセージを送信** します。 -5. セッションを反復処理して **イベントをリッスン** します。イベントには音声出力、文字起こし、ツール呼び出し、ハンドオフ、エラーが含まれます。 -6. ユーザーがエージェントの発話に被せて話したときに **割り込みを処理** します。現在の音声生成は自動的に停止します。 +1. **RealtimeAgent を作成** し、instructions、tools、handoffs を設定します。 +2. **RealtimeRunner をセットアップ** し、エージェントと構成オプションを指定します。 +3. **セッションを開始** します。`await runner.run()` を使用すると RealtimeSession が返されます。 +4. **音声またはテキストメッセージを送信** します。`send_audio()` または `send_message()` を使用します。 +5. **イベントをリッスン** します。セッションを反復処理してイベントを受け取ります。イベントには音声出力、書き起こし、ツール呼び出し、ハンドオフ、エラーが含まれます。 +6. **割り込みに対応** します。ユーザー がエージェントの発話に重ねて話した場合、現在の音声生成は自動的に停止します。 -セッションは会話履歴を保持し、realtime モデルとの永続的な接続を管理します。 +セッションは会話履歴を保持し、realtime モデルとの持続的な接続を管理します。 -## エージェント設定 +## エージェントの設定 -RealtimeAgent は、通常の Agent クラスと同様に動作しますが、いくつか重要な違いがあります。API の詳細は、[`RealtimeAgent`][agents.realtime.agent.RealtimeAgent] の API リファレンスをご覧ください。 +RealtimeAgent は通常の Agent クラスと同様に動作しますが、いくつか重要な違いがあります。完全な API の詳細は、[`RealtimeAgent`][agents.realtime.agent.RealtimeAgent] の API リファレンスをご覧ください。 通常のエージェントとの主な違い: -- モデル選択はエージェント レベルではなく、セッション レベルで設定します。 -- structured outputs はサポートされません(`outputType` はサポートされません)。 -- 音声はエージェントごとに設定できますが、最初のエージェントが話し始めた後は変更できません。 -- その他の機能(tools、handoffs、instructions)は同様に動作します。 +- モデルの選択はエージェントレベルではなく、セッションレベルで構成します。 +- structured outputs はサポートされません(`outputType` は未対応です)。 +- 音声はエージェントごとに設定できますが、最初のエージェントが発話した後は変更できません。 +- その他の機能(tools、handoffs、instructions)は同じように動作します。 -## セッション設定 +## セッションの設定 ### モデル設定 -セッション設定では、基盤となる realtime モデルの動作を制御できます。モデル名(`gpt-4o-realtime-preview` など)、音声の選択(alloy、echo、fable、onyx、nova、shimmer)、サポートするモダリティ(テキストや音声)を設定できます。音声フォーマットは入力と出力の両方で設定でき、既定は PCM16 です。 +セッション構成では、基盤となる realtime モデルの動作を制御できます。モデル名(`gpt-4o-realtime-preview` など)、音声の選択(alloy、echo、fable、onyx、nova、shimmer)、対応するモダリティ(テキストおよび/または音声)を設定できます。音声フォーマットは入力・出力の両方で設定でき、デフォルトは PCM16 です。 -### 音声設定 +### オーディオ設定 -音声設定では、セッションが音声入力と出力をどのように扱うかを制御します。Whisper のようなモデルを使用した入力音声の文字起こし、言語設定、ドメイン固有用語の精度を高めるための文字起こしプロンプトを設定できます。応答開始・終了の検出(ターン検出)は、音声活動検出の閾値、無音時間、検出された発話の前後のパディングなどのオプションにより制御できます。 +オーディオ設定は、セッションが音声の入出力をどのように処理するかを制御します。Whisper などのモデルを使用した入力音声の書き起こし、言語設定、専門用語の精度を高めるための書き起こしプロンプトを設定できます。ターン検出設定により、エージェントが応答を開始・終了するタイミングを制御できます(音声活動検出のしきい値、無音時間、検出音声の前後パディングのオプションを含む)。 ## ツールと関数 @@ -90,7 +90,7 @@ agent = RealtimeAgent( ### ハンドオフの作成 -ハンドオフにより、特化したエージェント間で会話を移譲できます。 +ハンドオフにより、専門化されたエージェント間で会話を引き継ぐことができます。 ```python from agents.realtime import realtime_handoff @@ -119,22 +119,22 @@ main_agent = RealtimeAgent( ## イベント処理 -セッションは、セッションオブジェクトを反復処理することでリッスン可能なイベントをストリーム配信します。イベントには、音声出力チャンク、文字起こし結果、ツール実行の開始と終了、エージェントのハンドオフ、エラーが含まれます。特に処理すべき主なイベントは次のとおりです。 +セッションは、セッションオブジェクトを反復処理することでリッスンできるイベントを ストリーミング します。イベントには、音声出力チャンク、書き起こし結果、ツール実行の開始と終了、エージェントのハンドオフ、エラーが含まれます。特に処理すべき主要イベントは次のとおりです。 -- **audio**: エージェントの応答の生の音声データ -- **audio_end**: エージェントの発話が終了 -- **audio_interrupted**: ユーザーがエージェントを割り込み +- **audio**: エージェントの応答からの raw 音声データ +- **audio_end**: エージェントの発話が完了 +- **audio_interrupted**: ユーザー がエージェントを割り込み - **tool_start/tool_end**: ツール実行のライフサイクル - **handoff**: エージェントのハンドオフが発生 - **error**: 処理中にエラーが発生 -イベントの詳細は、[`RealtimeSessionEvent`][agents.realtime.events.RealtimeSessionEvent] を参照してください。 +イベントの詳細は、[`RealtimeSessionEvent`][agents.realtime.events.RealtimeSessionEvent] をご覧ください。 ## ガードレール -realtime エージェントでサポートされるのは出力ガードレールのみです。パフォーマンス上の問題を避けるため、これらのガードレールはデバウンスされ、リアルタイム生成の最中でも定期的に(すべての単語ごとではなく)実行されます。既定のデバウンス長は 100 文字ですが、設定で変更可能です。 +Realtime エージェントでサポートされるのは出力 ガードレール のみです。パフォーマンス問題を避けるため、これらの ガードレール はデバウンスされ、リアルタイム生成中に(毎語ではなく)定期的に実行されます。デフォルトのデバウンス長は 100 文字ですが、構成可能です。 -ガードレールは `RealtimeAgent` に直接アタッチするか、セッションの `run_config` から提供できます。両方のソースからのガードレールは併用して実行されます。 +ガードレール は `RealtimeAgent` に直接アタッチするか、セッションの `run_config` 経由で提供できます。両方のソースからの ガードレール は併せて実行されます。 ```python from agents.guardrail import GuardrailFunctionOutput, OutputGuardrail @@ -152,25 +152,25 @@ agent = RealtimeAgent( ) ``` -ガードレールがトリガーされると、`guardrail_tripped` イベントを生成し、エージェントの現在の応答を中断できます。デバウンス動作は、安全性とリアルタイムのパフォーマンス要件のバランスを取るのに役立ちます。テキスト エージェントと異なり、realtime エージェントはガードレールが発火しても例外を発生させません。 +ガードレール がトリガーされると、`guardrail_tripped` イベントが生成され、エージェントの現在の応答を中断できます。デバウンスの動作により、安全性とリアルタイム性能要件のバランスを取ります。テキストエージェントと異なり、realtime エージェントは ガードレール が作動しても Exception を発生させません。 -## 音声処理 +## オーディオ処理 -[`session.send_audio(audio_bytes)`][agents.realtime.session.RealtimeSession.send_audio] を使用して音声をセッションに送信するか、[`session.send_message()`][agents.realtime.session.RealtimeSession.send_message] を使用してテキストを送信します。 +[`session.send_audio(audio_bytes)`][agents.realtime.session.RealtimeSession.send_audio] を使って音声をセッションに送信するか、[`session.send_message()`][agents.realtime.session.RealtimeSession.send_message] を使ってテキストを送信します。 -音声出力については、`audio` イベントをリッスンし、お好みの音声ライブラリで音声データを再生してください。ユーザーがエージェントを割り込んだ際に即座に再生を停止し、キューにある音声をクリアするために、`audio_interrupted` イベントを必ずリッスンしてください。 +音声出力については、`audio` イベントをリッスンし、任意のオーディオライブラリで音声データを再生します。ユーザー がエージェントを割り込んだ際に即座に再生を停止し、キューにある音声をクリアするため、`audio_interrupted` イベントを必ずリッスンしてください。 -## 直接的なモデルアクセス +## 直接モデルアクセス -基盤となるモデルにアクセスして、カスタムリスナーを追加したり、高度な操作を実行したりできます。 +基盤となるモデルにアクセスして、カスタムリスナーを追加したり高度な操作を実行したりできます。 ```python # Add a custom listener to the model session.model.add_listener(my_custom_listener) ``` -これにより、接続を低レベルで制御する必要がある高度なユースケース向けに、[`RealtimeModel`][agents.realtime.model.RealtimeModel] インターフェースへ直接アクセスできます。 +これにより、接続を低レベルに制御する必要がある高度なユースケース向けに、[`RealtimeModel`][agents.realtime.model.RealtimeModel] インターフェースへ直接アクセスできます。 -## 例 +## コード例 -完全な動作する code examples は、UI コンポーネントあり/なしのデモを含む [examples/realtime ディレクトリ](https://github.com/openai/openai-agents-python/tree/main/examples/realtime) を参照してください。 \ No newline at end of file +完全に動作するコード例は、[examples/realtime ディレクトリ](https://github.com/openai/openai-agents-python/tree/main/examples/realtime) をご覧ください。UI コンポーネントあり/なしのデモを含みます。 \ No newline at end of file diff --git a/docs/ja/realtime/quickstart.md b/docs/ja/realtime/quickstart.md index bb6700d60..d5b771b83 100644 --- a/docs/ja/realtime/quickstart.md +++ b/docs/ja/realtime/quickstart.md @@ -4,10 +4,10 @@ search: --- # クイックスタート -リアルタイム エージェントは、OpenAI の Realtime API を使って AI エージェントとの音声対話を可能にします。本ガイドでは、最初のリアルタイム音声エージェントの作成手順を説明します。 +Realtime エージェントは、OpenAI の Realtime API を使って AI エージェントとの音声対話を可能にします。本ガイドでは、最初のリアルタイム音声エージェントの作成方法を説明します。 !!! warning "ベータ機能" -Realtime エージェントはベータ版です。実装改善に伴い、破壊的な変更が入る可能性があります。 +Realtime エージェントはベータ版です。実装の改善に伴い、重大な変更が入る可能性があります。 ## 前提条件 @@ -23,7 +23,7 @@ Realtime エージェントはベータ版です。実装改善に伴い、破 pip install openai-agents ``` -## 最初のリアルタイム エージェントの作成 +## 最初のリアルタイムエージェントの作成 ### 1. 必要なコンポーネントのインポート @@ -32,7 +32,7 @@ import asyncio from agents.realtime import RealtimeAgent, RealtimeRunner ``` -### 2. リアルタイム エージェントの作成 +### 2. リアルタイムエージェントの作成 ```python agent = RealtimeAgent( @@ -41,7 +41,7 @@ agent = RealtimeAgent( ) ``` -### 3. Runner のセットアップ +### 3. ランナーのセットアップ ```python runner = RealtimeRunner( @@ -140,8 +140,8 @@ if __name__ == "__main__": ### モデル設定 - `model_name`: 利用可能なリアルタイムモデルから選択 (例: `gpt-4o-realtime-preview`) -- `voice`: 音声を選択 (`alloy`, `echo`, `fable`, `onyx`, `nova`, `shimmer`) -- `modalities`: テキストや音声を有効化 (`["text", "audio"]`) +- `voice`: 音声の選択 (`alloy`, `echo`, `fable`, `onyx`, `nova`, `shimmer`) +- `modalities`: テキストおよび/または音声を有効化 (`["text", "audio"]`) ### 音声設定 @@ -151,15 +151,15 @@ if __name__ == "__main__": ### ターン検出 -- `type`: 検出方式 (`server_vad`, `semantic_vad`) -- `threshold`: 音声活動のしきい値 (0.0–1.0) +- `type`: 検出方法 (`server_vad`, `semantic_vad`) +- `threshold`: 音声活動のしきい値 (0.0-1.0) - `silence_duration_ms`: ターン終了を検出する無音時間 - `prefix_padding_ms`: 発話前の音声パディング ## 次のステップ -- [リアルタイム エージェントの詳細](guide.md) -- 動作するコードは [examples/realtime](https://github.com/openai/openai-agents-python/tree/main/examples/realtime) フォルダを参照 +- [リアルタイムエージェントの詳細](guide.md) +- [examples/realtime](https://github.com/openai/openai-agents-python/tree/main/examples/realtime) フォルダ内の動作する sample code を参照 - エージェントにツールを追加 - エージェント間のハンドオフを実装 - 安全性のためのガードレールを設定 diff --git a/docs/ja/release.md b/docs/ja/release.md index a68ef7d59..7d8fb0fdd 100644 --- a/docs/ja/release.md +++ b/docs/ja/release.md @@ -4,29 +4,29 @@ search: --- # リリースプロセス/変更履歴 -本プロジェクトは、`0.Y.Z` の形式による、やや修正されたセマンティック バージョニングに従います。先頭の 0 は、SDK が依然として急速に進化していることを示します。各コンポーネントの増分規則は次のとおりです。 +本プロジェクトは、`0.Y.Z` という形式のセマンティック バージョニングを一部変更して採用しています。先頭の `0` は SDK がまだ急速に進化していることを示します。各コンポーネントの増分は次のとおりです。 -## マイナー ( `Y` ) バージョン +## マイナー(`Y`)バージョン -ベータとしてマークされていないあらゆる公開インターフェースに対する **破壊的変更** では、マイナーバージョン `Y` を上げます。たとえば、`0.0.x` から `0.1.x` への移行には破壊的変更が含まれる場合があります。 +ベータではない公開インターフェースに対する **破壊的変更** の場合、マイナー バージョン `Y` を増やします。たとえば、`0.0.x` から `0.1.x` への移行には破壊的変更が含まれることがあります。 -破壊的変更を避けたい場合は、プロジェクトで `0.0.x` バージョンにピン留めすることを推奨します。 +破壊的変更を避けたい場合は、プロジェクトで `0.0.x` バージョンに固定することをおすすめします。 -## パッチ ( `Z` ) バージョン +## パッチ(`Z`)バージョン -非互換ではない変更については `Z` を増やします: +後方互換のある変更では `Z` を増やします。 - バグ修正 - 新機能 - 非公開インターフェースの変更 - ベータ機能の更新 -## 破壊的変更の変更履歴 +## 破壊的変更の履歴 ### 0.2.0 -このバージョンでは、これまで引数として `Agent` を受け取っていたいくつかの箇所が、代わりに `AgentBase` を受け取るようになりました。例: MCP サーバーでの `list_tools()` 呼び出し。これは純粋に型付けに関する変更であり、引き続き `Agent` オブジェクトを受け取ります。更新するには、型エラーを `Agent` を `AgentBase` に置き換えることで解消してください。 +このバージョンでは、以前は引数として `Agent` を受け取っていた一部の箇所が、代わりに `AgentBase` を受け取るようになりました。たとえば、MCP サーバーでの `list_tools()` 呼び出しです。これは純粋に型に関する変更であり、引き続き `Agent` オブジェクトを受け取ります。更新するには、`Agent` を `AgentBase` に置き換えて型エラーを修正してください。 ### 0.1.0 -このバージョンでは、[`MCPServer.list_tools()`][agents.mcp.server.MCPServer] に 2 つの新しいパラメーター `run_context` と `agent` が追加されました。`MCPServer` を継承する任意のクラスに、これらのパラメーターを追加する必要があります。 \ No newline at end of file +このバージョンでは、[`MCPServer.list_tools()`][agents.mcp.server.MCPServer] に新しいパラメーター `run_context` と `agent` が追加されました。`MCPServer` を継承するすべてのクラスにこれらのパラメーターを追加する必要があります。 \ No newline at end of file diff --git a/docs/ja/repl.md b/docs/ja/repl.md index e326f0181..ce8e74e31 100644 --- a/docs/ja/repl.md +++ b/docs/ja/repl.md @@ -4,8 +4,7 @@ search: --- # REPL ユーティリティ -この SDK は、ターミナルでエージェントの挙動をすばやく対話的にテストできる `run_demo_loop` を提供します。 - +この SDK は、ターミナル上でエージェントの挙動をすばやく対話的にテストできる `run_demo_loop` を提供します。 ```python import asyncio @@ -19,6 +18,6 @@ if __name__ == "__main__": asyncio.run(main()) ``` -`run_demo_loop` はループでユーザー入力を促し、ターン間で会話履歴を保持します。デフォルトでは、生成されたそばからモデルの出力をストリーミングします。上記の例を実行すると、`run_demo_loop` は対話型のチャットセッションを開始します。継続的に入力を求め、ターン間で会話全体の履歴を記憶し(そのためエージェントは何が話されたかを把握できます)、生成と同時にエージェントの応答をリアルタイムで自動でストリーミングします。 +`run_demo_loop` はループでユーザー入力を促し、ターン間の会話履歴を保持します。デフォルトでは、生成されたモデル出力をそのままストリーミングします。上記の例を実行すると、`run_demo_loop` は対話的なチャットセッションを開始します。入力を継続的に求め、ターン間の会話全体の履歴を記憶するため(エージェントは何が議論されたかを把握できます)、エージェントの応答は生成され次第リアルタイムに自動であなたへストリーミングされます。 -このチャットセッションを終了するには、`quit` または `exit` と入力して(そして Enter を押す)、または `Ctrl-D` のキーボードショートカットを使用します。 \ No newline at end of file +このチャットセッションを終了するには、`quit` または `exit` と入力して(Enter キーを押す)か、`Ctrl-D` キーボードショートカットを使用します。 \ No newline at end of file diff --git a/docs/ja/results.md b/docs/ja/results.md index 62b86c079..dd9d14085 100644 --- a/docs/ja/results.md +++ b/docs/ja/results.md @@ -4,53 +4,53 @@ search: --- # 結果 -`Runner.run` メソッドを呼び出すと、以下のいずれかが得られます。 +`Runner.run` メソッドを呼び出すと、次のいずれかが返ります。 -- [`RunResult`][agents.result.RunResult](`run` または `run_sync` を呼び出した場合) -- [`RunResultStreaming`][agents.result.RunResultStreaming](`run_streamed` を呼び出した場合) +- [`RunResult`][agents.result.RunResult](`run` または `run_sync` を呼び出した場合) +- [`RunResultStreaming`][agents.result.RunResultStreaming](`run_streamed` を呼び出した場合) -どちらも [`RunResultBase`][agents.result.RunResultBase] を継承しており、最も有用な情報はここに含まれます。 +これらはどちらも [`RunResultBase`][agents.result.RunResultBase] を継承しており、ほとんどの有用な情報はここに含まれます。 ## 最終出力 -[`final_output`][agents.result.RunResultBase.final_output] プロパティには、最後に実行されたエージェントの最終出力が含まれます。これは次のいずれかです。 +[`final_output`][agents.result.RunResultBase.final_output] プロパティには、最後に実行された エージェント の最終出力が含まれます。これは次のいずれかです。 -- 最後のエージェントに `output_type` が定義されていない場合は `str` -- エージェントに出力型が定義されている場合は、`last_agent.output_type` 型のオブジェクト +- 最後の エージェント に `output_type` が定義されていない場合は `str` +- エージェント に出力型が定義されている場合は、`last_agent.output_type` 型のオブジェクト !!! note - `final_output` は型が `Any` です。ハンドオフがあるため、静的型付けはできません。ハンドオフが発生する場合、最後のエージェントは任意になり得るため、可能な出力型の集合を静的に特定できません。 + `final_output` の型は `Any` です。これは ハンドオフ のために静的型付けできません。ハンドオフ が発生すると、どの エージェント でも最後の エージェント になり得るため、可能な出力型の集合を静的に知ることはできません。 ## 次ターンの入力 -[`result.to_input_list()`][agents.result.RunResultBase.to_input_list] を使用すると、提供した元の入力に、エージェントの実行中に生成されたアイテムを連結した入力リストに変換できます。これにより、あるエージェント実行の出力を別の実行に渡したり、ループで実行して毎回新しい ユーザー 入力を追加したりすることが容易になります。 +[`result.to_input_list()`][agents.result.RunResultBase.to_input_list] を使うと、提供した元の入力と、エージェント の実行中に生成されたアイテムを連結した入力リストに変換できます。これにより、ある エージェント 実行の出力を別の実行に渡したり、ループで実行して毎回新しい ユーザー 入力を追加したりするのが簡単になります。 ## 最後のエージェント -[`last_agent`][agents.result.RunResultBase.last_agent] プロパティには、最後に実行されたエージェントが含まれます。アプリケーションによっては、次回 ユーザー が何かを入力する際に有用です。例えば、フロントラインのトリアージ エージェントが言語別のエージェントにハンドオフする場合、最後のエージェントを保存しておき、次回 ユーザー がそのエージェントにメッセージを送る際に再利用できます。 +[`last_agent`][agents.result.RunResultBase.last_agent] プロパティには、最後に実行された エージェント が含まれます。アプリケーションによっては、次回 ユーザー が何かを入力する際に役立つことが多いです。たとえば、フロントラインのトリアージ エージェント が言語別の エージェント に ハンドオフ する場合、最後の エージェント を保存しておき、次回 ユーザー がメッセージを送るときに再利用できます。 ## 新規アイテム -[`new_items`][agents.result.RunResultBase.new_items] プロパティには、実行中に生成された新しいアイテムが含まれます。アイテムは [`RunItem`][agents.items.RunItem] です。Run item は、LLM が生成した raw アイテムをラップします。 +[`new_items`][agents.result.RunResultBase.new_items] プロパティには、実行中に生成された新しいアイテムが含まれます。アイテムは [`RunItem`][agents.items.RunItem] です。実行アイテムは、LLM が生成した raw アイテムをラップします。 -- [`MessageOutputItem`][agents.items.MessageOutputItem]: LLM からのメッセージを示します。raw アイテムは生成されたメッセージです。 -- [`HandoffCallItem`][agents.items.HandoffCallItem]: LLM がハンドオフツールを呼び出したことを示します。raw アイテムは LLM のツール呼び出しアイテムです。 -- [`HandoffOutputItem`][agents.items.HandoffOutputItem]: ハンドオフが発生したことを示します。raw アイテムはハンドオフツール呼び出しへのツール応答です。アイテムからソース/ターゲットのエージェントにもアクセスできます。 -- [`ToolCallItem`][agents.items.ToolCallItem]: LLM がツールを呼び出したことを示します。 -- [`ToolCallOutputItem`][agents.items.ToolCallOutputItem]: ツールが呼び出されたことを示します。raw アイテムはツール応答です。アイテムからツール出力にもアクセスできます。 -- [`ReasoningItem`][agents.items.ReasoningItem]: LLM の推論アイテムを示します。raw アイテムは生成された推論です。 +- [`MessageOutputItem`][agents.items.MessageOutputItem] は LLM からのメッセージを表します。raw アイテムは生成されたメッセージです。 +- [`HandoffCallItem`][agents.items.HandoffCallItem] は、LLM が ハンドオフ ツールを呼び出したことを示します。raw アイテムは LLM のツール呼び出しアイテムです。 +- [`HandoffOutputItem`][agents.items.HandoffOutputItem] は、ハンドオフ が発生したことを示します。raw アイテムは ハンドオフ ツール呼び出しに対するツールのレスポンスです。アイテムからソース/ターゲットの エージェント にもアクセスできます。 +- [`ToolCallItem`][agents.items.ToolCallItem] は、LLM がツールを呼び出したことを示します。 +- [`ToolCallOutputItem`][agents.items.ToolCallOutputItem] は、ツールが呼び出されたことを示します。raw アイテムはツールのレスポンスです。アイテムからツールの出力にもアクセスできます。 +- [`ReasoningItem`][agents.items.ReasoningItem] は、LLM からの推論アイテムを示します。raw アイテムは生成された推論です。 ## その他の情報 ### ガードレールの結果 -[`input_guardrail_results`][agents.result.RunResultBase.input_guardrail_results] および [`output_guardrail_results`][agents.result.RunResultBase.output_guardrail_results] プロパティには、存在する場合はガードレールの結果が含まれます。ガードレールの結果には、ログや保存に役立つ情報が含まれることがあるため、利用できるようにしています。 +[`input_guardrail_results`][agents.result.RunResultBase.input_guardrail_results] と [`output_guardrail_results`][agents.result.RunResultBase.output_guardrail_results] プロパティには、該当する場合に ガードレール の結果が含まれます。ガードレール の結果には、記録または保存したい有用な情報が含まれることがあるため、これらを利用できるようにしています。 -### Raw 応答 +### raw 応答 [`raw_responses`][agents.result.RunResultBase.raw_responses] プロパティには、LLM によって生成された [`ModelResponse`][agents.items.ModelResponse] が含まれます。 ### 元の入力 -[`input`][agents.result.RunResultBase.input] プロパティには、`run` メソッドに提供した元の入力が含まれます。多くの場合これは不要ですが、必要な場合に備えて利用できます。 \ No newline at end of file +[`input`][agents.result.RunResultBase.input] プロパティには、`run` メソッドに提供した元の入力が含まれます。ほとんどの場合これは不要ですが、必要に応じて利用できます。 \ No newline at end of file diff --git a/docs/ja/running_agents.md b/docs/ja/running_agents.md index 06d08ea72..f6fb1c75c 100644 --- a/docs/ja/running_agents.md +++ b/docs/ja/running_agents.md @@ -6,9 +6,9 @@ search: エージェントは [`Runner`][agents.run.Runner] クラスで実行できます。方法は 3 つあります。 -1. [`Runner.run()`][agents.run.Runner.run]: 非同期で実行され、[`RunResult`][agents.result.RunResult] を返します。 +1. [`Runner.run()`][agents.run.Runner.run]: 非同期で実行し、[`RunResult`][agents.result.RunResult] を返します。 2. [`Runner.run_sync()`][agents.run.Runner.run_sync]: 同期メソッドで、内部的には `.run()` を実行します。 -3. [`Runner.run_streamed()`][agents.run.Runner.run_streamed]: 非同期で実行され、[`RunResultStreaming`][agents.result.RunResultStreaming] を返します。LLM を ストリーミング モードで呼び出し、受信したイベントをそのまま ストリーミング します。 +3. [`Runner.run_streamed()`][agents.run.Runner.run_streamed]: 非同期で実行し、[`RunResultStreaming`][agents.result.RunResultStreaming] を返します。LLM を ストリーミング モードで呼び出し、受信したイベントを逐次 ストリーミング します。 ```python from agents import Agent, Runner @@ -23,51 +23,51 @@ async def main(): # Infinite loop's dance ``` -詳細は [結果ガイド](results.md) を参照してください。 +詳しくは [実行結果ガイド](results.md) を参照してください。 ## エージェントループ -`Runner` の run メソッドを使うとき、開始エージェントと入力を渡します。入力は文字列(ユーザー メッセージと見なされます)か、OpenAI Responses API のアイテムのリストのどちらかです。 +`Runner` の run メソッドを使用する際は、開始エージェントと入力を渡します。入力は文字列(ユーザー メッセージと見なされます)または OpenAI Responses API のアイテムのリストのいずれかです。 -その後、Runner は以下のループを実行します。 +Runner は次のループを実行します。 -1. 現在のエージェントに対して、現在の入力で LLM を呼び出します。 +1. 現在のエージェントと現在の入力で LLM を呼び出します。 2. LLM が出力を生成します。 - 1. LLM が `final_output` を返した場合、ループを終了し、結果を返します。 - 2. LLM が ハンドオフ を行った場合、現在のエージェントと入力を更新して、ループを再実行します。 - 3. LLM が ツール呼び出し を行った場合、それらを実行し、結果を追加して、ループを再実行します。 + 1. LLM が `final_output` を返した場合、ループを終了し結果を返します。 + 2. LLM が ハンドオフ を行った場合、現在のエージェントと入力を更新してループを再実行します。 + 3. LLM が ツール呼び出し を生成した場合、それらを実行して結果を追加し、ループを再実行します。 3. 渡された `max_turns` を超えた場合、[`MaxTurnsExceeded`][agents.exceptions.MaxTurnsExceeded] 例外を送出します。 !!! note - LLM の出力が「最終出力」と見なされるルールは、目的の型のテキスト出力を生成し、ツール呼び出しがない場合です。 + LLM の出力が「最終出力」と見なされる条件は、望ましい型のテキスト出力を生成し、かつツール呼び出しが存在しないことです。 ## ストリーミング -ストリーミング を使うと、LLM の実行中に ストリーミング イベントも受け取れます。ストリームが完了すると、[`RunResultStreaming`][agents.result.RunResultStreaming] に、その実行で生成されたすべての新規出力を含む、実行の完全な情報が格納されます。ストリーミング イベントは `.stream_events()` を呼び出して取得できます。詳細は [ストリーミング ガイド](streaming.md) を参照してください。 +ストリーミング を使用すると、LLM の実行中に ストリーミング イベントも受け取れます。ストリームが完了すると、[`RunResultStreaming`][agents.result.RunResultStreaming] に、生成されたすべての新規出力を含む実行の完全な情報が含まれます。ストリーミング イベントは `.stream_events()` を呼び出して取得できます。詳しくは [ストリーミング ガイド](streaming.md) を参照してください。 -## 実行設定 (Run config) +## 実行設定 -`run_config` パラメーターでは、エージェント実行のグローバル設定をいくつか構成できます。 +`run_config` パラメーターでは、エージェント実行のグローバル設定を構成できます。 - [`model`][agents.run.RunConfig.model]: 各 Agent の `model` 設定に関わらず、使用するグローバルな LLM モデルを設定できます。 -- [`model_provider`][agents.run.RunConfig.model_provider]: モデル名を解決するためのモデルプロバイダーで、デフォルトは OpenAI です。 +- [`model_provider`][agents.run.RunConfig.model_provider]: モデル名を解決するモデルプロバイダで、既定は OpenAI です。 - [`model_settings`][agents.run.RunConfig.model_settings]: エージェント固有の設定を上書きします。たとえば、グローバルな `temperature` や `top_p` を設定できます。 -- [`input_guardrails`][agents.run.RunConfig.input_guardrails], [`output_guardrails`][agents.run.RunConfig.output_guardrails]: すべての実行に適用する入力/出力 ガードレール のリストです。 -- [`handoff_input_filter`][agents.run.RunConfig.handoff_input_filter]: すでに設定されていない ハンドオフ に対して適用するグローバルな入力フィルターです。入力フィルターを使うと、新しいエージェントに送信する入力を編集できます。詳細は [`Handoff.input_filter`][agents.handoffs.Handoff.input_filter] のドキュメントを参照してください。 -- [`tracing_disabled`][agents.run.RunConfig.tracing_disabled]: 実行全体の [トレーシング](tracing.md) を無効化できます。 -- [`trace_include_sensitive_data`][agents.run.RunConfig.trace_include_sensitive_data]: LLM やツール呼び出しの入出力など、潜在的に機微なデータをトレースに含めるかどうかを設定します。 -- [`workflow_name`][agents.run.RunConfig.workflow_name], [`trace_id`][agents.run.RunConfig.trace_id], [`group_id`][agents.run.RunConfig.group_id]: 実行のトレーシングにおけるワークフロー名、トレース ID、トレース グループ ID を設定します。少なくとも `workflow_name` の設定を推奨します。グループ ID は任意で、複数の実行にわたってトレースを関連付けるのに使えます。 +- [`input_guardrails`][agents.run.RunConfig.input_guardrails], [`output_guardrails`][agents.run.RunConfig.output_guardrails]: すべての実行に含める入力または出力の ガードレール のリストです。 +- [`handoff_input_filter`][agents.run.RunConfig.handoff_input_filter]: ハンドオフ に入力フィルターが設定されていない場合に適用するグローバル入力フィルターです。入力フィルターにより、新しいエージェントに送信される入力を編集できます。詳細は [`Handoff.input_filter`][agents.handoffs.Handoff.input_filter] のドキュメントを参照してください。 +- [`tracing_disabled`][agents.run.RunConfig.tracing_disabled]: 実行全体の [トレーシング](tracing.md) を無効化します。 +- [`trace_include_sensitive_data`][agents.run.RunConfig.trace_include_sensitive_data]: LLM やツール呼び出しの入出力など、機微なデータをトレースに含めるかどうかを設定します。 +- [`workflow_name`][agents.run.RunConfig.workflow_name], [`trace_id`][agents.run.RunConfig.trace_id], [`group_id`][agents.run.RunConfig.group_id]: 実行のトレーシングにおけるワークフロー名、トレース ID、トレース グループ ID を設定します。少なくとも `workflow_name` の設定を推奨します。グループ ID は任意で、複数の実行にまたがるトレースを関連付けるのに使用できます。 - [`trace_metadata`][agents.run.RunConfig.trace_metadata]: すべてのトレースに含めるメタデータです。 ## 会話/チャットスレッド -いずれの run メソッドを呼び出しても、1 つ以上のエージェント(したがって 1 回以上の LLM 呼び出し)が実行されることがありますが、チャット会話における 1 つの論理的なターンを表します。例: +いずれかの run メソッドを呼び出すと、1 つ以上のエージェント(つまり 1 回以上の LLM 呼び出し)が実行される可能性がありますが、チャット会話における 1 つの論理ターンを表します。例: 1. ユーザーのターン: ユーザーがテキストを入力 -2. Runner の実行: 最初のエージェントが LLM を呼び出し、ツールを実行し、2 つ目のエージェントに ハンドオフ、2 つ目のエージェントがさらにツールを実行し、その後に出力を生成。 +2. Runner の実行: 最初のエージェントが LLM を呼び出し、ツールを実行し、2 番目のエージェントへ ハンドオフ。2 番目のエージェントがさらにツールを実行し、その後に出力を生成。 -エージェントの実行が終わったら、ユーザーに何を見せるかを選べます。たとえば、エージェントが生成したすべての新規アイテムを表示することも、最終出力だけを表示することもできます。いずれにせよ、ユーザーが追質問をするかもしれないので、その場合は再度 run メソッドを呼び出します。 +エージェントの実行の最後に、ユーザーに何を表示するかを選べます。たとえば、エージェントが生成したすべての新規アイテムを表示するか、最終出力だけを表示するかです。いずれにしても、その後にユーザーが追質問をする可能性があり、その場合は再度 run メソッドを呼び出します。 ### 手動での会話管理 @@ -93,7 +93,7 @@ async def main(): ### Sessions による自動会話管理 -より簡単な方法として、[Sessions](sessions.md) を使うと、`.to_input_list()` を手動で呼び出さずに会話履歴を自動的に処理できます。 +より簡単な方法として、[Sessions](sessions.md) を使えば、`.to_input_list()` を手動で呼び出すことなく会話履歴を自動処理できます。 ```python from agents import Agent, Runner, SQLiteSession @@ -116,26 +116,26 @@ async def main(): # California ``` -Sessions は自動で以下を行います。 +Sessions は自動的に次を行います。 - 各実行前に会話履歴を取得 - 各実行後に新しいメッセージを保存 -- 異なるセッション ID ごとに別々の会話を維持 +- 異なるセッション ID ごとに個別の会話を維持 詳細は [Sessions のドキュメント](sessions.md) を参照してください。 -## 長時間実行のエージェントと human-in-the-loop +## 長時間実行エージェントと human-in-the-loop -Agents SDK の [Temporal](https://temporal.io/) 連携を使用すると、human-in-the-loop のタスクを含む、永続的で長時間実行のワークフローを実行できます。Temporal と Agents SDK が連携して長時間タスクを完了するデモは[この動画](https://www.youtube.com/watch?v=fFBZqzT4DD8)で、ドキュメントは[こちら](https://github.com/temporalio/sdk-python/tree/main/temporalio/contrib/openai_agents)で確認できます。 +Agents SDK の [Temporal](https://temporal.io/) 連携を使うと、human-in-the-loop タスクを含む、耐久性のある長時間実行ワークフローを実行できます。Temporal と Agents SDK が連携して長時間タスクを完了するデモは [この動画](https://www.youtube.com/watch?v=fFBZqzT4DD8) を、ドキュメントは [こちら](https://github.com/temporalio/sdk-python/tree/main/temporalio/contrib/openai_agents) をご覧ください。 ## 例外 SDK は特定の場合に例外を送出します。完全な一覧は [`agents.exceptions`][] にあります。概要は次のとおりです。 -- [`AgentsException`][agents.exceptions.AgentsException]: SDK 内で送出されるすべての例外の基底クラスです。ほかのすべての特定の例外はここから派生します。 -- [`MaxTurnsExceeded`][agents.exceptions.MaxTurnsExceeded]: エージェントの実行が `max_turns` 制限を超えたときに送出されます。`Runner.run`、`Runner.run_sync`、`Runner.run_streamed` メソッドに適用されます。所定の対話ターン数内にタスクを完了できなかったことを示します。 -- [`ModelBehaviorError`][agents.exceptions.ModelBehaviorError]: 基盤のモデル (LLM) が予期しない、または無効な出力を生成した場合に発生します。例: - - 不正な JSON: ツール呼び出し用、または直接の出力として不正な JSON 構造を返した場合(特に特定の `output_type` が定義されているとき)。 - - 予期しないツール関連の失敗: ツールを期待どおりに使用できなかった場合 -- [`UserError`][agents.exceptions.UserError]: SDK を使用するあなた(SDK を用いてコードを書く人)が誤りを犯した場合に送出されます。これは通常、不正なコード実装、無効な設定、SDK の API の誤用が原因です。 -- [`InputGuardrailTripwireTriggered`][agents.exceptions.InputGuardrailTripwireTriggered], [`OutputGuardrailTripwireTriggered`][agents.exceptions.OutputGuardrailTripwireTriggered]: 入力 ガードレール または出力 ガードレール の条件が満たされたときに、それぞれ送出されます。入力 ガードレール は処理前に受信メッセージを確認し、出力 ガードレール は配信前にエージェントの最終応答を確認します。 \ No newline at end of file +- [`AgentsException`][agents.exceptions.AgentsException]: SDK 内で送出されるすべての例外の基底クラスです。ほかの特定の例外はすべてこの型から派生します。 +- [`MaxTurnsExceeded`][agents.exceptions.MaxTurnsExceeded]: エージェントの実行が `Runner.run`、`Runner.run_sync`、または `Runner.run_streamed` メソッドに渡した `max_turns` 制限を超えた場合に送出されます。指定されたやり取り回数内にタスクを完了できなかったことを示します。 +- [`ModelBehaviorError`][agents.exceptions.ModelBehaviorError]: 基盤となるモデル(LLM)が予期しない、または無効な出力を生成した場合に発生します。例: + - 不正な JSON: 特定の `output_type` が定義されている場合に、ツール呼び出しや直接の出力で不正な JSON 構造が提供されたとき。 + - 予期しないツール関連の失敗: モデルが期待どおりの方法でツールを使用できなかったとき +- [`UserError`][agents.exceptions.UserError]: SDK を使用するあなた(この SDK を用いてコードを書く人)が誤りを犯した場合に送出されます。これは通常、不適切なコード実装、無効な設定、または SDK の API の誤用が原因です。 +- [`InputGuardrailTripwireTriggered`][agents.exceptions.InputGuardrailTripwireTriggered], [`OutputGuardrailTripwireTriggered`][agents.exceptions.OutputGuardrailTripwireTriggered]: それぞれ、入力 ガードレール または出力 ガードレール の条件が満たされたときに送出されます。入力 ガードレール は処理前に受信メッセージを検査し、出力 ガードレール はエージェントの最終応答を配信前に検査します。 \ No newline at end of file diff --git a/docs/ja/sessions.md b/docs/ja/sessions.md index c3c820861..c4c79a5f4 100644 --- a/docs/ja/sessions.md +++ b/docs/ja/sessions.md @@ -4,9 +4,9 @@ search: --- # セッション -Agents SDK は、複数のエージェント実行にわたって会話履歴を自動的に保持する組み込みセッションメモリを提供し、ターン間で手動で `.to_input_list()` を扱う必要をなくします。 +OpenAI Agents SDK は、複数のエージェント実行にわたって会話履歴を自動的に維持する組み込みのセッションメモリを提供し、ターン間で `.to_input_list()` を手動で扱う必要をなくします。 -セッションは特定のセッションの会話履歴を保存し、エージェントが明示的な手動メモリ管理なしでコンテキストを維持できるようにします。これは、エージェントに過去のやり取りを記憶させたいチャットアプリケーションやマルチターン会話を構築する際に特に有用です。 +セッションは特定のセッションに対して会話履歴を保存し、明示的な手動メモリ管理なしにエージェントがコンテキストを維持できるようにします。これは、チャットアプリケーションや、エージェントに以前のやり取りを記憶してほしいマルチターンの会話を構築する際に特に有用です。 ## クイックスタート @@ -51,17 +51,17 @@ print(result.final_output) # "Approximately 39 million" セッションメモリが有効な場合: -1. **各実行前** : ランナーはセッションの会話履歴を自動で取得し、入力アイテムの先頭に追加します。 -2. **各実行後** : 実行中に生成された新しいアイテム (ユーザー入力、アシスタント応答、ツール呼び出しなど) はすべて自動的にセッションに保存されます。 -3. **コンテキストの保持** : 同じセッションでの後続の実行には完全な会話履歴が含まれ、エージェントがコンテキストを維持できます。 +1. **各実行の前**: ランナーはセッションの会話履歴を自動的に取得し、入力アイテムの先頭に追加します。 +2. **各実行の後**: 実行中に生成された新しいアイテム(ユーザー入力、アシスタント応答、ツール呼び出しなど)はすべて自動的にセッションに保存されます。 +3. **コンテキストの維持**: 同じセッションでの後続の実行には完全な会話履歴が含まれ、エージェントはコンテキストを維持できます。 -これにより、実行間で `.to_input_list()` を手動で呼び出したり、会話状態を管理したりする必要がなくなります。 +これにより、`.to_input_list()` を手動で呼び出して、実行間で会話状態を管理する必要がなくなります。 ## メモリ操作 ### 基本操作 -セッションは会話履歴を管理するための複数の操作をサポートします: +セッションは会話履歴を管理するためにいくつかの操作をサポートします: ```python from agents import SQLiteSession @@ -88,7 +88,7 @@ await session.clear_session() ### 修正のための pop_item の使用 -`pop_item` メソッドは、会話の最後のアイテムを取り消したり変更したい場合に特に役立ちます: +`pop_item` メソッドは、会話の最後のアイテムを取り消したり修正したりしたい場合に特に便利です: ```python from agents import Agent, Runner, SQLiteSession @@ -119,13 +119,33 @@ print(f"Agent: {result.final_output}") ## メモリオプション -### メモリなし (デフォルト) +### メモリなし(デフォルト) ```python # Default behavior - no session memory result = await Runner.run(agent, "Hello") ``` +### OpenAI Conversations API メモリ + +[OpenAI Conversations API](https://platform.openai.com/docs/guides/conversational-agents/conversations-api) を使用して、独自のデータベースを管理せずに +会話状態を永続化します。これは、会話履歴の保存にすでに OpenAI ホストのインフラに依存している場合に役立ちます。 + +```python +from agents import OpenAIConversationsSession + +session = OpenAIConversationsSession() + +# Optionally resume a previous conversation by passing a conversation ID +# session = OpenAIConversationsSession(conversation_id="conv_123") + +result = await Runner.run( + agent, + "Hello", + session=session, +) +``` + ### SQLite メモリ ```python @@ -170,7 +190,7 @@ result2 = await Runner.run( ### SQLAlchemy ベースのセッション -より高度なユースケースでは、SQLAlchemy ベースのセッションバックエンドを使用できます。これにより、SQLAlchemy がサポートする任意のデータベース (PostgreSQL、MySQL、SQLite など) をセッションストレージとして使用できます。 +より高度なユースケースでは、SQLAlchemy ベースのセッションバックエンドを使用できます。これにより、SQLAlchemy がサポートする任意のデータベース(PostgreSQL、MySQL、SQLite など)をセッションストレージとして使用できます。 **例 1: `from_url` とインメモリ SQLite の使用** @@ -197,7 +217,7 @@ if __name__ == "__main__": **例 2: 既存の SQLAlchemy エンジンの使用** -本番アプリケーションでは、すでに SQLAlchemy の `AsyncEngine` インスタンスを持っている可能性が高いです。これをセッションに直接渡せます。 +本番アプリケーションでは、すでに SQLAlchemy の `AsyncEngine` インスタンスを持っている可能性が高いです。これをセッションに直接渡すことができます。 ```python import asyncio @@ -275,18 +295,19 @@ result = await Runner.run( ### セッション ID の命名 -会話を整理しやすくする意味のあるセッション ID を使用します: +会話を整理するのに役立つ意味のあるセッション ID を使用します: -- ユーザーベース: `"user_12345"` -- スレッドベース: `"thread_abc123"` -- コンテキストベース: `"support_ticket_456"` +- ユーザー単位: `"user_12345"` +- スレッド単位: `"thread_abc123"` +- コンテキスト単位: `"support_ticket_456"` ### メモリの永続化 -- 一時的な会話にはインメモリ SQLite (`SQLiteSession("session_id")`) を使用 -- 永続的な会話にはファイルベース SQLite (`SQLiteSession("session_id", "path/to/db.sqlite")`) を使用 -- 既存のデータベースを持つ本番システムには SQLAlchemy ベースのセッション (`SQLAlchemySession("session_id", engine=engine, create_tables=True)`) を使用 -- さらに高度なユースケースでは、他の本番システム (Redis、Django など) 向けにカスタムセッションバックエンドの実装を検討 +- 一時的な会話にはインメモリ SQLite(`SQLiteSession("session_id")`)を使用します +- 永続的な会話にはファイルベースの SQLite(`SQLiteSession("session_id", "path/to/db.sqlite")`)を使用します +- 既存のデータベースを持つ本番システムには SQLAlchemy ベースのセッション(`SQLAlchemySession("session_id", engine=engine, create_tables=True")`)を使用します +- OpenAI ホストのストレージを使用したい場合は(`OpenAIConversationsSession()`)、OpenAI Conversations API に履歴を保存します +- より高度なユースケース向けに、他の本番システム(Redis、Django など)用のカスタムセッションバックエンドの実装を検討します ### セッション管理 @@ -314,7 +335,7 @@ result2 = await Runner.run( ## 完全な例 -セッションメモリの動作を示す完全な例です: +セッションメモリが動作する完全な例を次に示します: ```python import asyncio @@ -378,8 +399,9 @@ if __name__ == "__main__": ## API リファレンス -詳細な API ドキュメントは以下をご覧ください: +詳細な API ドキュメントについては、以下を参照してください: - [`Session`][agents.memory.Session] - プロトコルインターフェース - [`SQLiteSession`][agents.memory.SQLiteSession] - SQLite 実装 +- [`OpenAIConversationsSession`](ref/memory/openai_conversations_session.md) - OpenAI Conversations API 実装 - [`SQLAlchemySession`][agents.extensions.memory.sqlalchemy_session.SQLAlchemySession] - SQLAlchemy ベースの実装 \ No newline at end of file diff --git a/docs/ja/streaming.md b/docs/ja/streaming.md index 1a02748f5..f46de4652 100644 --- a/docs/ja/streaming.md +++ b/docs/ja/streaming.md @@ -4,15 +4,15 @@ search: --- # ストリーミング -ストリーミングを使うと、エージェントの実行が進むにつれて更新を購読できます。これはエンドユーザーに進捗や部分的な応答を表示するのに役立ちます。 +ストリーミングにより、進行中のエージェントの run の更新を購読できます。これは、エンドユーザーに進捗や部分的な応答を表示するのに役立ちます。 -ストリーミングするには、[`Runner.run_streamed()`][agents.run.Runner.run_streamed] を呼び出します。これにより [`RunResultStreaming`][agents.result.RunResultStreaming] が返されます。`result.stream_events()` を呼ぶと、以下で説明する [`StreamEvent`][agents.stream_events.StreamEvent] オブジェクトの非同期ストリームを取得できます。 +ストリーミングするには、[`Runner.run_streamed()`][agents.run.Runner.run_streamed] を呼び出します。これは [`RunResultStreaming`][agents.result.RunResultStreaming] を返します。`result.stream_events()` を呼び出すと、以下で説明する [`StreamEvent`][agents.stream_events.StreamEvent] オブジェクトの非同期ストリームを取得できます。 ## raw レスポンスイベント -[`RawResponsesStreamEvent`][agents.stream_events.RawResponsesStreamEvent] は、 LLM から直接渡される raw なイベントです。これらは OpenAI Responses API フォーマットであり、各イベントにはタイプ(`response.created`、`response.output_text.delta` など)とデータがあります。生成され次第、ユーザーへ応答メッセージをストリーミングしたい場合に有用です。 +[`RawResponsesStreamEvent`][agents.stream_events.RawResponsesStreamEvent] は、LLM から直接渡される raw イベントです。形式は OpenAI Responses API で、各イベントにはタイプ(`response.created`、`response.output_text.delta` など)とデータがあります。これらのイベントは、応答メッセージが生成され次第ユーザーにストリーミングしたい場合に便利です。 -たとえば、次の例は LLM が生成したテキストをトークンごとに出力します。 +たとえば、次の例は LLM によって生成されたテキストをトークンごとに出力します。 ```python import asyncio @@ -35,11 +35,11 @@ if __name__ == "__main__": asyncio.run(main()) ``` -## Run アイテムのイベントと エージェントのイベント +## Run アイテムイベントとエージェントイベント -[`RunItemStreamEvent`][agents.stream_events.RunItemStreamEvent] は、より高レベルのイベントです。アイテムが完全に生成されたタイミングを通知します。これにより、各トークンごとではなく「メッセージが生成された」「ツールが実行された」などのレベルで進捗更新を届けられます。同様に、[`AgentUpdatedStreamEvent`][agents.stream_events.AgentUpdatedStreamEvent] は、現在のエージェントが変更されたとき(例: ハンドオフの結果)に更新を提供します。 +[`RunItemStreamEvent`][agents.stream_events.RunItemStreamEvent] は、より高レベルのイベントです。アイテムが完全に生成されたタイミングを知らせます。これにより、各トークンではなく「メッセージが生成された」「ツールが実行された」などのレベルで進捗更新をプッシュできます。同様に、[`AgentUpdatedStreamEvent`][agents.stream_events.AgentUpdatedStreamEvent] は現在のエージェントが変更されたとき(たとえばハンドオフの結果として)の更新を提供します。 -たとえば、次の例は raw イベントを無視して、ユーザーへ更新のみをストリーミングします。 +たとえば、次の例は raw イベントを無視し、ユーザーに更新をストリーミングします。 ```python import asyncio diff --git a/docs/ja/tools.md b/docs/ja/tools.md index ca30bc030..81c5265b8 100644 --- a/docs/ja/tools.md +++ b/docs/ja/tools.md @@ -4,23 +4,23 @@ search: --- # ツール -ツールは エージェント にアクションを取らせます。データ取得、コード実行、外部 API の呼び出し、さらにはコンピュータ操作 などです。Agents SDK には 3 つのツールのクラスがあります: +ツールは エージェント によるアクションの実行、例えばデータの取得、コードの実行、外部 API の呼び出し、さらにはコンピュータ操作 を可能にします。Agent SDK には 3 つのツールクラスがあります。 -- ホスト型ツール: これらは AI モデルと同じ LLM サーバー 上で動作します。OpenAI は リトリーバル、Web 検索、コンピュータ操作 をホスト型ツールとして提供しています。 -- Function calling: 任意の Python 関数をツールとして使用できます。 -- エージェントをツールとして利用: エージェント をツールとして使えるため、ハンドオフ せずにエージェント同士を呼び出せます。 +- ホスト型ツール: これらは AI モデルと同じ LLM サーバー上で実行されます。OpenAI は Retrieval、Web 検索、コンピュータ操作 をホスト型ツールとして提供します。 +- Function calling: 任意の Python 関数をツールとして利用できます。 +- ツールとしてのエージェント: エージェントをツールとして利用でき、ハンドオフ せずにエージェントが他のエージェントを呼び出せます。 ## ホスト型ツール -OpenAI は [`OpenAIResponsesModel`][agents.models.openai_responses.OpenAIResponsesModel] 利用時にいくつかの組み込みツールを提供します: +OpenAI は [`OpenAIResponsesModel`][agents.models.openai_responses.OpenAIResponsesModel] を使用する際に、いくつかの組み込みツールを提供します。 -- [`WebSearchTool`][agents.tool.WebSearchTool]: エージェント が Web を検索できます。 -- [`FileSearchTool`][agents.tool.FileSearchTool]: OpenAI ベクトルストア から情報を取得できます。 -- [`ComputerTool`][agents.tool.ComputerTool]: コンピュータ操作 の自動化が可能です。 -- [`CodeInterpreterTool`][agents.tool.CodeInterpreterTool]: LLM がサンドボックス環境でコードを実行できます。 -- [`HostedMCPTool`][agents.tool.HostedMCPTool]: リモートの MCP サーバー のツールをモデルへ公開します。 -- [`ImageGenerationTool`][agents.tool.ImageGenerationTool]: プロンプトから画像を生成します。 -- [`LocalShellTool`][agents.tool.LocalShellTool]: あなたのマシン上でシェルコマンドを実行します。 +- [`WebSearchTool`][agents.tool.WebSearchTool] は エージェント に Web を検索させます。 +- [`FileSearchTool`][agents.tool.FileSearchTool] は OpenAI ベクトルストア から情報を取得できます。 +- [`ComputerTool`][agents.tool.ComputerTool] は コンピュータ操作 の自動化を可能にします。 +- [`CodeInterpreterTool`][agents.tool.CodeInterpreterTool] は LLM がサンドボックス環境でコードを実行できるようにします。 +- [`HostedMCPTool`][agents.tool.HostedMCPTool] はリモートの MCP サーバーのツールをモデルに公開します。 +- [`ImageGenerationTool`][agents.tool.ImageGenerationTool] はプロンプトから画像を生成します。 +- [`LocalShellTool`][agents.tool.LocalShellTool] はあなたのマシン上でシェルコマンドを実行します。 ```python from agents import Agent, FileSearchTool, Runner, WebSearchTool @@ -43,14 +43,14 @@ async def main(): ## 関数ツール -任意の Python 関数をツールとして使用できます。Agents SDK はツールを自動的にセットアップします: +任意の Python 関数をツールとして使用できます。Agents SDK が自動的にセットアップします。 -- ツール名は Python 関数名になります(または任意の名前を指定できます) -- ツールの説明は関数の docstring から取得します(または任意の説明を指定できます) -- 関数入力のスキーマは関数の引数から自動生成されます -- 各入力の説明は、無効化していない限り、関数の docstring から取得します +- ツール名は Python 関数名になります(任意で名前を指定可能) +- ツールの説明は関数の docstring から取得します(任意で説明を指定可能) +- 関数入力のスキーマは、関数の引数から自動生成されます +- 各入力の説明は、無効化しない限り関数の docstring から取得します -Python の `inspect` モジュールを使用して関数シグネチャを抽出し、[`griffe`](https://mkdocstrings.github.io/griffe/) で docstring を解析し、スキーマ生成には pydantic を使用します。 +Python の `inspect` モジュールで関数シグネチャを抽出し、[`griffe`](https://mkdocstrings.github.io/griffe/) で docstring を解析、`pydantic` でスキーマを作成します。 ```python import json @@ -102,9 +102,9 @@ for tool in agent.tools: ``` -1. 関数の引数には任意の Python 型を使用でき、関数は同期・非同期いずれでも構いません。 -2. docstring があれば、説明および引数の説明の取得に使用します。 -3. 関数は任意で `context` を受け取れます(最初の引数でなければなりません)。ツール名や説明、docstring のスタイルなどを上書き設定することもできます。 +1. 任意の Python 型を関数の引数に使用でき、関数は同期でも非同期でも構いません。 +2. docstring があれば、説明および引数説明の取得に使用します。 +3. 関数は任意で `context` を受け取れます(最初の引数である必要があります)。ツール名、説明、docstring スタイルなどのオーバーライドも設定できます。 4. デコレートした関数をツールのリストに渡せます。 ??? note "出力を表示" @@ -179,12 +179,12 @@ for tool in agent.tools: ### カスタム関数ツール -Python 関数をツールとして使いたくない場合もあります。必要に応じて、直接 [`FunctionTool`][agents.tool.FunctionTool] を作成できます。次を提供する必要があります: +Python 関数をツールとして使いたくない場合もあります。その場合は、直接 [`FunctionTool`][agents.tool.FunctionTool] を作成できます。次を指定する必要があります。 - `name` - `description` -- `params_json_schema`(引数の JSON スキーマ) -- `on_invoke_tool`([`ToolContext`][agents.tool_context.ToolContext] と引数の JSON 文字列を受け取り、ツールの出力文字列を返す async 関数) +- 引数の JSON スキーマである `params_json_schema` +- [`ToolContext`][agents.tool_context.ToolContext] と引数(JSON 文字列)を受け取り、ツールの出力を文字列として返す非同期関数 `on_invoke_tool` ```python from typing import Any @@ -217,18 +217,18 @@ tool = FunctionTool( ) ``` -### 引数と docstring の自動解析 +### 自動引数解析と docstring 解析 -前述の通り、関数シグネチャを自動解析してツールのスキーマを抽出し、docstring を解析してツールや各引数の説明を抽出します。補足事項: +前述のとおり、ツールのスキーマ抽出のために関数シグネチャを自動解析し、ツールおよび各引数の説明抽出のために docstring を解析します。注意点は次のとおりです。 -1. シグネチャ解析は `inspect` モジュールで行います。引数の型は型アノテーションから解釈し、全体スキーマを表す Pydantic モデルを動的に構築します。Python の基本型、Pydantic モデル、TypedDict など、ほとんどの型をサポートします。 -2. docstring の解析には `griffe` を使用します。サポートしている docstring フォーマットは `google`、`sphinx`、`numpy` です。docstring 形式は自動検出を試みますがベストエフォートのため、`function_tool` 呼び出し時に明示指定できます。`use_docstring_info` を `False` に設定して docstring 解析を無効化することも可能です。 +1. シグネチャ解析は `inspect` モジュールで行います。型アノテーションから引数の型を理解し、全体のスキーマを表現する Pydantic モデルを動的に構築します。Python の基本型、Pydantic モデル、TypedDicts など、ほとんどの型をサポートします。 +2. docstring の解析には `griffe` を使用します。サポートする docstring 形式は `google`、`sphinx`、`numpy` です。docstring 形式は自動検出を試みますがベストエフォートのため、`function_tool` 呼び出し時に明示的に設定できます。`use_docstring_info` を `False` に設定すると docstring 解析を無効化できます。 スキーマ抽出のコードは [`agents.function_schema`][] にあります。 ## ツールとしてのエージェント -一部のワークフローでは、ハンドオフ せずに、中央の エージェント が専門 エージェント のネットワークをオーケストレーションしたい場合があります。エージェント をツールとしてモデリングすることで実現できます。 +ワークフローによっては、ハンドオフ ではなく、中央の エージェント が専門特化した エージェント 群をオーケストレーションしたい場合があります。エージェントをツールとしてモデル化することで実現できます。 ```python from agents import Agent, Runner @@ -267,9 +267,9 @@ async def main(): print(result.final_output) ``` -### ツール化したエージェントのカスタマイズ +### ツール化エージェントのカスタマイズ -`agent.as_tool` 関数は、エージェント を簡単にツールへ変換するためのユーティリティです。ただし、すべての設定をサポートしているわけではありません。たとえば、`max_turns` は設定できません。高度なユースケースでは、ツール実装内で直接 `Runner.run` を使用してください: +`agent.as_tool` 関数は、エージェントを簡単にツール化するためのユーティリティです。ただし、すべての設定をサポートするわけではありません。例えば `max_turns` は設定できません。高度なユースケースでは、ツール実装内で直接 `Runner.run` を使用してください。 ```python @function_tool @@ -290,13 +290,13 @@ async def run_my_agent() -> str: ### カスタム出力抽出 -場合によっては、中央の エージェント に返す前に ツール化したエージェント の出力を加工したいことがあります。例えば次のような場合に有用です: +場合によっては、中央の エージェント に返す前にツール化した エージェント の出力を加工したいことがあります。例えば次のような場合に有用です。 -- サブエージェントのチャット履歴から特定情報(例: JSON ペイロード)を抽出する。 -- エージェント の最終回答を変換・再整形する(例: Markdown をプレーンテキストや CSV に変換)。 -- 出力を検証し、エージェント の応答が欠落または不正な場合にフォールバック値を提供する。 +- サブエージェントのチャット履歴から特定の情報(例: JSON ペイロード)を抽出する。 +- エージェントの最終回答を変換・再フォーマットする(例: Markdown をプレーンテキストや CSV に変換)。 +- 出力を検証し、エージェントの応答が欠落または不正な場合にフォールバック値を提供する。 -これは、`as_tool` メソッドに `custom_output_extractor` 引数を渡すことで実現できます: +これは `as_tool` メソッドに `custom_output_extractor` 引数を渡すことで行えます。 ```python async def extract_json_payload(run_result: RunResult) -> str: @@ -317,7 +317,7 @@ json_tool = data_agent.as_tool( ### 条件付きツール有効化 -実行時に `is_enabled` パラメーター を使って エージェント ツールを条件付きで有効・無効にできます。これにより、コンテキスト、ユーザー の設定、実行時条件に基づいて、LLM に提供するツールを動的にフィルタリングできます。 +実行時に `is_enabled` パラメーター を使って エージェント ツールを条件付きで有効化・無効化できます。これにより、コンテキスト、ユーザー の嗜好、実行時条件に基づいて LLM に提供するツールを動的に絞り込めます。 ```python import asyncio @@ -372,24 +372,24 @@ async def main(): asyncio.run(main()) ``` -`is_enabled` パラメーター は次を受け付けます: -- **Boolean values**: `True`(常に有効)または `False`(常に無効) -- **Callable functions**: `(context, agent)` を取り、真偽値を返す関数 -- **Async functions**: 複雑な条件ロジック向けの非同期関数 +`is_enabled` パラメーター は次を受け付けます。 +- **Boolean values** : `True`(常に有効)または `False`(常に無効) +- **Callable functions** : `(context, agent)` を受け取り boolean を返す関数 +- **Async functions** : 複雑な条件ロジックのための非同期関数 -無効化されたツールは実行時に LLM から完全に隠されるため、以下に有用です: +無効化されたツールは実行時に LLM から完全に隠されるため、次の用途に有用です。 - ユーザー 権限に基づく機能ゲーティング -- 環境別のツール可用性(開発 vs 本番) -- 異なるツール構成の A/B テスト +- 環境別のツール可用性(dev と prod) +- A/B テストによるツール構成の比較 - 実行時状態に基づく動的ツールフィルタリング -## 関数ツールでのエラー処理 +## 関数ツールにおけるエラー処理 -`@function_tool` で関数ツールを作成する際、`failure_error_function` を渡せます。これは、ツール呼び出しがクラッシュした場合に LLM へ返すエラーレスポンスを提供する関数です。 +`@function_tool` で関数ツールを作成する際、`failure_error_function` を渡せます。これは、ツール呼び出しがクラッシュした場合に LLM へエラーレスポンスを提供する関数です。 - 既定(何も渡さない場合)では、エラーが発生したことを LLM に伝える `default_tool_error_function` を実行します。 -- 独自のエラー関数を渡した場合はそれが実行され、そのレスポンスが LLM に送られます。 -- 明示的に `None` を渡した場合、ツール呼び出しのエラーは再スローされ、あなたが処理する必要があります。モデルが不正な JSON を生成した場合は `ModelBehaviorError`、あなたのコードがクラッシュした場合は `UserError` などになり得ます。 +- 独自のエラー関数を渡した場合はそれが実行され、そのレスポンスが LLM に送信されます。 +- 明示的に `None` を渡した場合、ツール呼び出しのエラーは再スローされ、あなたが処理する必要があります。これは、モデルが不正な JSON を生成した場合の `ModelBehaviorError`、あなたのコードがクラッシュした場合の `UserError` などになり得ます。 ```python from agents import function_tool, RunContextWrapper @@ -412,4 +412,4 @@ def get_user_profile(user_id: str) -> str: ``` -`FunctionTool` オブジェクトを手動で作成する場合は、`on_invoke_tool` 関数内でエラーを処理する必要があります。 \ No newline at end of file +手動で `FunctionTool` オブジェクトを作成する場合は、`on_invoke_tool` 関数内でエラー処理を行う必要があります。 \ No newline at end of file diff --git a/docs/ja/tracing.md b/docs/ja/tracing.md index 681098c2f..a35cb8883 100644 --- a/docs/ja/tracing.md +++ b/docs/ja/tracing.md @@ -4,52 +4,52 @@ search: --- # トレーシング -Agents SDK にはトレーシングが組み込まれており、エージェント実行中に発生するイベントの包括的な記録( LLM の生成、ツール呼び出し、ハンドオフ、ガードレール、さらにはカスタムイベントまで)を収集します。 [Traces ダッシュボード](https://platform.openai.com/traces) を使用すると、開発中や本番環境でワークフローをデバッグ、可視化、監視できます。 +Agents SDK にはトレーシングが組み込まれており、エージェント実行中に発生するイベントの包括的な記録を収集します。たとえば LLM の生成、ツール呼び出し、ハンドオフ、ガードレール、さらにはカスタムイベントも含まれます。[Traces ダッシュボード](https://platform.openai.com/traces) を使って、開発中および本番環境でワークフローをデバッグ、可視化、監視できます。 !!!note - トレーシングはデフォルトで有効です。トレーシングを無効にする方法は 2 つあります: + トレーシングはデフォルトで有効です。トレーシングを無効化する方法は 2 つあります: 1. 環境変数 `OPENAI_AGENTS_DISABLE_TRACING=1` を設定して、グローバルにトレーシングを無効化できます 2. 単一の実行に対しては、[`agents.run.RunConfig.tracing_disabled`][] を `True` に設定して無効化できます -***OpenAI の API を使用し、 Zero Data Retention (ZDR) ポリシーで運用している組織では、トレーシングは利用できません。*** +***OpenAI の API を使用し Zero Data Retention (ZDR) ポリシーで運用している組織では、トレーシングは利用できません。*** ## トレースとスパン -- **トレース** は「ワークフロー」の単一のエンドツーエンドの処理を表します。トレースはスパンで構成されます。トレースには次のプロパティがあります: - - `workflow_name`: 論理的なワークフローまたはアプリです。例: "Code generation" や "Customer service" - - `trace_id`: トレースの一意の ID。渡さなかった場合は自動生成されます。形式は `trace_<32_alphanumeric>` である必要があります。 - - `group_id`: 省略可能なグループ ID。同一の会話からの複数のトレースを関連付けるために使用します。たとえば、チャットスレッド ID を使用できます。 - - `disabled`: True の場合、トレースは記録されません。 - - `metadata`: トレースのためのオプションのメタデータ。 -- **スパン** は開始時刻と終了時刻を持つ処理を表します。スパンには次が含まれます: - - `started_at` と `ended_at` のタイムスタンプ - - 所属するトレースを表す `trace_id` - - 親スパン(ある場合)を指す `parent_id` - - スパンに関する情報である `span_data`。例えば、`AgentSpanData` はエージェントに関する情報、`GenerationSpanData` は LLM の生成に関する情報などを含みます。 +- **トレース** は「ワークフロー」の単一のエンドツーエンド操作を表します。スパンで構成されます。トレースには次のプロパティがあります: + - `workflow_name`: これは論理的なワークフローまたはアプリです。例: "Code generation" や "Customer service"。 + - `trace_id`: トレースの一意な ID です。指定しない場合は自動生成されます。形式は `trace_<32_alphanumeric>` である必要があります。 + - `group_id`: 任意のグループ ID。同じ会話からの複数のトレースを関連付けるために使用します。たとえばチャットスレッドの ID など。 + - `disabled`: True の場合、トレースは記録されません。 + - `metadata`: トレースの任意のメタデータ。 +- **スパン** は開始時刻と終了時刻を持つ操作を表します。スパンには次があります: + - `started_at` と `ended_at` のタイムスタンプ + - 所属するトレースを表す `trace_id` + - 親スパン (ある場合) を指す `parent_id` + - スパンに関する情報である `span_data`。たとえば、`AgentSpanData` にはエージェントに関する情報、`GenerationSpanData` には LLM 生成に関する情報などが含まれます。 -## デフォルトのトレーシング +## 既定のトレーシング -デフォルトでは、 SDK は次をトレースします: +デフォルトでは、SDK は次をトレースします: -- `Runner.{run, run_sync, run_streamed}()` 全体が `trace()` でラップされます -- エージェントが実行されるたびに、`agent_span()` でラップされます -- LLM の生成は `generation_span()` でラップされます -- 関数ツールの呼び出しはそれぞれ `function_span()` でラップされます -- ガードレールは `guardrail_span()` でラップされます -- ハンドオフは `handoff_span()` でラップされます -- 音声入力(音声認識)は `transcription_span()` でラップされます -- 音声出力(テキスト読み上げ)は `speech_span()` でラップされます -- 関連する音声スパンは `speech_group_span()` の下に親子関係で配置される場合があります +- 全体の `Runner.{run, run_sync, run_streamed}()` は `trace()` でラップされます +- エージェントが実行されるたびに、`agent_span()` でラップされます +- LLM 生成は `generation_span()` でラップされます +- 関数ツール呼び出しはそれぞれ `function_span()` でラップされます +- ガードレールは `guardrail_span()` でラップされます +- ハンドオフは `handoff_span()` でラップされます +- 音声入力 (音声認識) は `transcription_span()` でラップされます +- 音声出力 (音声合成) は `speech_span()` でラップされます +- 関連する音声スパンは `speech_group_span()` の下に親子付けされる場合があります -デフォルトでは、トレース名は "Agent workflow" です。`trace` を使用する場合はこの名前を設定できますし、[`RunConfig`][agents.run.RunConfig] で名前やその他のプロパティを設定することもできます。 +デフォルトでは、トレース名は "Agent workflow" です。`trace` を使用する場合はこの名前を設定できます。または、[`RunConfig`][agents.run.RunConfig] で名前やその他のプロパティを構成できます。 -さらに、[カスタム トレース プロセッサー](#custom-tracing-processors) を設定して、別の送信先(置き換えまたはセカンダリ送信先)にトレースを送ることができます。 +加えて、[カスタム トレース プロセッサー](#custom-tracing-processors) を設定し、トレースを別の宛先へ送信できます (置き換え、または二次宛先として)。 ## 高レベルのトレース -複数回の `run()` 呼び出しを単一のトレースの一部にしたい場合があります。これは、コード全体を `trace()` でラップすることで行えます。 +`run()` への複数回の呼び出しを 1 つのトレースにまとめたい場合があります。その場合は、コード全体を `trace()` でラップします。 ```python from agents import Agent, Runner, trace @@ -68,42 +68,42 @@ async def main(): ## トレースの作成 -[`trace()`][agents.tracing.trace] 関数を使ってトレースを作成できます。トレースは開始して終了する必要があります。次の 2 つの方法があります: +[`trace()`][agents.tracing.trace] 関数を使ってトレースを作成できます。トレースは開始と終了が必要です。方法は 2 つあります: -1. 【推奨】トレースをコンテキストマネージャーとして使用します(例: `with trace(...) as my_trace`)。これにより、適切なタイミングで自動的にトレースが開始・終了されます。 +1. 推奨: トレースをコンテキストマネージャとして使用します。つまり `with trace(...) as my_trace` のようにします。これにより適切なタイミングでトレースが自動で開始・終了します。 2. [`trace.start()`][agents.tracing.Trace.start] と [`trace.finish()`][agents.tracing.Trace.finish] を手動で呼び出すこともできます。 -現在のトレースは Python の [`contextvar`](https://docs.python.org/3/library/contextvars.html) によって追跡されます。これは、自動的に並行処理で機能することを意味します。トレースを手動で開始・終了する場合は、現在のトレースを更新するために `start()`/`finish()` に `mark_as_current` と `reset_current` を渡す必要があります。 +現在のトレースは Python の [`contextvar`](https://docs.python.org/3/library/contextvars.html) によって追跡されます。つまり並行処理でも自動的に機能します。トレースを手動で開始/終了する場合は、現在のトレースを更新するために `start()`/`finish()` に `mark_as_current` と `reset_current` を渡す必要があります。 ## スパンの作成 -各種の [`*_span()`][agents.tracing.create] メソッドを使ってスパンを作成できます。一般的には、スパンを手動で作成する必要はありません。カスタムのスパン情報を追跡するために、[`custom_span()`][agents.tracing.custom_span] 関数が利用できます。 +さまざまな [`*_span()`][agents.tracing.create] メソッドを使用してスパンを作成できます。一般に、スパンを手動で作成する必要はありません。カスタムのスパン情報を追跡するための [`custom_span()`][agents.tracing.custom_span] 関数が利用可能です。 -スパンは自動的に現在のトレースの一部となり、Python の [`contextvar`](https://docs.python.org/3/library/contextvars.html) によって追跡される、最も近い現在のスパンの下にネストされます。 +スパンは自動的に現在のトレースの一部となり、Python の [`contextvar`](https://docs.python.org/3/library/contextvars.html) によって追跡される最も近い現在のスパンの下にネストされます。 -## 機微(センシティブ)データ +## 機微データ -一部のスパンは、機微なデータを取得する可能性があります。 +一部のスパンは機微なデータを取得する可能性があります。 -`generation_span()` は LLM 生成の入力/出力を保存し、`function_span()` は関数呼び出しの入力/出力を保存します。これらには機微なデータが含まれる可能性があるため、[`RunConfig.trace_include_sensitive_data`][agents.run.RunConfig.trace_include_sensitive_data] によってそれらのデータの取得を無効化できます。 +`generation_span()` は LLM 生成の入力/出力を、`function_span()` は関数呼び出しの入力/出力を保存します。機微なデータを含む場合があるため、[`RunConfig.trace_include_sensitive_data`][agents.run.RunConfig.trace_include_sensitive_data] によってそのデータの取得を無効化できます。 -同様に、音声スパンにはデフォルトで入力および出力音声の base64 エンコードされた PCM データが含まれます。[`VoicePipelineConfig.trace_include_sensitive_audio_data`][agents.voice.pipeline_config.VoicePipelineConfig.trace_include_sensitive_audio_data] を設定することで、この音声データの取得を無効化できます。 +同様に、音声スパンにはデフォルトで入力および出力音声の base64 エンコード済み PCM データが含まれます。[`VoicePipelineConfig.trace_include_sensitive_audio_data`][agents.voice.pipeline_config.VoicePipelineConfig.trace_include_sensitive_audio_data] を設定することで、この音声データの取得を無効化できます。 ## カスタム トレーシング プロセッサー -トレーシングのハイレベルなアーキテクチャは次のとおりです: +トレーシングの高レベルアーキテクチャは次のとおりです: -- 初期化時に、トレースを作成する役割を持つグローバルな [`TraceProvider`][agents.tracing.setup.TraceProvider] を作成します。 -- `TraceProvider` を [`BatchTraceProcessor`][agents.tracing.processors.BatchTraceProcessor] で構成し、スパンとトレースをバッチで [`BackendSpanExporter`][agents.tracing.processors.BackendSpanExporter] に送信します。これが、スパンとトレースをバッチで OpenAI のバックエンドにエクスポートします。 +- 初期化時に、トレースを作成する責任を持つグローバルな [`TraceProvider`][agents.tracing.setup.TraceProvider] を作成します。 +- `TraceProvider` には [`BatchTraceProcessor`][agents.tracing.processors.BatchTraceProcessor] を設定し、トレース/スパンをバッチで [`BackendSpanExporter`][agents.tracing.processors.BackendSpanExporter] に送信します。これがスパンとトレースをバッチで OpenAI バックエンドにエクスポートします。 -このデフォルト設定をカスタマイズして、別のバックエンドへの送信や追加のバックエンドへの送信、エクスポーターの動作変更を行うには、次の 2 つの方法があります: +デフォルト設定をカスタマイズして、別のバックエンドへの送信や追加のバックエンドへの送信、エクスポーターの動作変更を行うには、次の 2 つの方法があります: -1. [`add_trace_processor()`][agents.tracing.add_trace_processor] は、トレースやスパンが準備できたタイミングで受け取る、**追加の** トレースプロセッサーを追加できます。これにより、 OpenAI のバックエンドへの送信に加えて独自の処理を実行できます。 -2. [`set_trace_processors()`][agents.tracing.set_trace_processors] は、デフォルトのプロセッサーを自分のトレースプロセッサーに**置き換える**ことができます。これは、 OpenAI のバックエンドにトレースが送信されなくなることを意味します(その役割を果たす `TracingProcessor` を含めない限り)。 +1. [`add_trace_processor()`][agents.tracing.add_trace_processor] は、トレースやスパンが準備できたときに受け取る「追加」のトレースプロセッサーを追加できます。これにより、OpenAI のバックエンドへの送信に加えて独自の処理が可能になります。 +2. [`set_trace_processors()`][agents.tracing.set_trace_processors] は、デフォルトのプロセッサーを独自のトレースプロセッサーに「置き換え」られます。これを行うと、OpenAI バックエンドにトレースは送信されません。送信したい場合は、それを行う `TracingProcessor` を含める必要があります。 -## Non-OpenAI Models でのトレーシング +## Non-OpenAI モデルでのトレーシング -OpenAI の API キーを Non-OpenAI Models と併用することで、トレーシングを無効化せずに OpenAI Traces ダッシュボードで無料のトレーシングを有効にできます。 +OpenAI の API キーを Non‑OpenAI モデルで使用して、トレーシングを無効化することなく OpenAI Traces ダッシュボードで無料のトレーシングを有効にできます。 ```python import os @@ -124,28 +124,28 @@ agent = Agent( ) ``` -## 注意事項 +## 注意 - OpenAI Traces ダッシュボードで無料のトレースを表示します。 ## 外部トレーシング プロセッサー一覧 -- [Weights & Biases](https://weave-docs.wandb.ai/guides/integrations/openai_agents) -- [Arize-Phoenix](https://docs.arize.com/phoenix/tracing/integrations-tracing/openai-agents-sdk) -- [Future AGI](https://docs.futureagi.com/future-agi/products/observability/auto-instrumentation/openai_agents) -- [MLflow (self-hosted/OSS](https://mlflow.org/docs/latest/tracing/integrations/openai-agent) -- [MLflow (Databricks hosted](https://docs.databricks.com/aws/en/mlflow/mlflow-tracing#-automatic-tracing) -- [Braintrust](https://braintrust.dev/docs/guides/traces/integrations#openai-agents-sdk) -- [Pydantic Logfire](https://logfire.pydantic.dev/docs/integrations/llms/openai/#openai-agents) -- [AgentOps](https://docs.agentops.ai/v1/integrations/agentssdk) -- [Scorecard](https://docs.scorecard.io/docs/documentation/features/tracing#openai-agents-sdk-integration) -- [Keywords AI](https://docs.keywordsai.co/integration/development-frameworks/openai-agent) -- [LangSmith](https://docs.smith.langchain.com/observability/how_to_guides/trace_with_openai_agents_sdk) -- [Maxim AI](https://www.getmaxim.ai/docs/observe/integrations/openai-agents-sdk) -- [Comet Opik](https://www.comet.com/docs/opik/tracing/integrations/openai_agents) -- [Langfuse](https://langfuse.com/docs/integrations/openaiagentssdk/openai-agents) -- [Langtrace](https://docs.langtrace.ai/supported-integrations/llm-frameworks/openai-agents-sdk) -- [Okahu-Monocle](https://github.com/monocle2ai/monocle) -- [Galileo](https://v2docs.galileo.ai/integrations/openai-agent-integration#openai-agent-integration) -- [Portkey AI](https://portkey.ai/docs/integrations/agents/openai-agents) -- [LangDB AI](https://docs.langdb.ai/getting-started/working-with-agent-frameworks/working-with-openai-agents-sdk) -- [Agenta](https://docs.agenta.ai/observability/integrations/openai-agents) \ No newline at end of file +- [Weights & Biases](https://weave-docs.wandb.ai/guides/integrations/openai_agents) +- [Arize-Phoenix](https://docs.arize.com/phoenix/tracing/integrations-tracing/openai-agents-sdk) +- [Future AGI](https://docs.futureagi.com/future-agi/products/observability/auto-instrumentation/openai_agents) +- [MLflow (self-hosted/OSS](https://mlflow.org/docs/latest/tracing/integrations/openai-agent) +- [MLflow (Databricks hosted](https://docs.databricks.com/aws/en/mlflow/mlflow-tracing#-automatic-tracing) +- [Braintrust](https://braintrust.dev/docs/guides/traces/integrations#openai-agents-sdk) +- [Pydantic Logfire](https://logfire.pydantic.dev/docs/integrations/llms/openai/#openai-agents) +- [AgentOps](https://docs.agentops.ai/v1/integrations/agentssdk) +- [Scorecard](https://docs.scorecard.io/docs/documentation/features/tracing#openai-agents-sdk-integration) +- [Keywords AI](https://docs.keywordsai.co/integration/development-frameworks/openai-agent) +- [LangSmith](https://docs.smith.langchain.com/observability/how_to_guides/trace_with_openai_agents_sdk) +- [Maxim AI](https://www.getmaxim.ai/docs/observe/integrations/openai-agents-sdk) +- [Comet Opik](https://www.comet.com/docs/opik/tracing/integrations/openai_agents) +- [Langfuse](https://langfuse.com/docs/integrations/openaiagentssdk/openai-agents) +- [Langtrace](https://docs.langtrace.ai/supported-integrations/llm-frameworks/openai-agents-sdk) +- [Okahu-Monocle](https://github.com/monocle2ai/monocle) +- [Galileo](https://v2docs.galileo.ai/integrations/openai-agent-integration#openai-agent-integration) +- [Portkey AI](https://portkey.ai/docs/integrations/agents/openai-agents) +- [LangDB AI](https://docs.langdb.ai/getting-started/working-with-agent-frameworks/working-with-openai-agents-sdk) +- [Agenta](https://docs.agenta.ai/observability/integrations/openai-agents) \ No newline at end of file diff --git a/docs/ja/usage.md b/docs/ja/usage.md index 730817710..4fb6fa954 100644 --- a/docs/ja/usage.md +++ b/docs/ja/usage.md @@ -4,19 +4,19 @@ search: --- # 使用状況 -Agents SDK は、すべての実行ごとにトークン使用状況を自動追跡します。実行コンテキストから参照でき、コストの監視、上限の適用、分析記録に利用できます。 +Agents SDK は各実行のトークン使用状況を自動的に追跡します。実行コンテキストからアクセスでき、コストの監視、上限の適用、分析の記録に使えます。 ## 追跡対象 -- **requests** : LLM API 呼び出し回数 -- **input_tokens** : 送信した入力トークン合計 -- **output_tokens** : 受信した出力トークン合計 -- **total_tokens** : 入力 + 出力 -- **details** : +- **requests**: 実行された LLM API 呼び出しの数 +- **input_tokens**: 送信した入力トークンの合計 +- **output_tokens**: 受信した出力トークンの合計 +- **total_tokens**: 入力 + 出力 +- **details**: - `input_tokens_details.cached_tokens` - `output_tokens_details.reasoning_tokens` -## 実行からの使用状況の取得 +## 実行からの使用状況へのアクセス `Runner.run(...)` の後、`result.context_wrapper.usage` から使用状況にアクセスします。 @@ -30,11 +30,11 @@ print("Output tokens:", usage.output_tokens) print("Total tokens:", usage.total_tokens) ``` -使用状況は、実行中のすべてのモデル呼び出し(ツール呼び出しとハンドオフを含む)にわたり集計されます。 +使用状況は、実行中のすべてのモデル呼び出し(ツール呼び出しやハンドオフを含む)にわたって集計されます。 -## セッションでの使用状況の取得 +## セッションでの使用状況へのアクセス -`Session`(例: `SQLiteSession`)を使用する場合、`Runner.run(...)` の各呼び出しは、その特定の実行の使用状況を返します。セッションはコンテキストのために会話履歴を保持しますが、各実行の使用状況は独立しています。 +`Session`(例: `SQLiteSession`)を使う場合、`Runner.run(...)` への各呼び出しは、その実行専用の使用状況を返します。セッションは文脈用に会話履歴を保持しますが、各実行の使用状況は独立しています。 ```python session = SQLiteSession("my_conversation") @@ -46,11 +46,11 @@ second = await Runner.run(agent, "Can you elaborate?", session=session) print(second.context_wrapper.usage.total_tokens) # Usage for second run ``` -セッションは実行間で会話コンテキストを保持しますが、各 `Runner.run()` 呼び出しで返される使用状況の指標はその実行に限られます。セッションでは、前のメッセージが各実行に入力として再投入されることがあり、その結果、後続ターンの入力トークン数に影響します。 +セッションは実行間で会話コンテキストを保持しますが、各 `Runner.run()` 呼び出しで返される使用状況メトリクスは、その実行のみを表します。セッションでは、前のメッセージが各実行の入力として再投入される場合があり、その結果、後続ターンの入力トークン数に影響します。 -## フックでの使用状況の利用 +## フックでの使用状況 -`RunHooks` を使用する場合、各フックに渡される `context` オブジェクトには `usage` が含まれます。これにより、ライフサイクル上の重要なタイミングで使用状況を記録できます。 +`RunHooks` を使用している場合、各フックに渡される `context` オブジェクトには `usage` が含まれます。これにより、ライフサイクルの重要なタイミングで使用状況を記録できます。 ```python class MyHooks(RunHooks): @@ -61,8 +61,8 @@ class MyHooks(RunHooks): ## API リファレンス -詳細な API ドキュメントは次を参照してください: +詳細な API ドキュメントは次をご覧ください: -- [`Usage`][agents.usage.Usage] - 使用状況の追跡データ構造 -- [`RunContextWrapper`][agents.run.RunContextWrapper] - 実行コンテキストから使用状況へアクセス -- [`RunHooks`][agents.run.RunHooks] - 使用状況の追跡ライフサイクルにフックする \ No newline at end of file +- [`Usage`][agents.usage.Usage] - 使用状況追跡のデータ構造 +- [`RunContextWrapper`][agents.run.RunContextWrapper] - 実行コンテキストから使用状況にアクセス +- [`RunHooks`][agents.run.RunHooks] - 使用状況追跡ライフサイクルへのフック \ No newline at end of file diff --git a/docs/ja/visualization.md b/docs/ja/visualization.md index 5b5872874..70562e0b4 100644 --- a/docs/ja/visualization.md +++ b/docs/ja/visualization.md @@ -4,7 +4,7 @@ search: --- # エージェントの可視化 -エージェントの可視化では、 **Graphviz** を使用して、エージェントとその関係の構造化されたグラフィカル表現を生成できます。これは、アプリケーション内でエージェント、ツール、ハンドオフがどのように相互作用するかを理解するのに役立ちます。 +エージェントの可視化では、 **Graphviz** を使ってエージェントとその関係を構造化されたグラフィカル表現として生成できます。これは、アプリケーション内でエージェント、ツール、ハンドオフがどのように相互作用するかを理解するのに役立ちます。 ## インストール @@ -16,12 +16,12 @@ pip install "openai-agents[viz]" ## グラフの生成 -`draw_graph` 関数を使用してエージェントの可視化を生成できます。この関数は以下のような有向グラフを作成します: +`draw_graph` 関数を使ってエージェントの可視化を生成できます。この関数は次のような有向グラフを作成します: -- **エージェント** は黄色のボックスで表されます。 -- **MCP サーバー** は灰色のボックスで表されます。 -- **ツール** は緑の楕円で表されます。 -- **ハンドオフ** は、あるエージェントから別のエージェントへの有向エッジです。 +- **エージェント** は黄色のボックスで表現されます。 +- **MCP サーバー** は灰色のボックスで表現されます。 +- **ツール** は緑の楕円で表現されます。 +- **ハンドオフ** は一方のエージェントから別のエージェントへの有向エッジです。 ### 使用例 @@ -67,38 +67,39 @@ triage_agent = Agent( draw_graph(triage_agent) ``` -![Agent Graph](../assets/images/graph.png) +![エージェント グラフ](../assets/images/graph.png) -これは、 **triage agent** の構造と、そのサブエージェントやツールへの接続を視覚的に表すグラフを生成します。 +これは、 **トリアージ エージェント** の構造と、そのサブエージェントやツールへの接続を視覚的に表現するグラフを生成します。 ## 可視化の理解 -生成されたグラフには次が含まれます: +生成されるグラフには次が含まれます: -- エントリーポイントを示す **start ノード** (`__start__`)。 -- 黄色で塗りつぶされた **長方形** で表されるエージェント。 -- 緑で塗りつぶされた **楕円** で表されるツール。 -- 灰色で塗りつぶされた **長方形** で表される MCP サーバー。 +- エントリーポイントを示す **開始ノード** (`__start__`)。 +- 黄色で塗りつぶされた **長方形** のエージェント。 +- 緑で塗りつぶされた **楕円** のツール。 +- 灰色で塗りつぶされた **長方形** の MCP サーバー。 - 相互作用を示す有向エッジ: - - エージェント間のハンドオフを表す **実線の矢印**。 - - ツール呼び出しを表す **点線の矢印**。 - - MCP サーバー呼び出しを表す **破線の矢印**。 -- 実行が終了する場所を示す **end ノード** (`__end__`)。 + - エージェント間のハンドオフには **実線の矢印**。 + - ツールの呼び出しには **点線の矢印**。 + - MCP サーバーの呼び出しには **破線の矢印**。 +- 実行の終了地点を示す **終了ノード** (`__end__`)。 -**Note:** MCP サーバーは、最近の `agents` package のバージョンでレンダリングされます( **v0.2.8** で確認済み)。可視化で MCP ボックスが表示されない場合は、最新リリースにアップグレードしてください。 +**注:** MCP サーバーは最新版の +`agents` パッケージでレンダリングされます( **v0.2.8** で確認済み)。可視化に MCP ボックスが表示されない場合は、最新リリースにアップグレードしてください。 ## グラフのカスタマイズ ### グラフの表示 -デフォルトでは、`draw_graph` はグラフをインラインで表示します。グラフを別ウィンドウで表示するには、次のように記述します: +デフォルトでは、`draw_graph` はグラフをインライン表示します。別ウィンドウで表示するには、次のように記述します: ```python draw_graph(triage_agent).view() ``` ### グラフの保存 -デフォルトでは、`draw_graph` はグラフをインラインで表示します。ファイルとして保存するには、ファイル名を指定します: +デフォルトでは、`draw_graph` はグラフをインライン表示します。ファイルとして保存するには、ファイル名を指定します: ```python draw_graph(triage_agent, filename="agent_graph") diff --git a/docs/ja/voice/pipeline.md b/docs/ja/voice/pipeline.md index 41cb9d60f..46be7355b 100644 --- a/docs/ja/voice/pipeline.md +++ b/docs/ja/voice/pipeline.md @@ -4,7 +4,7 @@ search: --- # パイプラインとワークフロー -[`VoicePipeline`][agents.voice.pipeline.VoicePipeline] は、エージェントによるワークフローを音声アプリに変換しやすくするクラスです。実行したいワークフローを渡すと、入力音声の文字起こし、音声の終了検出、適切なタイミングでのワークフロー呼び出し、そしてワークフローの出力を音声に戻す処理をパイプラインが担います。 +[`VoicePipeline`][agents.voice.pipeline.VoicePipeline] は、エージェント型のワークフローを音声アプリに簡単に変換できるクラスです。実行したいワークフローを渡すと、パイプラインが入力音声の文字起こし、音声終了の検出、適切なタイミングでのワークフロー呼び出し、そしてワークフロー出力を音声に戻す処理までを行います。 ```mermaid graph LR @@ -34,29 +34,29 @@ graph LR ## パイプラインの設定 -パイプラインを作成する際、次の項目を設定できます。 +パイプラインを作成する際には、次のような項目を設定できます。 -1. [`workflow`][agents.voice.workflow.VoiceWorkflowBase]: 新しい音声が文字起こしされるたびに実行されるコードです。 +1. 毎回新しい音声が文字起こしされるたびに実行されるコードである [`workflow`][agents.voice.workflow.VoiceWorkflowBase] 2. 使用する [`speech-to-text`][agents.voice.model.STTModel] と [`text-to-speech`][agents.voice.model.TTSModel] のモデル -3. [`config`][agents.voice.pipeline_config.VoicePipelineConfig]: 次のような項目を設定できます。 - - モデルプロバイダー(モデル名をモデルにマッピングできます) +3. 次のような設定を行える [`config`][agents.voice.pipeline_config.VoicePipelineConfig] + - モデル名をモデルにマッピングできるモデルプロバイダー - トレーシング(トレーシングの無効化、音声ファイルのアップロード有無、ワークフロー名、トレース ID など) - - TTS と STT モデルの設定(プロンプト、言語、使用するデータ型 など) + - TTS と STT モデルの設定(プロンプト、言語、使用するデータ型など) ## パイプラインの実行 パイプラインは [`run()`][agents.voice.pipeline.VoicePipeline.run] メソッドで実行でき、音声入力を次の 2 つの形式で渡せます。 -1. [`AudioInput`][agents.voice.input.AudioInput]: 完全な音声があり、その結果だけを生成したい場合に使います。話者が話し終えたタイミングの検出が不要なケース、たとえば録音済み音声や、ユーザーが話し終えるタイミングが明確なプッシュトゥトーク アプリで有用です。 -2. [`StreamedAudioInput`][agents.voice.input.StreamedAudioInput]: ユーザーが話し終えたタイミングの検出が必要になり得る場合に使います。検出された音声チャンクを順次プッシュでき、パイプラインは「アクティビティ検出」により適切なタイミングで自動的にエージェントのワークフローを実行します。 +1. [`AudioInput`][agents.voice.input.AudioInput] は、完全な音声の書き起こしがあり、その結果だけを生成したい場合に使用します。話者が話し終えたタイミングの検出が不要なケース、例えば事前録音した音声や、ユーザーの発話終了が明確なプッシュ・トゥ・トークのアプリで便利です。 +2. [`StreamedAudioInput`][agents.voice.input.StreamedAudioInput] は、ユーザーの発話終了を検出する必要がある場合に使用します。検出された音声チャンクを逐次プッシュでき、パイプラインは「activity detection(アクティビティ検出)」と呼ばれる処理により、適切なタイミングで自動的にエージェントのワークフローを実行します。 ## 結果 -音声パイプラインの実行結果は [`StreamedAudioResult`][agents.voice.result.StreamedAudioResult] です。これは、発生するイベントをストリーミングで受け取れるオブジェクトです。いくつかの種類の [`VoiceStreamEvent`][agents.voice.events.VoiceStreamEvent] があり、次のものを含みます。 +音声パイプライン実行の結果は [`StreamedAudioResult`][agents.voice.result.StreamedAudioResult] です。これは発生するイベントをストリーミングで受け取れるオブジェクトです。いくつかの種類の [`VoiceStreamEvent`][agents.voice.events.VoiceStreamEvent] があり、次を含みます。 -1. [`VoiceStreamEventAudio`][agents.voice.events.VoiceStreamEventAudio]: 音声チャンクを含みます。 -2. [`VoiceStreamEventLifecycle`][agents.voice.events.VoiceStreamEventLifecycle]: ターンの開始や終了など、ライフサイクルイベントを通知します。 -3. [`VoiceStreamEventError`][agents.voice.events.VoiceStreamEventError]: エラーイベントです。 +1. 音声チャンクを含む [`VoiceStreamEventAudio`][agents.voice.events.VoiceStreamEventAudio] +2. ターンの開始・終了などライフサイクルイベントを通知する [`VoiceStreamEventLifecycle`][agents.voice.events.VoiceStreamEventLifecycle] +3. エラーイベントである [`VoiceStreamEventError`][agents.voice.events.VoiceStreamEventError] ```python @@ -76,4 +76,4 @@ async for event in result.stream(): ### 割り込み -Agents SDK は現在、[`StreamedAudioInput`][agents.voice.input.StreamedAudioInput] に対する組み込みの割り込みサポートを提供していません。代わりに、検出された各ターンごとにワークフローの個別の実行がトリガーされます。アプリケーション内で割り込みを扱いたい場合は、[`VoiceStreamEventLifecycle`][agents.voice.events.VoiceStreamEventLifecycle] のイベントを監視してください。`turn_started` は新しいターンが文字起こしされ処理が始まったことを示し、`turn_ended` は該当ターンの音声がすべて送出された後に発火します。これらのイベントを使って、モデルがターンを開始したら話者のマイクをミュートし、そのターンに関連する音声をすべてフラッシュした後にミュート解除する、といった制御が可能です。 \ No newline at end of file +Agents SDK は現在、[`StreamedAudioInput`][agents.voice.input.StreamedAudioInput] に対する組み込みの割り込み機能をサポートしていません。代わりに、検出された各ターンごとにワークフローの別個の実行がトリガーされます。アプリケーション内で割り込みを扱いたい場合は、[`VoiceStreamEventLifecycle`][agents.voice.events.VoiceStreamEventLifecycle] イベントを購読してください。`turn_started` は新しいターンが文字起こしされ処理が開始されたことを示します。`turn_ended` は該当ターンのすべての音声がディスパッチされた後にトリガーされます。これらのイベントを利用して、モデルがターンを開始した際に話者のマイクをミュートし、ターンに関連する音声をすべてフラッシュした後にミュート解除するといった制御が可能です。 \ No newline at end of file diff --git a/docs/ja/voice/quickstart.md b/docs/ja/voice/quickstart.md index 3976080b7..b9214d304 100644 --- a/docs/ja/voice/quickstart.md +++ b/docs/ja/voice/quickstart.md @@ -6,7 +6,7 @@ search: ## 前提条件 -Agents SDK の基本的な [クイックスタート手順](../quickstart.md) に従い、仮想環境をセットアップしてください。次に、SDK から音声用のオプション依存関係をインストールします: +Agents SDK の基本的な[クイックスタート手順](../quickstart.md)に従い、仮想環境をセットアップしてください。次に、SDK からオプションの音声関連依存関係をインストールします: ```bash pip install 'openai-agents[voice]' @@ -14,10 +14,10 @@ pip install 'openai-agents[voice]' ## 概念 -主な概念は [`VoicePipeline`][agents.voice.pipeline.VoicePipeline] で、これは 3 ステップのプロセスです: +主要な概念は [`VoicePipeline`][agents.voice.pipeline.VoicePipeline] で、これは 3 ステップのプロセスです: 1. 音声をテキストに変換するために音声認識モデルを実行します。 -2. 通常はエージェントのワークフローであるあなたのコードを実行して、結果を生成します。 +2. 通常はエージェント的なワークフローであるあなたのコードを実行して結果を生成します。 3. 結果のテキストを音声に戻すために音声合成モデルを実行します。 ```mermaid @@ -48,7 +48,7 @@ graph LR ## エージェント -まず、いくつかのエージェントをセットアップします。この SDK でエージェントを作成したことがあれば、見覚えがあるはずです。ここでは複数のエージェント、ハンドオフ、そして 1 つのツールを用意します。 +まず、いくつかのエージェントをセットアップします。すでにこの SDK でエージェントを作成したことがあれば、馴染みのある手順のはずです。ここでは複数のエージェント、ハンドオフ、そしてツールを用意します。 ```python import asyncio @@ -92,7 +92,7 @@ agent = Agent( ## 音声パイプライン -ワークフローとして [`SingleAgentVoiceWorkflow`][agents.voice.workflow.SingleAgentVoiceWorkflow] を使用して、シンプルな音声パイプラインをセットアップします。 +ワークフローとして [`SingleAgentVoiceWorkflow`][agents.voice.workflow.SingleAgentVoiceWorkflow] を使用し、シンプルな音声パイプラインをセットアップします。 ```python from agents.voice import SingleAgentVoiceWorkflow, VoicePipeline @@ -124,7 +124,7 @@ async for event in result.stream(): ``` -## すべてを組み合わせる +## 統合 ```python import asyncio @@ -195,4 +195,4 @@ if __name__ == "__main__": asyncio.run(main()) ``` -この例を実行すると、エージェントがあなたに話しかけます。自分でエージェントに話しかけられるデモは、[examples/voice/static](https://github.com/openai/openai-agents-python/tree/main/examples/voice/static) をご覧ください。 \ No newline at end of file +このサンプルを実行すると、エージェントがあなたに話しかけます。自分でエージェントに話しかけられるデモは、[examples/voice/static](https://github.com/openai/openai-agents-python/tree/main/examples/voice/static) をご覧ください。 \ No newline at end of file diff --git a/docs/ja/voice/tracing.md b/docs/ja/voice/tracing.md index 352b9df6c..b60134271 100644 --- a/docs/ja/voice/tracing.md +++ b/docs/ja/voice/tracing.md @@ -4,15 +4,15 @@ search: --- # トレーシング -[エージェントのトレーシング](../tracing.md) と同様に、音声パイプラインも自動でトレーシングされます。 +[エージェントのトレーシング](../tracing.md) と同様に、音声パイプラインも自動的にトレーシングされます。 -基本的な情報は上記のトレーシングのドキュメントをご参照ください。加えて、[`VoicePipelineConfig`][agents.voice.pipeline_config.VoicePipelineConfig] を通じてパイプラインのトレーシングを設定できます。 +基本的なトレーシング情報は上記のドキュメントをご覧いただけますが、さらに [`VoicePipelineConfig`][agents.voice.pipeline_config.VoicePipelineConfig] を通じてパイプラインのトレーシングを設定できます。 -トレーシングに関する主なフィールドは次のとおりです。 +トレーシングに関連する主なフィールドは次のとおりです: -- [`tracing_disabled`][agents.voice.pipeline_config.VoicePipelineConfig.tracing_disabled]: トレーシングを無効にするかどうかを制御します。デフォルトではトレーシングは有効です。 -- [`trace_include_sensitive_data`][agents.voice.pipeline_config.VoicePipelineConfig.trace_include_sensitive_data]: 音声の書き起こしなど、機微情報を含めるかどうかを制御します。これは音声パイプライン固有であり、あなたの Workflow 内部で行われる処理には適用されません。 +- [`tracing_disabled`][agents.voice.pipeline_config.VoicePipelineConfig.tracing_disabled]: トレーシングを無効化するかどうかを制御します。デフォルトでは有効です。 +- [`trace_include_sensitive_data`][agents.voice.pipeline_config.VoicePipelineConfig.trace_include_sensitive_data]: 音声の書き起こしのような、機微な可能性のあるデータをトレースに含めるかどうかを制御します。これは特に音声パイプラインに対する設定であり、ワークフロー内部で行われることには適用されません。 - [`trace_include_sensitive_audio_data`][agents.voice.pipeline_config.VoicePipelineConfig.trace_include_sensitive_audio_data]: 音声データをトレースに含めるかどうかを制御します。 -- [`workflow_name`][agents.voice.pipeline_config.VoicePipelineConfig.workflow_name]: トレース Workflow の名前。 -- [`group_id`][agents.voice.pipeline_config.VoicePipelineConfig.group_id]: 複数のトレースを関連付けるためのトレースの `group_id`。 -- [`trace_metadata`][agents.voice.pipeline_config.VoicePipelineConfig.tracing_disabled]: トレースに含める追加のメタデータ。 \ No newline at end of file +- [`workflow_name`][agents.voice.pipeline_config.VoicePipelineConfig.workflow_name]: トレースのワークフロー名です。 +- [`group_id`][agents.voice.pipeline_config.VoicePipelineConfig.group_id]: 複数のトレースをリンクできるトレースの `group_id` です。 +- [`trace_metadata`][agents.voice.pipeline_config.VoicePipelineConfig.tracing_disabled]: トレースに含める追加のメタデータです。 \ No newline at end of file