openai-agents 0.2.9__tar.gz → 0.2.11__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.9 → openai_agents-0.2.11}/Makefile +1 -1
- {openai_agents-0.2.9 → openai_agents-0.2.11}/PKG-INFO +2 -2
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/agents.md +48 -8
- openai_agents-0.2.11/docs/ja/agents.md +289 -0
- openai_agents-0.2.11/docs/ja/config.md +98 -0
- openai_agents-0.2.11/docs/ja/context.md +82 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ja/examples.md +14 -14
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ja/guardrails.md +14 -14
- openai_agents-0.2.11/docs/ja/handoffs.md +118 -0
- openai_agents-0.2.11/docs/ja/index.md +58 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ja/mcp.md +23 -23
- openai_agents-0.2.11/docs/ja/models/index.md +192 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ja/models/litellm.md +6 -6
- openai_agents-0.2.11/docs/ja/multi_agent.md +41 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ja/quickstart.md +18 -18
- openai_agents-0.2.11/docs/ja/realtime/guide.md +176 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ja/realtime/quickstart.md +13 -13
- openai_agents-0.2.11/docs/ja/release.md +32 -0
- openai_agents-0.2.11/docs/ja/repl.md +23 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ja/results.md +18 -18
- openai_agents-0.2.11/docs/ja/running_agents.md +141 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ja/sessions.md +109 -26
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ja/streaming.md +8 -8
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ja/tools.md +56 -56
- openai_agents-0.2.11/docs/ja/tracing.md +151 -0
- openai_agents-0.2.11/docs/ja/usage.md +68 -0
- openai_agents-0.2.11/docs/ja/visualization.md +108 -0
- openai_agents-0.2.11/docs/ja/voice/pipeline.md +79 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ja/voice/quickstart.md +8 -8
- openai_agents-0.2.11/docs/ja/voice/tracing.md +18 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/models/index.md +46 -5
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/realtime/guide.md +1 -1
- openai_agents-0.2.11/docs/ref/extensions/memory/sqlalchemy_session.md +3 -0
- openai_agents-0.2.11/docs/ref/memory/openai_conversations_session.md +3 -0
- openai_agents-0.2.11/docs/ref/memory/sqlite_session.md +3 -0
- openai_agents-0.2.11/docs/ref/models/default_models.md +3 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/scripts/translate_docs.py +29 -3
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/sessions.md +90 -6
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/usage.md +15 -5
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/basic/lifecycle_example.py +33 -8
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/basic/stream_function_call_args.py +4 -7
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/customer_service/main.py +8 -2
- openai_agents-0.2.11/examples/hosted_mcp/connectors.py +62 -0
- openai_agents-0.2.11/examples/memory/openai_session_example.py +78 -0
- {openai_agents-0.2.9/examples/basic → openai_agents-0.2.11/examples/memory}/sqlalchemy_session_example.py +32 -4
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/model_providers/litellm_auto.py +11 -1
- openai_agents-0.2.11/examples/reasoning_content/gpt_oss_stream.py +54 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/reasoning_content/main.py +2 -0
- openai_agents-0.2.11/examples/tools/web_search_filters.py +60 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/mkdocs.yml +1 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/pyproject.toml +2 -2
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/__init__.py +3 -1
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/_run_impl.py +40 -6
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/extensions/memory/sqlalchemy_session.py +45 -31
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/extensions/models/litellm_model.py +7 -4
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/handoffs.py +3 -3
- openai_agents-0.2.11/src/agents/memory/__init__.py +10 -0
- openai_agents-0.2.11/src/agents/memory/openai_conversations_session.py +94 -0
- openai_agents-0.2.11/src/agents/memory/session.py +99 -0
- openai_agents-0.2.9/src/agents/memory/session.py → openai_agents-0.2.11/src/agents/memory/sqlite_session.py +2 -96
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/model_settings.py +4 -2
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/models/chatcmpl_stream_handler.py +81 -17
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/models/interface.py +4 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/models/openai_chatcompletions.py +4 -2
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/models/openai_responses.py +23 -9
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/realtime/model.py +6 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/realtime/openai_realtime.py +34 -15
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/run.py +156 -24
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/tool.py +4 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/tracing/processors.py +2 -2
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/fake_model.py +6 -2
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/models/test_default_models.py +22 -3
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/models/test_kwargs_functionality.py +1 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/models/test_litellm_chatcompletions_stream.py +4 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/realtime/test_openai_realtime.py +39 -2
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_agent_clone_shallow_copy.py +2 -3
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_agent_prompt.py +2 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_extra_headers.py +1 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_openai_chatcompletions.py +4 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_openai_chatcompletions_stream.py +4 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_openai_responses_converter.py +2 -2
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_reasoning_content.py +3 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_responses_tracing.py +12 -6
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_run_config.py +52 -0
- openai_agents-0.2.11/tests/test_run_hooks.py +223 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_stream_events.py +1 -0
- openai_agents-0.2.11/tests/test_streaming_tool_call_arguments.py +373 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/voice/test_workflow.py +2 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/uv.lock +5 -5
- openai_agents-0.2.9/.github/codex/home/config.toml +0 -1
- openai_agents-0.2.9/.github/codex/labels/codex-attempt.md +0 -9
- openai_agents-0.2.9/.github/codex/labels/codex-review.md +0 -7
- openai_agents-0.2.9/.github/codex/labels/codex-triage.md +0 -7
- openai_agents-0.2.9/.github/workflows/codex.yml +0 -60
- openai_agents-0.2.9/docs/ja/agents.md +0 -248
- openai_agents-0.2.9/docs/ja/config.md +0 -98
- openai_agents-0.2.9/docs/ja/context.md +0 -82
- openai_agents-0.2.9/docs/ja/handoffs.md +0 -118
- openai_agents-0.2.9/docs/ja/index.md +0 -58
- openai_agents-0.2.9/docs/ja/models/index.md +0 -151
- openai_agents-0.2.9/docs/ja/multi_agent.md +0 -41
- openai_agents-0.2.9/docs/ja/realtime/guide.md +0 -176
- openai_agents-0.2.9/docs/ja/release.md +0 -32
- openai_agents-0.2.9/docs/ja/repl.md +0 -24
- openai_agents-0.2.9/docs/ja/running_agents.md +0 -141
- openai_agents-0.2.9/docs/ja/tracing.md +0 -151
- openai_agents-0.2.9/docs/ja/usage.md +0 -58
- openai_agents-0.2.9/docs/ja/visualization.md +0 -107
- openai_agents-0.2.9/docs/ja/voice/pipeline.md +0 -79
- openai_agents-0.2.9/docs/ja/voice/tracing.md +0 -18
- openai_agents-0.2.9/src/agents/memory/__init__.py +0 -3
- {openai_agents-0.2.9 → openai_agents-0.2.11}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/.github/ISSUE_TEMPLATE/model_provider.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/.github/ISSUE_TEMPLATE/question.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/.github/workflows/docs.yml +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/.github/workflows/issues.yml +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/.github/workflows/publish.yml +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/.github/workflows/tests.yml +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/.github/workflows/update-docs.yml +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/.gitignore +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/.prettierrc +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/.vscode/launch.json +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/.vscode/settings.json +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/AGENTS.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/CLAUDE.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/LICENSE +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/README.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/assets/images/favicon-platform.svg +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/assets/images/graph.png +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/assets/images/mcp-tracing.jpg +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/assets/images/orchestration.png +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/assets/logo.svg +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/config.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/context.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/examples.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/guardrails.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/handoffs.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/index.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/mcp.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/models/litellm.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/multi_agent.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/quickstart.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/realtime/quickstart.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/agent.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/agent_output.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/computer.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/exceptions.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/extensions/handoff_filters.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/extensions/handoff_prompt.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/extensions/litellm.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/extensions/models/litellm_model.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/extensions/models/litellm_provider.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/extensions/visualization.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/function_schema.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/guardrail.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/handoffs.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/index.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/items.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/lifecycle.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/logger.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/mcp/server.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/mcp/util.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/memory/session.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/memory.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/model_settings.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/models/chatcmpl_converter.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/models/chatcmpl_helpers.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/models/chatcmpl_stream_handler.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/models/fake_id.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/models/interface.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/models/multi_provider.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/models/openai_chatcompletions.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/models/openai_provider.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/models/openai_responses.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/prompts.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/realtime/agent.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/realtime/config.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/realtime/events.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/realtime/handoffs.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/realtime/items.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/realtime/model.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/realtime/model_events.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/realtime/model_inputs.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/realtime/openai_realtime.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/realtime/runner.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/realtime/session.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/repl.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/result.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/run.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/run_context.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/stream_events.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/strict_schema.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/tool.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/tool_context.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/tracing/create.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/tracing/index.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/tracing/logger.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/tracing/processor_interface.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/tracing/processors.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/tracing/provider.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/tracing/scope.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/tracing/setup.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/tracing/span_data.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/tracing/spans.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/tracing/traces.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/tracing/util.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/usage.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/version.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/voice/events.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/voice/exceptions.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/voice/imports.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/voice/input.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/voice/model.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/voice/models/openai_model_provider.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/voice/models/openai_provider.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/voice/models/openai_stt.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/voice/models/openai_tts.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/voice/pipeline.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/voice/pipeline_config.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/voice/result.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/voice/utils.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/ref/voice/workflow.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/release.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/repl.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/results.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/running_agents.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/scripts/generate_ref_files.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/streaming.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/stylesheets/extra.css +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/tools.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/tracing.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/visualization.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/voice/pipeline.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/voice/quickstart.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/docs/voice/tracing.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/agent_patterns/README.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/agent_patterns/agents_as_tools.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/agent_patterns/agents_as_tools_conditional.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/agent_patterns/deterministic.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/agent_patterns/forcing_tool_use.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/agent_patterns/input_guardrails.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/agent_patterns/llm_as_a_judge.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/agent_patterns/output_guardrails.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/agent_patterns/parallelization.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/agent_patterns/routing.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/agent_patterns/streaming_guardrails.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/basic/agent_lifecycle_example.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/basic/dynamic_system_prompt.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/basic/hello_world.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/basic/hello_world_gpt_5.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/basic/hello_world_gpt_oss.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/basic/hello_world_jupyter.ipynb +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/basic/local_file.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/basic/local_image.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/basic/media/image_bison.jpg +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/basic/media/partial_o3-and-o4-mini-system-card.pdf +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/basic/non_strict_output_type.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/basic/previous_response_id.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/basic/prompt_template.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/basic/remote_image.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/basic/remote_pdf.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/basic/stream_items.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/basic/stream_text.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/basic/tools.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/basic/usage_tracking.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/financial_research_agent/README.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/financial_research_agent/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/financial_research_agent/agents/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/financial_research_agent/agents/financials_agent.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/financial_research_agent/agents/planner_agent.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/financial_research_agent/agents/risk_agent.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/financial_research_agent/agents/search_agent.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/financial_research_agent/agents/verifier_agent.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/financial_research_agent/agents/writer_agent.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/financial_research_agent/main.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/financial_research_agent/manager.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/financial_research_agent/printer.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/handoffs/message_filter.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/handoffs/message_filter_streaming.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/hosted_mcp/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/hosted_mcp/approvals.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/hosted_mcp/simple.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/mcp/filesystem_example/README.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/mcp/filesystem_example/main.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/mcp/filesystem_example/sample_files/favorite_books.txt +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/mcp/filesystem_example/sample_files/favorite_cities.txt +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/mcp/filesystem_example/sample_files/favorite_songs.txt +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/mcp/git_example/README.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/mcp/git_example/main.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/mcp/prompt_server/README.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/mcp/prompt_server/main.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/mcp/prompt_server/server.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/mcp/sse_example/README.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/mcp/sse_example/main.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/mcp/sse_example/server.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/mcp/streamablehttp_example/README.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/mcp/streamablehttp_example/main.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/mcp/streamablehttp_example/server.py +0 -0
- /openai_agents-0.2.9/examples/basic/session_example.py → /openai_agents-0.2.11/examples/memory/sqlite_session_example.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/model_providers/README.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/model_providers/custom_example_agent.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/model_providers/custom_example_global.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/model_providers/custom_example_provider.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/model_providers/litellm_provider.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/realtime/app/README.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/realtime/app/agent.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/realtime/app/server.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/realtime/app/static/app.js +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/realtime/app/static/index.html +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/realtime/cli/demo.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/realtime/cli/ui.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/realtime/twilio/README.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/realtime/twilio/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/realtime/twilio/requirements.txt +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/realtime/twilio/server.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/realtime/twilio/twilio_handler.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/reasoning_content/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/reasoning_content/runner_example.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/research_bot/README.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/research_bot/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/research_bot/agents/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/research_bot/agents/planner_agent.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/research_bot/agents/search_agent.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/research_bot/agents/writer_agent.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/research_bot/main.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/research_bot/manager.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/research_bot/printer.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/research_bot/sample_outputs/product_recs.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/research_bot/sample_outputs/product_recs.txt +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/research_bot/sample_outputs/vacation.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/research_bot/sample_outputs/vacation.txt +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/tools/code_interpreter.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/tools/computer_use.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/tools/file_search.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/tools/image_generator.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/tools/web_search.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/voice/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/voice/static/README.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/voice/static/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/voice/static/main.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/voice/static/util.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/voice/streamed/README.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/voice/streamed/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/voice/streamed/main.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/examples/voice/streamed/my_workflow.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/_config.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/_debug.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/agent.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/agent_output.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/computer.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/exceptions.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/extensions/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/extensions/handoff_filters.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/extensions/handoff_prompt.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/extensions/memory/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/extensions/models/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/extensions/models/litellm_provider.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/extensions/visualization.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/function_schema.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/guardrail.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/items.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/lifecycle.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/logger.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/mcp/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/mcp/server.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/mcp/util.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/models/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/models/_openai_shared.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/models/chatcmpl_converter.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/models/chatcmpl_helpers.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/models/default_models.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/models/fake_id.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/models/multi_provider.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/models/openai_provider.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/prompts.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/py.typed +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/realtime/README.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/realtime/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/realtime/_default_tracker.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/realtime/_util.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/realtime/agent.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/realtime/config.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/realtime/events.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/realtime/handoffs.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/realtime/items.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/realtime/model_events.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/realtime/model_inputs.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/realtime/runner.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/realtime/session.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/repl.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/result.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/run_context.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/stream_events.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/strict_schema.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/tool_context.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/tracing/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/tracing/create.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/tracing/logger.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/tracing/processor_interface.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/tracing/provider.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/tracing/scope.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/tracing/setup.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/tracing/span_data.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/tracing/spans.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/tracing/traces.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/tracing/util.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/usage.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/util/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/util/_coro.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/util/_error_tracing.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/util/_json.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/util/_pretty_print.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/util/_transforms.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/util/_types.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/version.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/voice/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/voice/events.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/voice/exceptions.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/voice/imports.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/voice/input.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/voice/model.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/voice/models/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/voice/models/openai_model_provider.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/voice/models/openai_stt.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/voice/models/openai_tts.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/voice/pipeline.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/voice/pipeline_config.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/voice/result.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/voice/utils.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/src/agents/voice/workflow.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/README.md +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/conftest.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/extensions/memory/test_sqlalchemy_session.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/fastapi/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/fastapi/streaming_app.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/fastapi/test_streaming_context.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/mcp/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/mcp/conftest.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/mcp/helpers.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/mcp/test_caching.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/mcp/test_client_session_retries.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/mcp/test_connect_disconnect.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/mcp/test_mcp_tracing.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/mcp/test_mcp_util.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/mcp/test_prompt_server.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/mcp/test_runner_calls_mcp.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/mcp/test_server_errors.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/mcp/test_tool_filtering.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/model_settings/test_serialization.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/models/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/models/conftest.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/models/test_litellm_extra_body.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/models/test_map.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/realtime/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/realtime/test_agent.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/realtime/test_conversion_helpers.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/realtime/test_item_parsing.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/realtime/test_model_events.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/realtime/test_playback_tracker.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/realtime/test_realtime_handoffs.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/realtime/test_runner.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/realtime/test_session.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/realtime/test_tracing.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_agent_as_tool.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_agent_config.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_agent_hooks.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_agent_instructions_signature.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_agent_llm_hooks.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_agent_runner.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_agent_runner_streamed.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_agent_tracing.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_call_model_input_filter.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_call_model_input_filter_unit.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_cancel_streaming.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_computer_action.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_config.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_doc_parsing.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_extension_filters.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_function_schema.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_function_tool.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_function_tool_decorator.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_global_hooks.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_guardrails.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_handoff_tool.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_items_helpers.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_logprobs.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_max_turns.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_openai_chatcompletions_converter.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_output_tool.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_pretty_print.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_repl.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_responses.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_result_cast.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_run.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_run_error_details.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_run_step_execution.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_run_step_processing.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_session.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_session_exceptions.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_strict_schema.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_tool_choice_reset.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_tool_converter.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_tool_use_behavior.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_trace_processor.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_tracing.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_tracing_errors.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_tracing_errors_streamed.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_usage.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/test_visualization.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/testing_processor.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/tracing/test_processor_api_key.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/tracing/test_set_api_key_fix.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/voice/__init__.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/voice/conftest.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/voice/fake_models.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/voice/helpers.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/voice/test_input.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/voice/test_openai_stt.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/voice/test_openai_tts.py +0 -0
- {openai_agents-0.2.9 → openai_agents-0.2.11}/tests/voice/test_pipeline.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openai-agents
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.11
|
|
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.104.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 メッセージまたは システムプロンプト とも呼ばれます。
|
|
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 logging guide](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
|
+
最も **重要** な点: あるエージェント実行に関わるすべてのエージェント、ツール関数、ライフサイクルなどは、同じコンテキストの型を使用しなければなりません。
|
|
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 に新しいデータを利用可能にしたい場合は、その履歴で参照できる形で提供する必要があります。これにはいくつかの方法があります。
|
|
78
|
+
|
|
79
|
+
1. エージェントの `instructions` に追加します。これは "system prompt" や "developer message" とも呼ばれます。system prompt は静的な文字列でも、コンテキストを受け取って文字列を出力する動的関数でも構いません。これは常に有用な情報(例: ユーザーの名前や現在の日付)に一般的な手法です。
|
|
80
|
+
2. `Runner.run` 関数を呼び出すときの `input` に追加します。これは `instructions` の手法に似ていますが、[指揮系統](https://cdn.openai.com/spec/model-spec-2024-05-08.html#follow-the-chain-of-command)の下位に位置するメッセージを持てます。
|
|
81
|
+
3. 関数ツールで公開します。これはオンデマンドのコンテキストに有用です。LLM が必要に応じてデータ取得を判断し、ツールを呼び出してそのデータを取得できます。
|
|
82
|
+
4. リトリーバルや Web 検索を使用します。これらは、ファイルやデータベース(リトリーバル)または Web(Web 検索)から関連データを取得できる特別なツールです。これは、応答を関連する文脈データで「グラウンディング」するのに有用です。
|
|
@@ -4,46 +4,46 @@ search:
|
|
|
4
4
|
---
|
|
5
5
|
# コード例
|
|
6
6
|
|
|
7
|
-
[
|
|
7
|
+
[repo](https://github.com/openai/openai-agents-python/tree/main/examples) の examples セクションで、SDK の多様なサンプル実装をご覧ください。これらのコード例は、さまざまなパターンや機能を示す複数の カテゴリー に整理されています。
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
## カテゴリー
|
|
11
11
|
|
|
12
12
|
- **[agent_patterns](https://github.com/openai/openai-agents-python/tree/main/examples/agent_patterns):**
|
|
13
|
-
|
|
13
|
+
このカテゴリーの例では、次のような一般的な エージェント の設計パターンを示します
|
|
14
14
|
|
|
15
15
|
- 決定論的なワークフロー
|
|
16
16
|
- ツールとしての エージェント
|
|
17
|
-
-
|
|
17
|
+
- エージェント の並列実行
|
|
18
18
|
|
|
19
19
|
- **[basic](https://github.com/openai/openai-agents-python/tree/main/examples/basic):**
|
|
20
|
-
|
|
20
|
+
このカテゴリーの例では、SDK の基礎的な機能を示します
|
|
21
21
|
|
|
22
22
|
- 動的な system prompt
|
|
23
23
|
- ストリーミング出力
|
|
24
24
|
- ライフサイクルイベント
|
|
25
25
|
|
|
26
26
|
- **[tool examples](https://github.com/openai/openai-agents-python/tree/main/examples/tools):**
|
|
27
|
-
|
|
28
|
-
それらを エージェント
|
|
27
|
+
Web 検索 や ファイル検索 などの OpenAI がホストするツール の実装方法を学び、
|
|
28
|
+
それらを エージェント に統合します。
|
|
29
29
|
|
|
30
30
|
- **[model providers](https://github.com/openai/openai-agents-python/tree/main/examples/model_providers):**
|
|
31
|
-
|
|
31
|
+
SDK で OpenAI 以外のモデルを使用する方法を探ります。
|
|
32
32
|
|
|
33
33
|
- **[handoffs](https://github.com/openai/openai-agents-python/tree/main/examples/handoffs):**
|
|
34
|
-
|
|
34
|
+
エージェント のハンドオフの実用的な例をご覧ください。
|
|
35
35
|
|
|
36
36
|
- **[mcp](https://github.com/openai/openai-agents-python/tree/main/examples/mcp):**
|
|
37
|
-
MCP
|
|
37
|
+
MCP で エージェント を構築する方法を学びます。
|
|
38
38
|
|
|
39
39
|
- **[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):**
|
|
40
|
-
|
|
40
|
+
実運用での活用を想定した、さらに作り込まれた 2 つのコード例
|
|
41
41
|
|
|
42
|
-
- **customer_service**:
|
|
43
|
-
- **research_bot**: シンプルな ディープリサーチ
|
|
42
|
+
- **customer_service**: 航空会社向けのカスタマーサービスシステムの例。
|
|
43
|
+
- **research_bot**: シンプルな ディープリサーチ のクローン。
|
|
44
44
|
|
|
45
45
|
- **[voice](https://github.com/openai/openai-agents-python/tree/main/examples/voice):**
|
|
46
|
-
TTS
|
|
46
|
+
当社の TTS および STT モデルを使った音声 エージェント のコード例をご覧ください。
|
|
47
47
|
|
|
48
48
|
- **[realtime](https://github.com/openai/openai-agents-python/tree/main/examples/realtime):**
|
|
49
|
-
SDK
|
|
49
|
+
SDK を使用してリアルタイム体験を構築する方法を示すコード例。
|