openai-agents 0.2.10__tar.gz → 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of openai-agents might be problematic. Click here for more details.
- {openai_agents-0.2.10 → openai_agents-0.3.0}/.github/workflows/update-docs.yml +5 -1
- {openai_agents-0.2.10 → openai_agents-0.3.0}/.gitignore +2 -1
- {openai_agents-0.2.10 → openai_agents-0.3.0}/Makefile +3 -2
- {openai_agents-0.2.10 → openai_agents-0.3.0}/PKG-INFO +2 -2
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/agents.md +48 -8
- openai_agents-0.3.0/docs/ja/agents.md +289 -0
- openai_agents-0.3.0/docs/ja/config.md +98 -0
- openai_agents-0.3.0/docs/ja/context.md +82 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ja/examples.md +17 -17
- openai_agents-0.3.0/docs/ja/guardrails.md +158 -0
- openai_agents-0.3.0/docs/ja/handoffs.md +118 -0
- openai_agents-0.3.0/docs/ja/index.md +58 -0
- openai_agents-0.3.0/docs/ja/mcp.md +317 -0
- openai_agents-0.3.0/docs/ja/models/index.md +192 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ja/models/litellm.md +10 -10
- openai_agents-0.3.0/docs/ja/multi_agent.md +41 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ja/quickstart.md +18 -18
- openai_agents-0.3.0/docs/ja/realtime/guide.md +176 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ja/realtime/quickstart.md +29 -29
- openai_agents-0.3.0/docs/ja/release.md +32 -0
- openai_agents-0.3.0/docs/ja/repl.md +23 -0
- openai_agents-0.3.0/docs/ja/results.md +56 -0
- openai_agents-0.3.0/docs/ja/running_agents.md +142 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ja/sessions.md +52 -30
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ja/streaming.md +6 -6
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ja/tools.md +47 -47
- openai_agents-0.3.0/docs/ja/tracing.md +151 -0
- openai_agents-0.3.0/docs/ja/usage.md +68 -0
- openai_agents-0.3.0/docs/ja/visualization.md +108 -0
- openai_agents-0.3.0/docs/ja/voice/pipeline.md +79 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ja/voice/quickstart.md +9 -9
- openai_agents-0.3.0/docs/ja/voice/tracing.md +18 -0
- openai_agents-0.3.0/docs/mcp.md +333 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/realtime/guide.md +2 -2
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/realtime/quickstart.md +3 -3
- openai_agents-0.3.0/docs/ref/memory/openai_conversations_session.md +3 -0
- openai_agents-0.3.0/docs/ref/memory/sqlite_session.md +3 -0
- openai_agents-0.3.0/docs/ref/models/default_models.md +3 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/running_agents.md +1 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/scripts/translate_docs.py +29 -3
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/sessions.md +24 -1
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/usage.md +15 -5
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/basic/lifecycle_example.py +33 -8
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/hosted_mcp/connectors.py +1 -1
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/realtime/app/README.md +8 -3
- openai_agents-0.3.0/examples/realtime/app/server.py +322 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/realtime/app/static/app.js +363 -135
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/realtime/app/static/index.html +5 -1
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/realtime/cli/demo.py +143 -37
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/tools/web_search_filters.py +2 -2
- {openai_agents-0.2.10 → openai_agents-0.3.0}/pyproject.toml +2 -2
- openai_agents-0.3.0/src/agents/_debug.py +28 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/_run_impl.py +34 -37
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/extensions/models/litellm_model.py +20 -5
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/memory/__init__.py +2 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/memory/openai_conversations_session.py +0 -3
- openai_agents-0.3.0/src/agents/memory/util.py +20 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/models/openai_chatcompletions.py +17 -2
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/models/openai_responses.py +17 -4
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/realtime/_util.py +1 -1
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/realtime/agent.py +7 -0
- openai_agents-0.3.0/src/agents/realtime/audio_formats.py +29 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/realtime/config.py +22 -4
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/realtime/items.py +17 -1
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/realtime/model.py +6 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/realtime/model_inputs.py +15 -1
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/realtime/openai_realtime.py +428 -139
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/realtime/session.py +167 -14
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/run.py +102 -54
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/tool.py +2 -2
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/util/_json.py +19 -1
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/voice/input.py +5 -4
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/voice/models/openai_stt.py +6 -4
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/conftest.py +11 -0
- openai_agents-0.3.0/tests/realtime/test_audio_formats_unit.py +28 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/realtime/test_conversion_helpers.py +26 -23
- openai_agents-0.3.0/tests/realtime/test_ga_session_update_normalization.py +35 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/realtime/test_item_parsing.py +20 -20
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/realtime/test_openai_realtime.py +213 -8
- openai_agents-0.3.0/tests/realtime/test_openai_realtime_conversions.py +103 -0
- openai_agents-0.3.0/tests/realtime/test_playback_tracker_manual_unit.py +23 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/realtime/test_realtime_handoffs.py +58 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/realtime/test_session.py +236 -3
- openai_agents-0.3.0/tests/realtime/test_session_payload_and_formats.py +93 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/realtime/test_tracing.py +22 -16
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_agent_runner.py +104 -5
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_agent_runner_streamed.py +12 -11
- openai_agents-0.3.0/tests/test_debug.py +54 -0
- openai_agents-0.3.0/tests/test_model_payload_iterators.py +187 -0
- openai_agents-0.3.0/tests/test_run_hooks.py +223 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_session.py +54 -7
- openai_agents-0.3.0/tests/test_streaming_tool_call_arguments.py +373 -0
- openai_agents-0.3.0/tests/utils/test_json.py +32 -0
- openai_agents-0.3.0/tests/voice/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/voice/test_input.py +10 -4
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/voice/test_openai_stt.py +25 -12
- {openai_agents-0.2.10 → openai_agents-0.3.0}/uv.lock +5 -5
- openai_agents-0.2.10/docs/ja/agents.md +0 -248
- openai_agents-0.2.10/docs/ja/config.md +0 -98
- openai_agents-0.2.10/docs/ja/context.md +0 -82
- openai_agents-0.2.10/docs/ja/guardrails.md +0 -158
- openai_agents-0.2.10/docs/ja/handoffs.md +0 -118
- openai_agents-0.2.10/docs/ja/index.md +0 -58
- openai_agents-0.2.10/docs/ja/mcp.md +0 -191
- openai_agents-0.2.10/docs/ja/models/index.md +0 -192
- openai_agents-0.2.10/docs/ja/multi_agent.md +0 -41
- openai_agents-0.2.10/docs/ja/realtime/guide.md +0 -176
- openai_agents-0.2.10/docs/ja/release.md +0 -32
- openai_agents-0.2.10/docs/ja/repl.md +0 -23
- openai_agents-0.2.10/docs/ja/results.md +0 -56
- openai_agents-0.2.10/docs/ja/running_agents.md +0 -141
- openai_agents-0.2.10/docs/ja/tracing.md +0 -153
- openai_agents-0.2.10/docs/ja/usage.md +0 -58
- openai_agents-0.2.10/docs/ja/visualization.md +0 -107
- openai_agents-0.2.10/docs/ja/voice/pipeline.md +0 -79
- openai_agents-0.2.10/docs/ja/voice/tracing.md +0 -18
- openai_agents-0.2.10/docs/mcp.md +0 -187
- openai_agents-0.2.10/examples/realtime/app/server.py +0 -163
- openai_agents-0.2.10/src/agents/_debug.py +0 -17
- {openai_agents-0.2.10 → openai_agents-0.3.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/.github/ISSUE_TEMPLATE/model_provider.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/.github/ISSUE_TEMPLATE/question.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/.github/workflows/docs.yml +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/.github/workflows/issues.yml +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/.github/workflows/publish.yml +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/.github/workflows/tests.yml +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/.prettierrc +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/.vscode/launch.json +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/.vscode/settings.json +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/AGENTS.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/CLAUDE.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/LICENSE +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/README.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/assets/images/favicon-platform.svg +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/assets/images/graph.png +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/assets/images/mcp-tracing.jpg +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/assets/images/orchestration.png +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/assets/logo.svg +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/config.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/context.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/examples.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/guardrails.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/handoffs.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/index.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/models/index.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/models/litellm.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/multi_agent.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/quickstart.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/agent.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/agent_output.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/computer.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/exceptions.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/extensions/handoff_filters.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/extensions/handoff_prompt.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/extensions/litellm.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/extensions/memory/sqlalchemy_session.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/extensions/models/litellm_model.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/extensions/models/litellm_provider.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/extensions/visualization.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/function_schema.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/guardrail.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/handoffs.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/index.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/items.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/lifecycle.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/logger.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/mcp/server.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/mcp/util.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/memory/session.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/memory.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/model_settings.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/models/chatcmpl_converter.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/models/chatcmpl_helpers.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/models/chatcmpl_stream_handler.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/models/fake_id.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/models/interface.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/models/multi_provider.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/models/openai_chatcompletions.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/models/openai_provider.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/models/openai_responses.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/prompts.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/realtime/agent.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/realtime/config.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/realtime/events.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/realtime/handoffs.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/realtime/items.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/realtime/model.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/realtime/model_events.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/realtime/model_inputs.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/realtime/openai_realtime.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/realtime/runner.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/realtime/session.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/repl.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/result.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/run.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/run_context.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/stream_events.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/strict_schema.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/tool.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/tool_context.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/tracing/create.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/tracing/index.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/tracing/logger.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/tracing/processor_interface.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/tracing/processors.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/tracing/provider.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/tracing/scope.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/tracing/setup.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/tracing/span_data.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/tracing/spans.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/tracing/traces.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/tracing/util.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/usage.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/version.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/voice/events.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/voice/exceptions.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/voice/imports.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/voice/input.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/voice/model.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/voice/models/openai_model_provider.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/voice/models/openai_provider.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/voice/models/openai_stt.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/voice/models/openai_tts.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/voice/pipeline.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/voice/pipeline_config.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/voice/result.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/voice/utils.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/ref/voice/workflow.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/release.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/repl.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/results.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/scripts/generate_ref_files.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/streaming.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/stylesheets/extra.css +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/tools.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/tracing.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/visualization.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/voice/pipeline.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/voice/quickstart.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/docs/voice/tracing.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/agent_patterns/README.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/agent_patterns/agents_as_tools.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/agent_patterns/agents_as_tools_conditional.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/agent_patterns/deterministic.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/agent_patterns/forcing_tool_use.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/agent_patterns/input_guardrails.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/agent_patterns/llm_as_a_judge.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/agent_patterns/output_guardrails.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/agent_patterns/parallelization.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/agent_patterns/routing.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/agent_patterns/streaming_guardrails.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/basic/agent_lifecycle_example.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/basic/dynamic_system_prompt.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/basic/hello_world.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/basic/hello_world_gpt_5.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/basic/hello_world_gpt_oss.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/basic/hello_world_jupyter.ipynb +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/basic/local_file.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/basic/local_image.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/basic/media/image_bison.jpg +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/basic/media/partial_o3-and-o4-mini-system-card.pdf +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/basic/non_strict_output_type.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/basic/previous_response_id.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/basic/prompt_template.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/basic/remote_image.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/basic/remote_pdf.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/basic/stream_function_call_args.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/basic/stream_items.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/basic/stream_text.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/basic/tools.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/basic/usage_tracking.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/customer_service/main.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/financial_research_agent/README.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/financial_research_agent/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/financial_research_agent/agents/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/financial_research_agent/agents/financials_agent.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/financial_research_agent/agents/planner_agent.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/financial_research_agent/agents/risk_agent.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/financial_research_agent/agents/search_agent.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/financial_research_agent/agents/verifier_agent.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/financial_research_agent/agents/writer_agent.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/financial_research_agent/main.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/financial_research_agent/manager.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/financial_research_agent/printer.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/handoffs/message_filter.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/handoffs/message_filter_streaming.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/hosted_mcp/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/hosted_mcp/approvals.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/hosted_mcp/simple.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/mcp/filesystem_example/README.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/mcp/filesystem_example/main.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/mcp/filesystem_example/sample_files/favorite_books.txt +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/mcp/filesystem_example/sample_files/favorite_cities.txt +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/mcp/filesystem_example/sample_files/favorite_songs.txt +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/mcp/git_example/README.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/mcp/git_example/main.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/mcp/prompt_server/README.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/mcp/prompt_server/main.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/mcp/prompt_server/server.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/mcp/sse_example/README.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/mcp/sse_example/main.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/mcp/sse_example/server.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/mcp/streamablehttp_example/README.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/mcp/streamablehttp_example/main.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/mcp/streamablehttp_example/server.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/memory/openai_session_example.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/memory/sqlalchemy_session_example.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/memory/sqlite_session_example.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/model_providers/README.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/model_providers/custom_example_agent.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/model_providers/custom_example_global.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/model_providers/custom_example_provider.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/model_providers/litellm_auto.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/model_providers/litellm_provider.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/realtime/app/agent.py +0 -0
- /openai_agents-0.2.10/examples/realtime/twilio/__init__.py → /openai_agents-0.3.0/examples/realtime/app/static/favicon.ico +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/realtime/cli/ui.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/realtime/twilio/README.md +0 -0
- {openai_agents-0.2.10/examples/research_bot/agents → openai_agents-0.3.0/examples/realtime/twilio}/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/realtime/twilio/requirements.txt +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/realtime/twilio/server.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/realtime/twilio/twilio_handler.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/reasoning_content/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/reasoning_content/gpt_oss_stream.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/reasoning_content/main.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/reasoning_content/runner_example.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/research_bot/README.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/research_bot/__init__.py +0 -0
- {openai_agents-0.2.10/examples/voice → openai_agents-0.3.0/examples/research_bot/agents}/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/research_bot/agents/planner_agent.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/research_bot/agents/search_agent.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/research_bot/agents/writer_agent.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/research_bot/main.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/research_bot/manager.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/research_bot/printer.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/research_bot/sample_outputs/product_recs.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/research_bot/sample_outputs/product_recs.txt +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/research_bot/sample_outputs/vacation.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/research_bot/sample_outputs/vacation.txt +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/tools/code_interpreter.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/tools/computer_use.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/tools/file_search.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/tools/image_generator.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/tools/web_search.py +0 -0
- {openai_agents-0.2.10/examples/voice/static → openai_agents-0.3.0/examples/voice}/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/voice/static/README.md +0 -0
- {openai_agents-0.2.10/examples/voice/streamed → openai_agents-0.3.0/examples/voice/static}/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/voice/static/main.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/voice/static/util.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/voice/streamed/README.md +0 -0
- {openai_agents-0.2.10/src/agents/extensions → openai_agents-0.3.0/examples/voice/streamed}/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/voice/streamed/main.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/examples/voice/streamed/my_workflow.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/mkdocs.yml +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/_config.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/agent.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/agent_output.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/computer.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/exceptions.py +0 -0
- {openai_agents-0.2.10/src/agents/extensions/models → openai_agents-0.3.0/src/agents/extensions}/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/extensions/handoff_filters.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/extensions/handoff_prompt.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/extensions/memory/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/extensions/memory/sqlalchemy_session.py +0 -0
- {openai_agents-0.2.10/src/agents/util → openai_agents-0.3.0/src/agents/extensions/models}/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/extensions/models/litellm_provider.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/extensions/visualization.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/function_schema.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/guardrail.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/handoffs.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/items.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/lifecycle.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/logger.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/mcp/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/mcp/server.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/mcp/util.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/memory/session.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/memory/sqlite_session.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/model_settings.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/models/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/models/_openai_shared.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/models/chatcmpl_converter.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/models/chatcmpl_helpers.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/models/chatcmpl_stream_handler.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/models/default_models.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/models/fake_id.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/models/interface.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/models/multi_provider.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/models/openai_provider.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/prompts.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/py.typed +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/realtime/README.md +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/realtime/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/realtime/_default_tracker.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/realtime/events.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/realtime/handoffs.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/realtime/model_events.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/realtime/runner.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/repl.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/result.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/run_context.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/stream_events.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/strict_schema.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/tool_context.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/tracing/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/tracing/create.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/tracing/logger.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/tracing/processor_interface.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/tracing/processors.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/tracing/provider.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/tracing/scope.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/tracing/setup.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/tracing/span_data.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/tracing/spans.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/tracing/traces.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/tracing/util.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/usage.py +0 -0
- {openai_agents-0.2.10/src/agents/voice/models → openai_agents-0.3.0/src/agents/util}/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/util/_coro.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/util/_error_tracing.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/util/_pretty_print.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/util/_transforms.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/util/_types.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/version.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/voice/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/voice/events.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/voice/exceptions.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/voice/imports.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/voice/model.py +0 -0
- {openai_agents-0.2.10/tests → openai_agents-0.3.0/src/agents/voice/models}/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/voice/models/openai_model_provider.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/voice/models/openai_tts.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/voice/pipeline.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/voice/pipeline_config.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/voice/result.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/voice/utils.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/src/agents/voice/workflow.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/README.md +0 -0
- {openai_agents-0.2.10/tests/fastapi → openai_agents-0.3.0/tests}/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/extensions/memory/test_sqlalchemy_session.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/fake_model.py +0 -0
- {openai_agents-0.2.10/tests/mcp → openai_agents-0.3.0/tests/fastapi}/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/fastapi/streaming_app.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/fastapi/test_streaming_context.py +0 -0
- {openai_agents-0.2.10/tests/models → openai_agents-0.3.0/tests/mcp}/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/mcp/conftest.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/mcp/helpers.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/mcp/test_caching.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/mcp/test_client_session_retries.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/mcp/test_connect_disconnect.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/mcp/test_mcp_tracing.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/mcp/test_mcp_util.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/mcp/test_prompt_server.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/mcp/test_runner_calls_mcp.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/mcp/test_server_errors.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/mcp/test_tool_filtering.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/model_settings/test_serialization.py +0 -0
- {openai_agents-0.2.10/tests/realtime → openai_agents-0.3.0/tests/models}/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/models/conftest.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/models/test_default_models.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/models/test_kwargs_functionality.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/models/test_litellm_chatcompletions_stream.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/models/test_litellm_extra_body.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/models/test_map.py +0 -0
- {openai_agents-0.2.10/tests/voice → openai_agents-0.3.0/tests/realtime}/__init__.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/realtime/test_agent.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/realtime/test_model_events.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/realtime/test_playback_tracker.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/realtime/test_runner.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_agent_as_tool.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_agent_clone_shallow_copy.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_agent_config.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_agent_hooks.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_agent_instructions_signature.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_agent_llm_hooks.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_agent_prompt.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_agent_tracing.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_call_model_input_filter.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_call_model_input_filter_unit.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_cancel_streaming.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_computer_action.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_config.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_doc_parsing.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_extension_filters.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_extra_headers.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_function_schema.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_function_tool.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_function_tool_decorator.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_global_hooks.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_guardrails.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_handoff_tool.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_items_helpers.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_logprobs.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_max_turns.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_openai_chatcompletions.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_openai_chatcompletions_converter.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_openai_chatcompletions_stream.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_openai_responses_converter.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_output_tool.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_pretty_print.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_reasoning_content.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_repl.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_responses.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_responses_tracing.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_result_cast.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_run.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_run_config.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_run_error_details.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_run_step_execution.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_run_step_processing.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_session_exceptions.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_stream_events.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_strict_schema.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_tool_choice_reset.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_tool_converter.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_tool_use_behavior.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_trace_processor.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_tracing.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_tracing_errors.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_tracing_errors_streamed.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_usage.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/test_visualization.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/testing_processor.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/tracing/test_processor_api_key.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/tracing/test_set_api_key_fix.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/voice/conftest.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/voice/fake_models.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/voice/helpers.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/voice/test_openai_tts.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/voice/test_pipeline.py +0 -0
- {openai_agents-0.2.10 → openai_agents-0.3.0}/tests/voice/test_workflow.py +0 -0
|
@@ -55,6 +55,10 @@ jobs:
|
|
|
55
55
|
with:
|
|
56
56
|
commit-message: "Update all translated document pages"
|
|
57
57
|
title: "Update all translated document pages"
|
|
58
|
-
body:
|
|
58
|
+
body: |
|
|
59
|
+
Automated update of translated documentation.
|
|
60
|
+
|
|
61
|
+
Triggered by commit: [${{ github.event.head_commit.id }}](${{ github.server_url }}/${{ github.repository }}/commit/${{ github.event.head_commit.id }}).
|
|
62
|
+
Message: `${{ github.event.head_commit.message }}`
|
|
59
63
|
branch: update-translated-docs-${{ github.run_id }}
|
|
60
64
|
delete-branch: true
|
|
@@ -17,7 +17,7 @@ lint:
|
|
|
17
17
|
|
|
18
18
|
.PHONY: mypy
|
|
19
19
|
mypy:
|
|
20
|
-
uv run mypy .
|
|
20
|
+
uv run mypy . --exclude site
|
|
21
21
|
|
|
22
22
|
.PHONY: tests
|
|
23
23
|
tests:
|
|
@@ -39,7 +39,8 @@ snapshots-create:
|
|
|
39
39
|
uv run pytest --inline-snapshot=create
|
|
40
40
|
|
|
41
41
|
.PHONY: old_version_tests
|
|
42
|
-
old_version_tests:
|
|
42
|
+
old_version_tests:
|
|
43
|
+
UV_PROJECT_ENVIRONMENT=.venv_39 uv sync --python 3.9 --all-extras --all-packages --group dev
|
|
43
44
|
UV_PROJECT_ENVIRONMENT=.venv_39 uv run --python 3.9 -m pytest
|
|
44
45
|
|
|
45
46
|
.PHONY: build-docs
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openai-agents
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: OpenAI Agents SDK
|
|
5
5
|
Project-URL: Homepage, https://openai.github.io/openai-agents-python/
|
|
6
6
|
Project-URL: Repository, https://github.com/openai/openai-agents-python
|
|
@@ -21,7 +21,7 @@ Classifier: Typing :: Typed
|
|
|
21
21
|
Requires-Python: >=3.9
|
|
22
22
|
Requires-Dist: griffe<2,>=1.5.6
|
|
23
23
|
Requires-Dist: mcp<2,>=1.11.0; python_version >= '3.10'
|
|
24
|
-
Requires-Dist: openai<2,>=1.
|
|
24
|
+
Requires-Dist: openai<2,>=1.107.1
|
|
25
25
|
Requires-Dist: pydantic<3,>=2.10
|
|
26
26
|
Requires-Dist: requests<3,>=2.0
|
|
27
27
|
Requires-Dist: types-requests<3,>=2.0
|
|
@@ -16,7 +16,7 @@ from agents import Agent, ModelSettings, function_tool
|
|
|
16
16
|
|
|
17
17
|
@function_tool
|
|
18
18
|
def get_weather(city: str) -> str:
|
|
19
|
-
|
|
19
|
+
"""returns weather info for the specified city."""
|
|
20
20
|
return f"The weather in {city} is sunny"
|
|
21
21
|
|
|
22
22
|
agent = Agent(
|
|
@@ -71,9 +71,47 @@ agent = Agent(
|
|
|
71
71
|
|
|
72
72
|
When you pass an `output_type`, that tells the model to use [structured outputs](https://platform.openai.com/docs/guides/structured-outputs) instead of regular plain text responses.
|
|
73
73
|
|
|
74
|
-
##
|
|
74
|
+
## Multi-agent system design patterns
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
There are many ways to design multi‑agent systems, but we commonly see two broadly applicable patterns:
|
|
77
|
+
|
|
78
|
+
1. Manager (agents as tools): A central manager/orchestrator invokes specialized sub‑agents as tools and retains control of the conversation.
|
|
79
|
+
2. Handoffs: Peer agents hand off control to a specialized agent that takes over the conversation. This is decentralized.
|
|
80
|
+
|
|
81
|
+
See [our practical guide to building agents](https://cdn.openai.com/business-guides-and-resources/a-practical-guide-to-building-agents.pdf) for more details.
|
|
82
|
+
|
|
83
|
+
### Manager (agents as tools)
|
|
84
|
+
|
|
85
|
+
The `customer_facing_agent` handles all user interaction and invokes specialized sub‑agents exposed as tools. Read more in the [tools](tools.md#agents-as-tools) documentation.
|
|
86
|
+
|
|
87
|
+
```python
|
|
88
|
+
from agents import Agent
|
|
89
|
+
|
|
90
|
+
booking_agent = Agent(...)
|
|
91
|
+
refund_agent = Agent(...)
|
|
92
|
+
|
|
93
|
+
customer_facing_agent = Agent(
|
|
94
|
+
name="Customer-facing agent",
|
|
95
|
+
instructions=(
|
|
96
|
+
"Handle all direct user communication. "
|
|
97
|
+
"Call the relevant tools when specialized expertise is needed."
|
|
98
|
+
),
|
|
99
|
+
tools=[
|
|
100
|
+
booking_agent.as_tool(
|
|
101
|
+
tool_name="booking_expert",
|
|
102
|
+
tool_description="Handles booking questions and requests.",
|
|
103
|
+
),
|
|
104
|
+
refund_agent.as_tool(
|
|
105
|
+
tool_name="refund_expert",
|
|
106
|
+
tool_description="Handles refund questions and requests.",
|
|
107
|
+
)
|
|
108
|
+
],
|
|
109
|
+
)
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Handoffs
|
|
113
|
+
|
|
114
|
+
Handoffs are sub‑agents the agent can delegate to. When a handoff occurs, the delegated agent receives the conversation history and takes over the conversation. This pattern enables modular, specialized agents that excel at a single task. Read more in the [handoffs](handoffs.md) documentation.
|
|
77
115
|
|
|
78
116
|
```python
|
|
79
117
|
from agents import Agent
|
|
@@ -84,9 +122,9 @@ refund_agent = Agent(...)
|
|
|
84
122
|
triage_agent = Agent(
|
|
85
123
|
name="Triage agent",
|
|
86
124
|
instructions=(
|
|
87
|
-
"Help the user with their questions."
|
|
88
|
-
"If they ask about booking,
|
|
89
|
-
"If they ask about refunds,
|
|
125
|
+
"Help the user with their questions. "
|
|
126
|
+
"If they ask about booking, hand off to the booking agent. "
|
|
127
|
+
"If they ask about refunds, hand off to the refund agent."
|
|
90
128
|
),
|
|
91
129
|
handoffs=[booking_agent, refund_agent],
|
|
92
130
|
)
|
|
@@ -155,13 +193,14 @@ agent = Agent(
|
|
|
155
193
|
name="Weather Agent",
|
|
156
194
|
instructions="Retrieve weather details.",
|
|
157
195
|
tools=[get_weather],
|
|
158
|
-
model_settings=ModelSettings(tool_choice="get_weather")
|
|
196
|
+
model_settings=ModelSettings(tool_choice="get_weather")
|
|
159
197
|
)
|
|
160
198
|
```
|
|
161
199
|
|
|
162
200
|
## Tool Use Behavior
|
|
163
201
|
|
|
164
202
|
The `tool_use_behavior` parameter in the `Agent` configuration controls how tool outputs are handled:
|
|
203
|
+
|
|
165
204
|
- `"run_llm_again"`: The default. Tools are run, and the LLM processes the results to produce a final response.
|
|
166
205
|
- `"stop_on_first_tool"`: The output of the first tool call is used as the final response, without further LLM processing.
|
|
167
206
|
|
|
@@ -182,6 +221,7 @@ agent = Agent(
|
|
|
182
221
|
```
|
|
183
222
|
|
|
184
223
|
- `StopAtTools(stop_at_tool_names=[...])`: Stops if any specified tool is called, using its output as the final response.
|
|
224
|
+
|
|
185
225
|
```python
|
|
186
226
|
from agents import Agent, Runner, function_tool
|
|
187
227
|
from agents.agent import StopAtTools
|
|
@@ -203,6 +243,7 @@ agent = Agent(
|
|
|
203
243
|
tool_use_behavior=StopAtTools(stop_at_tool_names=["get_weather"])
|
|
204
244
|
)
|
|
205
245
|
```
|
|
246
|
+
|
|
206
247
|
- `ToolsToFinalOutputFunction`: A custom function that processes tool results and decides whether to stop or continue with the LLM.
|
|
207
248
|
|
|
208
249
|
```python
|
|
@@ -242,4 +283,3 @@ agent = Agent(
|
|
|
242
283
|
!!! note
|
|
243
284
|
|
|
244
285
|
To prevent infinite loops, the framework automatically resets `tool_choice` to "auto" after a tool call. This behavior is configurable via [`agent.reset_tool_choice`][agents.agent.Agent.reset_tool_choice]. The infinite loop is because tool results are sent to the LLM, which then generates another tool call because of `tool_choice`, ad infinitum.
|
|
245
|
-
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
---
|
|
2
|
+
search:
|
|
3
|
+
exclude: true
|
|
4
|
+
---
|
|
5
|
+
# エージェント
|
|
6
|
+
|
|
7
|
+
エージェントはアプリの中核となる基本コンポーネントです。エージェントは、instructions とツールで構成された大規模言語モデル( LLM )です。
|
|
8
|
+
|
|
9
|
+
## 基本構成
|
|
10
|
+
|
|
11
|
+
エージェントで最も一般的に設定するプロパティは次のとおりです。
|
|
12
|
+
|
|
13
|
+
- `name`: エージェントを識別する必須の文字列です。
|
|
14
|
+
- `instructions`: developer メッセージまたは system prompt とも呼ばれます。
|
|
15
|
+
- `model`: 使用する LLM と、temperature、top_p などのモデル調整パラメーターを設定する任意の `model_settings`。
|
|
16
|
+
- `tools`: エージェントがタスク達成のために使用できるツールです。
|
|
17
|
+
|
|
18
|
+
```python
|
|
19
|
+
from agents import Agent, ModelSettings, function_tool
|
|
20
|
+
|
|
21
|
+
@function_tool
|
|
22
|
+
def get_weather(city: str) -> str:
|
|
23
|
+
"""returns weather info for the specified city."""
|
|
24
|
+
return f"The weather in {city} is sunny"
|
|
25
|
+
|
|
26
|
+
agent = Agent(
|
|
27
|
+
name="Haiku agent",
|
|
28
|
+
instructions="Always respond in haiku form",
|
|
29
|
+
model="o3-mini",
|
|
30
|
+
tools=[get_weather],
|
|
31
|
+
)
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## コンテキスト
|
|
35
|
+
|
|
36
|
+
エージェントはその `context` 型に対して汎用的です。コンテキストは依存性注入のためのツールです。あなたが作成して `Runner.run()` に渡すオブジェクトで、すべてのエージェント、ツール、ハンドオフなどに引き渡され、エージェント実行のための依存関係と状態の入れ物として機能します。コンテキストには任意の Python オブジェクトを提供できます。
|
|
37
|
+
|
|
38
|
+
```python
|
|
39
|
+
@dataclass
|
|
40
|
+
class UserContext:
|
|
41
|
+
name: str
|
|
42
|
+
uid: str
|
|
43
|
+
is_pro_user: bool
|
|
44
|
+
|
|
45
|
+
async def fetch_purchases() -> list[Purchase]:
|
|
46
|
+
return ...
|
|
47
|
+
|
|
48
|
+
agent = Agent[UserContext](
|
|
49
|
+
...,
|
|
50
|
+
)
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## 出力タイプ
|
|
54
|
+
|
|
55
|
+
既定では、エージェントはプレーンテキスト(つまり `str`)の出力を生成します。特定のタイプの出力を生成させたい場合は、`output_type` パラメーターを使用できます。一般的な選択肢は [Pydantic](https://docs.pydantic.dev/) オブジェクトを使うことですが、Pydantic の [TypeAdapter](https://docs.pydantic.dev/latest/api/type_adapter/) でラップできる任意の型(dataclasses、lists、TypedDict など)をサポートします。
|
|
56
|
+
|
|
57
|
+
```python
|
|
58
|
+
from pydantic import BaseModel
|
|
59
|
+
from agents import Agent
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
class CalendarEvent(BaseModel):
|
|
63
|
+
name: str
|
|
64
|
+
date: str
|
|
65
|
+
participants: list[str]
|
|
66
|
+
|
|
67
|
+
agent = Agent(
|
|
68
|
+
name="Calendar extractor",
|
|
69
|
+
instructions="Extract calendar events from text",
|
|
70
|
+
output_type=CalendarEvent,
|
|
71
|
+
)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
!!! note
|
|
75
|
+
|
|
76
|
+
`output_type` を渡すと、モデルは通常のプレーンテキスト応答ではなく [structured outputs](https://platform.openai.com/docs/guides/structured-outputs) を使用するように指示されます。
|
|
77
|
+
|
|
78
|
+
## マルチエージェント システムの設計パターン
|
|
79
|
+
|
|
80
|
+
マルチエージェント システムの設計方法は多様ですが、一般的に広く適用できるパターンが 2 つあります。
|
|
81
|
+
|
|
82
|
+
1. マネージャー(エージェントをツールとして使用): 中央のマネージャー/オーケストレーターが、ツールとして公開された専門のサブエージェントを呼び出し、会話の制御を保持します。
|
|
83
|
+
2. ハンドオフ: ピアのエージェントが制御を専門のエージェントに引き渡し、そのエージェントが会話を引き継ぎます。これは分散型です。
|
|
84
|
+
|
|
85
|
+
詳細は [エージェント構築の実践ガイド](https://cdn.openai.com/business-guides-and-resources/a-practical-guide-to-building-agents.pdf)をご覧ください。
|
|
86
|
+
|
|
87
|
+
### マネージャー(エージェントをツールとして使用)
|
|
88
|
+
|
|
89
|
+
`customer_facing_agent` はすべてのユーザーとの対話を処理し、ツールとして公開された専門のサブエージェントを呼び出します。詳細は [ツール](tools.md#agents-as-tools) ドキュメントをお読みください。
|
|
90
|
+
|
|
91
|
+
```python
|
|
92
|
+
from agents import Agent
|
|
93
|
+
|
|
94
|
+
booking_agent = Agent(...)
|
|
95
|
+
refund_agent = Agent(...)
|
|
96
|
+
|
|
97
|
+
customer_facing_agent = Agent(
|
|
98
|
+
name="Customer-facing agent",
|
|
99
|
+
instructions=(
|
|
100
|
+
"Handle all direct user communication. "
|
|
101
|
+
"Call the relevant tools when specialized expertise is needed."
|
|
102
|
+
),
|
|
103
|
+
tools=[
|
|
104
|
+
booking_agent.as_tool(
|
|
105
|
+
tool_name="booking_expert",
|
|
106
|
+
tool_description="Handles booking questions and requests.",
|
|
107
|
+
),
|
|
108
|
+
refund_agent.as_tool(
|
|
109
|
+
tool_name="refund_expert",
|
|
110
|
+
tool_description="Handles refund questions and requests.",
|
|
111
|
+
)
|
|
112
|
+
],
|
|
113
|
+
)
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### ハンドオフ
|
|
117
|
+
|
|
118
|
+
ハンドオフは、エージェントが委任できるサブエージェントです。ハンドオフが発生すると、委任先のエージェントは会話履歴を受け取り、会話を引き継ぎます。このパターンは、単一のタスクに特化して優れた性能を発揮する、モジュール式で専門的なエージェントを可能にします。詳細は [ハンドオフ](handoffs.md) ドキュメントをお読みください。
|
|
119
|
+
|
|
120
|
+
```python
|
|
121
|
+
from agents import Agent
|
|
122
|
+
|
|
123
|
+
booking_agent = Agent(...)
|
|
124
|
+
refund_agent = Agent(...)
|
|
125
|
+
|
|
126
|
+
triage_agent = Agent(
|
|
127
|
+
name="Triage agent",
|
|
128
|
+
instructions=(
|
|
129
|
+
"Help the user with their questions. "
|
|
130
|
+
"If they ask about booking, hand off to the booking agent. "
|
|
131
|
+
"If they ask about refunds, hand off to the refund agent."
|
|
132
|
+
),
|
|
133
|
+
handoffs=[booking_agent, refund_agent],
|
|
134
|
+
)
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## 動的 instructions
|
|
138
|
+
|
|
139
|
+
多くの場合、エージェントを作成するときに instructions を指定できますが、関数を介して動的な instructions を提供することもできます。関数はエージェントとコンテキストを受け取り、プロンプトを返す必要があります。通常の関数と `async` 関数の両方が使用できます。
|
|
140
|
+
|
|
141
|
+
```python
|
|
142
|
+
def dynamic_instructions(
|
|
143
|
+
context: RunContextWrapper[UserContext], agent: Agent[UserContext]
|
|
144
|
+
) -> str:
|
|
145
|
+
return f"The user's name is {context.context.name}. Help them with their questions."
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
agent = Agent[UserContext](
|
|
149
|
+
name="Triage agent",
|
|
150
|
+
instructions=dynamic_instructions,
|
|
151
|
+
)
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## ライフサイクルイベント(フック)
|
|
155
|
+
|
|
156
|
+
エージェントのライフサイクルを観測したい場合があります。たとえば、イベントをログに記録したり、特定のイベント発生時にデータを事前取得したりできます。`hooks` プロパティでエージェントのライフサイクルにフックできます。[`AgentHooks`][agents.lifecycle.AgentHooks] クラスをサブクラス化し、関心のあるメソッドをオーバーライドしてください。
|
|
157
|
+
|
|
158
|
+
## ガードレール
|
|
159
|
+
|
|
160
|
+
ガードレールにより、エージェントの実行と並行してユーザー入力に対するチェック/検証を行い、さらにエージェントの出力が生成された後のチェック/検証も実行できます。たとえば、ユーザーの入力とエージェントの出力の関連性をスクリーニングできます。詳細は [ガードレール](guardrails.md) ドキュメントをお読みください。
|
|
161
|
+
|
|
162
|
+
## エージェントのクローン/コピー
|
|
163
|
+
|
|
164
|
+
エージェントの `clone()` メソッドを使用すると、エージェントを複製し、必要に応じて任意のプロパティを変更できます。
|
|
165
|
+
|
|
166
|
+
```python
|
|
167
|
+
pirate_agent = Agent(
|
|
168
|
+
name="Pirate",
|
|
169
|
+
instructions="Write like a pirate",
|
|
170
|
+
model="o3-mini",
|
|
171
|
+
)
|
|
172
|
+
|
|
173
|
+
robot_agent = pirate_agent.clone(
|
|
174
|
+
name="Robot",
|
|
175
|
+
instructions="Write like a robot",
|
|
176
|
+
)
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
## ツール使用の強制
|
|
180
|
+
|
|
181
|
+
ツールの一覧を渡しても、必ずしも LLM がツールを使用するとは限りません。[`ModelSettings.tool_choice`][agents.model_settings.ModelSettings.tool_choice] を設定してツール使用を強制できます。有効な値は次のとおりです。
|
|
182
|
+
|
|
183
|
+
1. `auto`: ツールを使用するかどうかを LLM に委ねます。
|
|
184
|
+
2. `required`: LLM にツールの使用を必須にします(どのツールを使うかは賢く判断できます)。
|
|
185
|
+
3. `none`: LLM にツールを使用しないことを必須にします。
|
|
186
|
+
4. 特定の文字列(例: `my_tool`)を設定すると、LLM にその特定のツールの使用を必須にします。
|
|
187
|
+
|
|
188
|
+
```python
|
|
189
|
+
from agents import Agent, Runner, function_tool, ModelSettings
|
|
190
|
+
|
|
191
|
+
@function_tool
|
|
192
|
+
def get_weather(city: str) -> str:
|
|
193
|
+
"""Returns weather info for the specified city."""
|
|
194
|
+
return f"The weather in {city} is sunny"
|
|
195
|
+
|
|
196
|
+
agent = Agent(
|
|
197
|
+
name="Weather Agent",
|
|
198
|
+
instructions="Retrieve weather details.",
|
|
199
|
+
tools=[get_weather],
|
|
200
|
+
model_settings=ModelSettings(tool_choice="get_weather")
|
|
201
|
+
)
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## ツール使用時の動作
|
|
205
|
+
|
|
206
|
+
`Agent` 構成の `tool_use_behavior` パラメーターは、ツール出力の扱い方を制御します。
|
|
207
|
+
|
|
208
|
+
- `"run_llm_again"`: 既定。ツールを実行し、その結果を LLM が処理して最終応答を生成します。
|
|
209
|
+
- `"stop_on_first_tool"`: 最初のツール呼び出しの出力を、追加の LLM 処理なしで最終応答として使用します。
|
|
210
|
+
|
|
211
|
+
```python
|
|
212
|
+
from agents import Agent, Runner, function_tool, ModelSettings
|
|
213
|
+
|
|
214
|
+
@function_tool
|
|
215
|
+
def get_weather(city: str) -> str:
|
|
216
|
+
"""Returns weather info for the specified city."""
|
|
217
|
+
return f"The weather in {city} is sunny"
|
|
218
|
+
|
|
219
|
+
agent = Agent(
|
|
220
|
+
name="Weather Agent",
|
|
221
|
+
instructions="Retrieve weather details.",
|
|
222
|
+
tools=[get_weather],
|
|
223
|
+
tool_use_behavior="stop_on_first_tool"
|
|
224
|
+
)
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
- `StopAtTools(stop_at_tool_names=[...])`: 指定したいずれかのツールが呼び出された場合に停止し、その出力を最終応答として使用します。
|
|
228
|
+
|
|
229
|
+
```python
|
|
230
|
+
from agents import Agent, Runner, function_tool
|
|
231
|
+
from agents.agent import StopAtTools
|
|
232
|
+
|
|
233
|
+
@function_tool
|
|
234
|
+
def get_weather(city: str) -> str:
|
|
235
|
+
"""Returns weather info for the specified city."""
|
|
236
|
+
return f"The weather in {city} is sunny"
|
|
237
|
+
|
|
238
|
+
@function_tool
|
|
239
|
+
def sum_numbers(a: int, b: int) -> int:
|
|
240
|
+
"""Adds two numbers."""
|
|
241
|
+
return a + b
|
|
242
|
+
|
|
243
|
+
agent = Agent(
|
|
244
|
+
name="Stop At Stock Agent",
|
|
245
|
+
instructions="Get weather or sum numbers.",
|
|
246
|
+
tools=[get_weather, sum_numbers],
|
|
247
|
+
tool_use_behavior=StopAtTools(stop_at_tool_names=["get_weather"])
|
|
248
|
+
)
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
- `ToolsToFinalOutputFunction`: ツール結果を処理し、停止するか LLM を続行するかを判断するカスタム関数です。
|
|
252
|
+
|
|
253
|
+
```python
|
|
254
|
+
from agents import Agent, Runner, function_tool, FunctionToolResult, RunContextWrapper
|
|
255
|
+
from agents.agent import ToolsToFinalOutputResult
|
|
256
|
+
from typing import List, Any
|
|
257
|
+
|
|
258
|
+
@function_tool
|
|
259
|
+
def get_weather(city: str) -> str:
|
|
260
|
+
"""Returns weather info for the specified city."""
|
|
261
|
+
return f"The weather in {city} is sunny"
|
|
262
|
+
|
|
263
|
+
def custom_tool_handler(
|
|
264
|
+
context: RunContextWrapper[Any],
|
|
265
|
+
tool_results: List[FunctionToolResult]
|
|
266
|
+
) -> ToolsToFinalOutputResult:
|
|
267
|
+
"""Processes tool results to decide final output."""
|
|
268
|
+
for result in tool_results:
|
|
269
|
+
if result.output and "sunny" in result.output:
|
|
270
|
+
return ToolsToFinalOutputResult(
|
|
271
|
+
is_final_output=True,
|
|
272
|
+
final_output=f"Final weather: {result.output}"
|
|
273
|
+
)
|
|
274
|
+
return ToolsToFinalOutputResult(
|
|
275
|
+
is_final_output=False,
|
|
276
|
+
final_output=None
|
|
277
|
+
)
|
|
278
|
+
|
|
279
|
+
agent = Agent(
|
|
280
|
+
name="Weather Agent",
|
|
281
|
+
instructions="Retrieve weather details.",
|
|
282
|
+
tools=[get_weather],
|
|
283
|
+
tool_use_behavior=custom_tool_handler
|
|
284
|
+
)
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
!!! note
|
|
288
|
+
|
|
289
|
+
無限ループを防ぐため、フレームワークはツール呼び出し後に `tool_choice` を自動的に "auto" にリセットします。この動作は [`agent.reset_tool_choice`][agents.agent.Agent.reset_tool_choice] で設定可能です。無限ループは、ツール結果が LLM に送られ、`tool_choice` のために LLM がさらに別のツール呼び出しを生成し続けることが原因です。
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
search:
|
|
3
|
+
exclude: true
|
|
4
|
+
---
|
|
5
|
+
# SDK の設定
|
|
6
|
+
|
|
7
|
+
## API キーとクライアント
|
|
8
|
+
|
|
9
|
+
デフォルトでは、SDK はインポート直後から LLM リクエストとトレーシングのために、環境変数 `OPENAI_API_KEY` を探します。アプリ起動前にその環境変数を設定できない場合は、[set_default_openai_key()][agents.set_default_openai_key] 関数でキーを設定できます。
|
|
10
|
+
|
|
11
|
+
```python
|
|
12
|
+
from agents import set_default_openai_key
|
|
13
|
+
|
|
14
|
+
set_default_openai_key("sk-...")
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
また、使用する OpenAI クライアントを設定することもできます。デフォルトでは、SDK は環境変数または上記で設定したデフォルトキーを用いて `AsyncOpenAI` インスタンスを作成します。これを変更するには、[set_default_openai_client()][agents.set_default_openai_client] 関数を使用します。
|
|
18
|
+
|
|
19
|
+
```python
|
|
20
|
+
from openai import AsyncOpenAI
|
|
21
|
+
from agents import set_default_openai_client
|
|
22
|
+
|
|
23
|
+
custom_client = AsyncOpenAI(base_url="...", api_key="...")
|
|
24
|
+
set_default_openai_client(custom_client)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
最後に、使用する OpenAI API をカスタマイズすることも可能です。デフォルトでは OpenAI Responses API を使用します。これを上書きして Chat Completions API を使うには、[set_default_openai_api()][agents.set_default_openai_api] 関数を使用します。
|
|
28
|
+
|
|
29
|
+
```python
|
|
30
|
+
from agents import set_default_openai_api
|
|
31
|
+
|
|
32
|
+
set_default_openai_api("chat_completions")
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## トレーシング
|
|
36
|
+
|
|
37
|
+
トレーシングはデフォルトで有効です。デフォルトでは上記の OpenAI API キー(つまり、環境変数または設定したデフォルトキー)を使用します。トレーシングに使用する API キーを個別に設定するには、[`set_tracing_export_api_key`][agents.set_tracing_export_api_key] 関数を使用します。
|
|
38
|
+
|
|
39
|
+
```python
|
|
40
|
+
from agents import set_tracing_export_api_key
|
|
41
|
+
|
|
42
|
+
set_tracing_export_api_key("sk-...")
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
トレーシングを完全に無効化するには、[`set_tracing_disabled()`][agents.set_tracing_disabled] 関数を使用します。
|
|
46
|
+
|
|
47
|
+
```python
|
|
48
|
+
from agents import set_tracing_disabled
|
|
49
|
+
|
|
50
|
+
set_tracing_disabled(True)
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## デバッグ ログ
|
|
54
|
+
|
|
55
|
+
SDK にはハンドラー未設定の Python ロガーが 2 つあります。デフォルトでは、警告とエラーは `stdout` に送られますが、その他のログは抑制されます。
|
|
56
|
+
|
|
57
|
+
詳細なログを有効にするには、[`enable_verbose_stdout_logging()`][agents.enable_verbose_stdout_logging] 関数を使用します。
|
|
58
|
+
|
|
59
|
+
```python
|
|
60
|
+
from agents import enable_verbose_stdout_logging
|
|
61
|
+
|
|
62
|
+
enable_verbose_stdout_logging()
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
また、ハンドラー、フィルター、フォーマッターなどを追加してログをカスタマイズできます。詳細は [Python ロギングガイド](https://docs.python.org/3/howto/logging.html) を参照してください。
|
|
66
|
+
|
|
67
|
+
```python
|
|
68
|
+
import logging
|
|
69
|
+
|
|
70
|
+
logger = logging.getLogger("openai.agents") # or openai.agents.tracing for the Tracing logger
|
|
71
|
+
|
|
72
|
+
# To make all logs show up
|
|
73
|
+
logger.setLevel(logging.DEBUG)
|
|
74
|
+
# To make info and above show up
|
|
75
|
+
logger.setLevel(logging.INFO)
|
|
76
|
+
# To make warning and above show up
|
|
77
|
+
logger.setLevel(logging.WARNING)
|
|
78
|
+
# etc
|
|
79
|
+
|
|
80
|
+
# You can customize this as needed, but this will output to `stderr` by default
|
|
81
|
+
logger.addHandler(logging.StreamHandler())
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### ログ内の機微なデータ
|
|
85
|
+
|
|
86
|
+
一部のログには機微なデータ(例: ユーザー データ)が含まれる場合があります。これらのデータがログに記録されないようにするには、以下の環境変数を設定してください。
|
|
87
|
+
|
|
88
|
+
LLM の入力と出力のロギングを無効化するには:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
export OPENAI_AGENTS_DONT_LOG_MODEL_DATA=1
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
ツールの入力と出力のロギングを無効化するには:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
export OPENAI_AGENTS_DONT_LOG_TOOL_DATA=1
|
|
98
|
+
```
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
search:
|
|
3
|
+
exclude: true
|
|
4
|
+
---
|
|
5
|
+
# コンテキスト管理
|
|
6
|
+
|
|
7
|
+
コンテキストという用語は多義的です。重要になるコンテキストには主に 2 つのクラスがあります。
|
|
8
|
+
|
|
9
|
+
1. コードでローカルに利用できるコンテキスト: ツール関数の実行時、`on_handoff` のようなコールバック、ライフサイクルフックなどで必要になるデータや依存関係です。
|
|
10
|
+
2. LLM に提供されるコンテキスト: 応答を生成する際に LLM が参照できるデータです。
|
|
11
|
+
|
|
12
|
+
## ローカルコンテキスト
|
|
13
|
+
|
|
14
|
+
これは [`RunContextWrapper`][agents.run_context.RunContextWrapper] クラスと、その中の [`context`][agents.run_context.RunContextWrapper.context] プロパティで表現されます。仕組みは次のとおりです。
|
|
15
|
+
|
|
16
|
+
1. 任意の Python オブジェクトを作成します。よくあるパターンとしては dataclass や Pydantic オブジェクトを使います。
|
|
17
|
+
2. そのオブジェクトを各種実行メソッドに渡します(例: `Runner.run(..., **context=whatever**)`)。
|
|
18
|
+
3. すべてのツール呼び出しやライフサイクルフックなどには、ラッパーオブジェクト `RunContextWrapper[T]` が渡されます。ここで `T` はコンテキストオブジェクトの型を表し、`wrapper.context` からアクセスできます。
|
|
19
|
+
|
|
20
|
+
最も **重要** な注意点: 特定のエージェント実行において、すべてのエージェント、ツール関数、ライフサイクル等は同じ種類(_type_)のコンテキストを使用しなければなりません。
|
|
21
|
+
|
|
22
|
+
コンテキストは次のような用途に使えます。
|
|
23
|
+
|
|
24
|
+
- 実行のための文脈データ(例: ユーザー名 / uid や、ユーザーに関するその他の情報)
|
|
25
|
+
- 依存関係(例: ロガーオブジェクト、データフェッチャーなど)
|
|
26
|
+
- ヘルパー関数
|
|
27
|
+
|
|
28
|
+
!!! danger "注意"
|
|
29
|
+
|
|
30
|
+
コンテキストオブジェクトは LLM に送信される **わけではありません**。これはあくまでローカルなオブジェクトであり、読み書きやメソッド呼び出しが可能です。
|
|
31
|
+
|
|
32
|
+
```python
|
|
33
|
+
import asyncio
|
|
34
|
+
from dataclasses import dataclass
|
|
35
|
+
|
|
36
|
+
from agents import Agent, RunContextWrapper, Runner, function_tool
|
|
37
|
+
|
|
38
|
+
@dataclass
|
|
39
|
+
class UserInfo: # (1)!
|
|
40
|
+
name: str
|
|
41
|
+
uid: int
|
|
42
|
+
|
|
43
|
+
@function_tool
|
|
44
|
+
async def fetch_user_age(wrapper: RunContextWrapper[UserInfo]) -> str: # (2)!
|
|
45
|
+
"""Fetch the age of the user. Call this function to get user's age information."""
|
|
46
|
+
return f"The user {wrapper.context.name} is 47 years old"
|
|
47
|
+
|
|
48
|
+
async def main():
|
|
49
|
+
user_info = UserInfo(name="John", uid=123)
|
|
50
|
+
|
|
51
|
+
agent = Agent[UserInfo]( # (3)!
|
|
52
|
+
name="Assistant",
|
|
53
|
+
tools=[fetch_user_age],
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
result = await Runner.run( # (4)!
|
|
57
|
+
starting_agent=agent,
|
|
58
|
+
input="What is the age of the user?",
|
|
59
|
+
context=user_info,
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
print(result.final_output) # (5)!
|
|
63
|
+
# The user John is 47 years old.
|
|
64
|
+
|
|
65
|
+
if __name__ == "__main__":
|
|
66
|
+
asyncio.run(main())
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
1. これがコンテキストオブジェクトです。ここでは dataclass を使っていますが、任意の型を使用できます。
|
|
70
|
+
2. これはツールです。`RunContextWrapper[UserInfo]` を受け取り、ツールの実装はコンテキストから読み取ります。
|
|
71
|
+
3. 型チェッカーがエラーを検出できるよう、エージェントにジェネリックの `UserInfo` を付与します(例えば、異なるコンテキスト型を受け取るツールを渡そうとした場合など)。
|
|
72
|
+
4. `run` 関数にコンテキストを渡します。
|
|
73
|
+
5. エージェントはツールを正しく呼び出し、年齢を取得します。
|
|
74
|
+
|
|
75
|
+
## エージェント / LLM コンテキスト
|
|
76
|
+
|
|
77
|
+
LLM が呼び出されると、LLM が参照できるデータは会話履歴のものに **限られます**。つまり、LLM に新しいデータを利用可能にしたい場合は、その履歴で参照できる形で提供する必要があります。いくつか方法があります。
|
|
78
|
+
|
|
79
|
+
1. エージェントの `instructions` に追加します。これは「システムプロンプト」または「開発者メッセージ」とも呼ばれます。システムプロンプトは静的な文字列でも、コンテキストを受け取って文字列を出力する動的な関数でも構いません。常に有用な情報(例: ユーザー名や現在の日付)に適した一般的な戦術です。
|
|
80
|
+
2. `Runner.run` 関数を呼ぶ際の `input` に追加します。これは `instructions` の戦術に似ていますが、[chain of command](https://cdn.openai.com/spec/model-spec-2024-05-08.html#follow-the-chain-of-command) 上でより下位のメッセージとして扱えます。
|
|
81
|
+
3. 関数ツールを通じて公開します。これはオンデマンドのコンテキストに有用です。LLM が必要なときにデータを要求し、ツールを呼び出してそのデータを取得できます。
|
|
82
|
+
4. リトリーバル(retrieval)や Web 検索を使用します。これらは、ファイルやデータベース(リトリーバル)または Web(Web 検索)から関連データを取得できる特別なツールです。関連する文脈データに基づいて応答を「グラウンディング」するのに役立ちます。
|