openai-agents 0.3.1__tar.gz → 0.3.2__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.3.1 → openai_agents-0.3.2}/PKG-INFO +1 -1
- openai_agents-0.3.2/docs/llms-full.txt +112 -0
- openai_agents-0.3.2/docs/llms.txt +60 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/basic/dynamic_system_prompt.py +6 -6
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/basic/lifecycle_example.py +7 -7
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/basic/stream_function_call_args.py +8 -4
- {openai_agents-0.3.1 → openai_agents-0.3.2}/pyproject.toml +1 -1
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/extensions/models/litellm_model.py +2 -6
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/models/chatcmpl_converter.py +25 -14
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/models/chatcmpl_helpers.py +2 -2
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/models/openai_chatcompletions.py +6 -6
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/models/openai_responses.py +8 -8
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/realtime/session.py +2 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/run.py +20 -7
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/tool_context.py +14 -1
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/models/test_litellm_user_agent.py +3 -3
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_agent_as_tool.py +12 -2
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_anthropic_thinking_blocks.py +31 -3
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_function_tool.py +36 -15
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_function_tool_decorator.py +3 -1
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_openai_chatcompletions.py +3 -3
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_openai_responses.py +3 -3
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_run_hooks.py +25 -2
- {openai_agents-0.3.1 → openai_agents-0.3.2}/uv.lock +1 -1
- {openai_agents-0.3.1 → openai_agents-0.3.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/.github/ISSUE_TEMPLATE/model_provider.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/.github/ISSUE_TEMPLATE/question.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/.github/workflows/docs.yml +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/.github/workflows/issues.yml +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/.github/workflows/publish.yml +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/.github/workflows/tests.yml +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/.github/workflows/update-docs.yml +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/.gitignore +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/.prettierrc +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/.vscode/launch.json +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/.vscode/settings.json +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/AGENTS.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/CLAUDE.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/LICENSE +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/Makefile +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/README.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/agents.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/assets/images/favicon-platform.svg +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/assets/images/graph.png +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/assets/images/mcp-tracing.jpg +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/assets/images/orchestration.png +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/assets/logo.svg +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/config.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/context.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/examples.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/guardrails.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/handoffs.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/index.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/agents.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/config.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/context.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/examples.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/guardrails.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/handoffs.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/index.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/mcp.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/models/index.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/models/litellm.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/multi_agent.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/quickstart.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/realtime/guide.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/realtime/quickstart.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/release.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/repl.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/results.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/running_agents.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/sessions.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/streaming.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/tools.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/tracing.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/usage.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/visualization.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/voice/pipeline.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/voice/quickstart.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ja/voice/tracing.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/mcp.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/models/index.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/models/litellm.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/multi_agent.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/quickstart.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/realtime/guide.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/realtime/quickstart.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/agent.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/agent_output.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/computer.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/exceptions.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/extensions/handoff_filters.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/extensions/handoff_prompt.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/extensions/litellm.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/extensions/memory/sqlalchemy_session.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/extensions/models/litellm_model.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/extensions/models/litellm_provider.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/extensions/visualization.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/function_schema.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/guardrail.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/handoffs.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/index.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/items.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/lifecycle.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/logger.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/mcp/server.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/mcp/util.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/memory/openai_conversations_session.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/memory/session.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/memory/sqlite_session.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/memory.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/model_settings.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/models/chatcmpl_converter.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/models/chatcmpl_helpers.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/models/chatcmpl_stream_handler.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/models/default_models.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/models/fake_id.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/models/interface.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/models/multi_provider.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/models/openai_chatcompletions.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/models/openai_provider.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/models/openai_responses.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/prompts.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/realtime/agent.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/realtime/config.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/realtime/events.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/realtime/handoffs.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/realtime/items.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/realtime/model.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/realtime/model_events.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/realtime/model_inputs.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/realtime/openai_realtime.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/realtime/runner.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/realtime/session.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/repl.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/result.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/run.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/run_context.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/stream_events.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/strict_schema.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/tool.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/tool_context.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/tracing/create.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/tracing/index.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/tracing/logger.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/tracing/processor_interface.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/tracing/processors.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/tracing/provider.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/tracing/scope.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/tracing/setup.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/tracing/span_data.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/tracing/spans.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/tracing/traces.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/tracing/util.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/usage.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/version.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/voice/events.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/voice/exceptions.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/voice/imports.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/voice/input.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/voice/model.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/voice/models/openai_model_provider.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/voice/models/openai_provider.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/voice/models/openai_stt.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/voice/models/openai_tts.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/voice/pipeline.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/voice/pipeline_config.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/voice/result.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/voice/utils.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/ref/voice/workflow.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/release.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/repl.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/results.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/running_agents.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/scripts/generate_ref_files.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/scripts/translate_docs.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/sessions.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/streaming.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/stylesheets/extra.css +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/tools.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/tracing.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/usage.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/visualization.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/voice/pipeline.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/voice/quickstart.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/docs/voice/tracing.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/agent_patterns/README.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/agent_patterns/agents_as_tools.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/agent_patterns/agents_as_tools_conditional.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/agent_patterns/deterministic.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/agent_patterns/forcing_tool_use.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/agent_patterns/input_guardrails.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/agent_patterns/llm_as_a_judge.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/agent_patterns/output_guardrails.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/agent_patterns/parallelization.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/agent_patterns/routing.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/agent_patterns/streaming_guardrails.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/basic/agent_lifecycle_example.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/basic/hello_world.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/basic/hello_world_gpt_5.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/basic/hello_world_gpt_oss.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/basic/hello_world_jupyter.ipynb +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/basic/local_file.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/basic/local_image.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/basic/media/image_bison.jpg +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/basic/media/partial_o3-and-o4-mini-system-card.pdf +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/basic/non_strict_output_type.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/basic/previous_response_id.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/basic/prompt_template.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/basic/remote_image.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/basic/remote_pdf.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/basic/stream_items.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/basic/stream_text.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/basic/tools.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/basic/usage_tracking.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/customer_service/main.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/financial_research_agent/README.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/financial_research_agent/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/financial_research_agent/agents/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/financial_research_agent/agents/financials_agent.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/financial_research_agent/agents/planner_agent.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/financial_research_agent/agents/risk_agent.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/financial_research_agent/agents/search_agent.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/financial_research_agent/agents/verifier_agent.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/financial_research_agent/agents/writer_agent.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/financial_research_agent/main.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/financial_research_agent/manager.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/financial_research_agent/printer.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/handoffs/message_filter.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/handoffs/message_filter_streaming.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/hosted_mcp/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/hosted_mcp/approvals.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/hosted_mcp/connectors.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/hosted_mcp/simple.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/mcp/filesystem_example/README.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/mcp/filesystem_example/main.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/mcp/filesystem_example/sample_files/favorite_books.txt +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/mcp/filesystem_example/sample_files/favorite_cities.txt +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/mcp/filesystem_example/sample_files/favorite_songs.txt +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/mcp/git_example/README.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/mcp/git_example/main.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/mcp/prompt_server/README.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/mcp/prompt_server/main.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/mcp/prompt_server/server.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/mcp/sse_example/README.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/mcp/sse_example/main.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/mcp/sse_example/server.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/mcp/streamablehttp_example/README.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/mcp/streamablehttp_example/main.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/mcp/streamablehttp_example/server.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/memory/encrypted_session_example.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/memory/openai_session_example.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/memory/sqlalchemy_session_example.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/memory/sqlite_session_example.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/model_providers/README.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/model_providers/custom_example_agent.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/model_providers/custom_example_global.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/model_providers/custom_example_provider.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/model_providers/litellm_auto.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/model_providers/litellm_provider.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/realtime/app/README.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/realtime/app/agent.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/realtime/app/server.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/realtime/app/static/app.js +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/realtime/app/static/favicon.ico +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/realtime/app/static/index.html +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/realtime/cli/demo.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/realtime/cli/ui.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/realtime/twilio/README.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/realtime/twilio/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/realtime/twilio/requirements.txt +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/realtime/twilio/server.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/realtime/twilio/twilio_handler.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/reasoning_content/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/reasoning_content/gpt_oss_stream.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/reasoning_content/main.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/reasoning_content/runner_example.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/research_bot/README.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/research_bot/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/research_bot/agents/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/research_bot/agents/planner_agent.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/research_bot/agents/search_agent.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/research_bot/agents/writer_agent.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/research_bot/main.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/research_bot/manager.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/research_bot/printer.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/research_bot/sample_outputs/product_recs.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/research_bot/sample_outputs/product_recs.txt +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/research_bot/sample_outputs/vacation.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/research_bot/sample_outputs/vacation.txt +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/tools/code_interpreter.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/tools/computer_use.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/tools/file_search.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/tools/image_generator.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/tools/web_search.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/tools/web_search_filters.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/voice/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/voice/static/README.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/voice/static/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/voice/static/main.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/voice/static/util.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/voice/streamed/README.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/voice/streamed/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/voice/streamed/main.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/examples/voice/streamed/my_workflow.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/mkdocs.yml +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/_config.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/_debug.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/_run_impl.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/agent.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/agent_output.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/computer.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/exceptions.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/extensions/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/extensions/handoff_filters.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/extensions/handoff_prompt.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/extensions/memory/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/extensions/memory/encrypt_session.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/extensions/memory/sqlalchemy_session.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/extensions/models/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/extensions/models/litellm_provider.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/extensions/visualization.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/function_schema.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/guardrail.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/handoffs.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/items.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/lifecycle.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/logger.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/mcp/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/mcp/server.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/mcp/util.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/memory/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/memory/openai_conversations_session.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/memory/session.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/memory/sqlite_session.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/memory/util.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/model_settings.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/models/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/models/_openai_shared.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/models/chatcmpl_stream_handler.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/models/default_models.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/models/fake_id.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/models/interface.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/models/multi_provider.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/models/openai_provider.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/prompts.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/py.typed +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/realtime/README.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/realtime/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/realtime/_default_tracker.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/realtime/_util.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/realtime/agent.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/realtime/audio_formats.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/realtime/config.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/realtime/events.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/realtime/handoffs.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/realtime/items.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/realtime/model.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/realtime/model_events.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/realtime/model_inputs.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/realtime/openai_realtime.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/realtime/runner.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/repl.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/result.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/run_context.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/stream_events.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/strict_schema.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/tool.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/tracing/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/tracing/create.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/tracing/logger.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/tracing/processor_interface.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/tracing/processors.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/tracing/provider.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/tracing/scope.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/tracing/setup.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/tracing/span_data.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/tracing/spans.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/tracing/traces.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/tracing/util.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/usage.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/util/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/util/_coro.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/util/_error_tracing.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/util/_json.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/util/_pretty_print.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/util/_transforms.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/util/_types.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/version.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/voice/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/voice/events.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/voice/exceptions.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/voice/imports.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/voice/input.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/voice/model.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/voice/models/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/voice/models/openai_model_provider.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/voice/models/openai_stt.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/voice/models/openai_tts.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/voice/pipeline.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/voice/pipeline_config.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/voice/result.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/voice/utils.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/src/agents/voice/workflow.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/README.md +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/conftest.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/extensions/memory/test_encrypt_session.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/extensions/memory/test_sqlalchemy_session.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/fake_model.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/fastapi/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/fastapi/streaming_app.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/fastapi/test_streaming_context.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/mcp/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/mcp/conftest.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/mcp/helpers.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/mcp/test_caching.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/mcp/test_client_session_retries.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/mcp/test_connect_disconnect.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/mcp/test_mcp_tracing.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/mcp/test_mcp_util.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/mcp/test_prompt_server.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/mcp/test_runner_calls_mcp.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/mcp/test_server_errors.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/mcp/test_tool_filtering.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/model_settings/test_serialization.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/models/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/models/conftest.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/models/test_default_models.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/models/test_kwargs_functionality.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/models/test_litellm_chatcompletions_stream.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/models/test_litellm_extra_body.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/models/test_map.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/realtime/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/realtime/test_agent.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/realtime/test_audio_formats_unit.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/realtime/test_conversion_helpers.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/realtime/test_ga_session_update_normalization.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/realtime/test_item_parsing.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/realtime/test_model_events.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/realtime/test_openai_realtime.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/realtime/test_openai_realtime_conversions.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/realtime/test_playback_tracker.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/realtime/test_playback_tracker_manual_unit.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/realtime/test_realtime_handoffs.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/realtime/test_runner.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/realtime/test_session.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/realtime/test_session_payload_and_formats.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/realtime/test_tracing.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_agent_clone_shallow_copy.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_agent_config.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_agent_hooks.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_agent_instructions_signature.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_agent_llm_hooks.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_agent_prompt.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_agent_runner.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_agent_runner_streamed.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_agent_tracing.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_call_model_input_filter.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_call_model_input_filter_unit.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_cancel_streaming.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_computer_action.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_config.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_debug.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_doc_parsing.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_extension_filters.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_extra_headers.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_function_schema.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_global_hooks.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_guardrails.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_handoff_tool.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_items_helpers.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_logprobs.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_max_turns.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_model_payload_iterators.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_openai_chatcompletions_converter.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_openai_chatcompletions_stream.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_openai_responses_converter.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_output_tool.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_pretty_print.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_reasoning_content.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_repl.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_responses.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_responses_tracing.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_result_cast.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_run.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_run_config.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_run_error_details.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_run_step_execution.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_run_step_processing.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_session.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_session_exceptions.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_stream_events.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_streaming_tool_call_arguments.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_strict_schema.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_tool_choice_reset.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_tool_converter.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_tool_use_behavior.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_trace_processor.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_tracing.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_tracing_errors.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_tracing_errors_streamed.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_usage.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/test_visualization.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/testing_processor.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/tracing/test_processor_api_key.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/tracing/test_set_api_key_fix.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/utils/test_json.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/voice/__init__.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/voice/conftest.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/voice/fake_models.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/voice/helpers.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/voice/test_input.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/voice/test_openai_stt.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/voice/test_openai_tts.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/voice/test_pipeline.py +0 -0
- {openai_agents-0.3.1 → openai_agents-0.3.2}/tests/voice/test_workflow.py +0 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# OpenAI Agents SDK Documentation (Full Context)
|
|
2
|
+
|
|
3
|
+
> Extended reference map for the OpenAI Agents SDK documentation site. Use these curated links when assembling prompts that need authoritative guidance on building, operating, and extending agentic applications with the SDK.
|
|
4
|
+
|
|
5
|
+
The Agents SDK delivers a focused set of Python primitives—agents, tools, guardrails, handoffs, sessions, and tracing—plus voice and realtime interfaces. The pages below provide detailed walkthroughs, architectural patterns, and API-level documentation for integrating those capabilities into production systems.
|
|
6
|
+
|
|
7
|
+
## Getting Started and Orientation
|
|
8
|
+
- [Overview](https://openai.github.io/openai-agents-python/): Conceptual tour of the SDK, covering the core agent loop, motivation, installation snippet, and a runnable hello-world.
|
|
9
|
+
- [Quickstart](https://openai.github.io/openai-agents-python/quickstart/): Guided setup from environment preparation through running and monitoring your first agent, including troubleshooting tips.
|
|
10
|
+
- [Example Gallery](https://openai.github.io/openai-agents-python/examples/): Realistic Python samples that demonstrate tool orchestration, guardrails, streaming, and integrations with external systems.
|
|
11
|
+
- [Release notes](https://openai.github.io/openai-agents-python/release/): Version-by-version change log with migration notes for breaking updates.
|
|
12
|
+
- [Usage and pricing](https://openai.github.io/openai-agents-python/usage/): Explains how token usage is tracked, how to retrieve usage metadata, and how to forecast cost for different deployment patterns.
|
|
13
|
+
- [Configuration](https://openai.github.io/openai-agents-python/config/): Centralized reference for tuning model settings, retries, rate limits, timeouts, logging, and runner behavior.
|
|
14
|
+
|
|
15
|
+
## Core Agent Workflows
|
|
16
|
+
- [Agents](https://openai.github.io/openai-agents-python/agents/): Defines agent objects, instruction design, tool registration, guardrail attachment, streaming options, and lifecycle hooks.
|
|
17
|
+
- [Running agents](https://openai.github.io/openai-agents-python/running_agents/): Covers synchronous and asynchronous execution, concurrency controls, background tasks, cancellation, and handling failures.
|
|
18
|
+
- [Sessions](https://openai.github.io/openai-agents-python/sessions/): Describes persistent session state, conversation threading, history pruning, and custom session storage backends.
|
|
19
|
+
- [Context strategies](https://openai.github.io/openai-agents-python/context/): Techniques for tailoring prompts, managing attachments, trimming history, and injecting auxiliary context into runs.
|
|
20
|
+
- [Results](https://openai.github.io/openai-agents-python/results/): Breaks down the result object, including final output, tool call transcripts, intermediate messages, and metadata fields.
|
|
21
|
+
- [Streaming](https://openai.github.io/openai-agents-python/streaming/): Shows how to subscribe to incremental events, stream tool progress, and render partial model outputs in real time.
|
|
22
|
+
- [REPL](https://openai.github.io/openai-agents-python/repl/): Interactive runner for exploring agent behavior, step-by-step execution, and debugging tool calls.
|
|
23
|
+
- [Visualization](https://openai.github.io/openai-agents-python/visualization/): Demonstrates embeddable visualizations for session timelines, message flows, and tool interactions.
|
|
24
|
+
|
|
25
|
+
## Coordination, Safety, and Tooling
|
|
26
|
+
- [Handoffs](https://openai.github.io/openai-agents-python/handoffs/): Implements delegation between agents, argument passing, completion handling, and error recovery across agent boundaries.
|
|
27
|
+
- [Multi-agent patterns](https://openai.github.io/openai-agents-python/multi_agent/): Architecture playbook for designing specialist teams, escalation workflows, and role-based collaboration strategies.
|
|
28
|
+
- [Guardrails](https://openai.github.io/openai-agents-python/guardrails/): Create synchronous or asynchronous checks, short-circuit runs, and emit structured validation reports.
|
|
29
|
+
- [Tools](https://openai.github.io/openai-agents-python/tools/): Turn Python callables into structured tools, manage schemas, compose tool contexts, and test tool execution paths.
|
|
30
|
+
- [Model Context Protocol](https://openai.github.io/openai-agents-python/mcp/): Integrate MCP servers so agents can dynamically request data or actions from external providers via a standard protocol.
|
|
31
|
+
|
|
32
|
+
## Modality-Specific Guides
|
|
33
|
+
- [Voice quickstart](https://openai.github.io/openai-agents-python/voice/quickstart/): Build an end-to-end voice assistant with streaming transcription, text-to-speech, and event-driven responses.
|
|
34
|
+
- [Voice pipeline](https://openai.github.io/openai-agents-python/voice/pipeline/): Customize audio capture, buffering, model invocation, and playback in voice-first experiences.
|
|
35
|
+
- [Voice tracing](https://openai.github.io/openai-agents-python/voice/tracing/): Inspect voice session traces, latency breakdowns, and audio event timelines.
|
|
36
|
+
- [Realtime quickstart](https://openai.github.io/openai-agents-python/realtime/quickstart/): Launch realtime agents over WebRTC or websockets, subscribe to events, and manage low-latency execution.
|
|
37
|
+
- [Realtime guide](https://openai.github.io/openai-agents-python/realtime/guide/): Deep dive into realtime session lifecycle, event schemas, concurrency, and backpressure handling.
|
|
38
|
+
|
|
39
|
+
## Models and Provider Integrations
|
|
40
|
+
- [Model catalog](https://openai.github.io/openai-agents-python/models/): Lists supported OpenAI and partner models with guidance on selecting capabilities for different workloads.
|
|
41
|
+
- [LiteLLM integration](https://openai.github.io/openai-agents-python/models/litellm/): Configure LiteLLM as a provider, map model aliases, and route requests across heterogeneous backends.
|
|
42
|
+
|
|
43
|
+
## API Reference – Agents SDK Core
|
|
44
|
+
- [API index](https://openai.github.io/openai-agents-python/ref/index/): Directory of all documented modules, classes, and functions in the SDK.
|
|
45
|
+
- [agents.Agent](https://openai.github.io/openai-agents-python/ref/agent/): Constructor arguments, behaviors, guardrail hooks, and serialization helpers.
|
|
46
|
+
- [runs and runners](https://openai.github.io/openai-agents-python/ref/run/): Runner interfaces for launching agents, streaming events, handling cancellations, and background execution.
|
|
47
|
+
- [memory interfaces](https://openai.github.io/openai-agents-python/ref/memory/): Session memory primitives, storage adapters, and utilities for retrieving historical context.
|
|
48
|
+
- [repl utilities](https://openai.github.io/openai-agents-python/ref/repl/): Programmatic access to the interactive REPL loop and inspection helpers.
|
|
49
|
+
- [tool base classes](https://openai.github.io/openai-agents-python/ref/tool/): Tool registration, invocation, and structured argument parsing.
|
|
50
|
+
- [tool context helpers](https://openai.github.io/openai-agents-python/ref/tool_context/): Manage shared resources, dependency injection, and cleanup for tool execution.
|
|
51
|
+
- [result objects](https://openai.github.io/openai-agents-python/ref/result/): Fields exposed on run results, including final content, tool call summaries, and attachments.
|
|
52
|
+
- [stream events](https://openai.github.io/openai-agents-python/ref/stream_events/): Event models emitted during streaming runs and their payload schemas.
|
|
53
|
+
- [handoffs module](https://openai.github.io/openai-agents-python/ref/handoffs/): Programmatic API for defining, routing, and resolving handoffs between agents.
|
|
54
|
+
- [lifecycle callbacks](https://openai.github.io/openai-agents-python/ref/lifecycle/): Hooks for intercepting agent stages, customizing evaluation, and logging intermediate data.
|
|
55
|
+
- [items API](https://openai.github.io/openai-agents-python/ref/items/): Low-level primitives that represent agent messages, tool calls, and attachments.
|
|
56
|
+
- [run context utilities](https://openai.github.io/openai-agents-python/ref/run_context/): Context managers and helpers for passing metadata through nested tool executions.
|
|
57
|
+
- [usage tracking](https://openai.github.io/openai-agents-python/ref/usage/): Inspect token usage, durations, and cost metrics from completed runs.
|
|
58
|
+
- [exceptions](https://openai.github.io/openai-agents-python/ref/exceptions/): Exception hierarchy raised by the SDK and recommendations for resilient error handling.
|
|
59
|
+
- [guardrail APIs](https://openai.github.io/openai-agents-python/ref/guardrail/): Build custom guardrails, interpret validation outcomes, and integrate enforcement logic.
|
|
60
|
+
- [model settings](https://openai.github.io/openai-agents-python/ref/model_settings/): Shared configuration objects for model parameters, temperature, and tool invocation settings.
|
|
61
|
+
- [agent output models](https://openai.github.io/openai-agents-python/ref/agent_output/): Typed models describing message content, tool calls, and aggregated agent responses.
|
|
62
|
+
- [function schema utilities](https://openai.github.io/openai-agents-python/ref/function_schema/): Helpers for generating JSON schemas from Python functions and Pydantic models.
|
|
63
|
+
- [model interfaces](https://openai.github.io/openai-agents-python/ref/models/interface/): Abstractions for pluggable model providers.
|
|
64
|
+
- [OpenAI chat completions provider](https://openai.github.io/openai-agents-python/ref/models/openai_chatcompletions/): Implementation details for the chat-completions-based model adapter.
|
|
65
|
+
- [OpenAI responses provider](https://openai.github.io/openai-agents-python/ref/models/openai_responses/): Implementation details for the responses API adapter.
|
|
66
|
+
- [MCP server helpers](https://openai.github.io/openai-agents-python/ref/mcp/server/): Utilities for building MCP servers that expose tools to agents.
|
|
67
|
+
- [MCP client utilities](https://openai.github.io/openai-agents-python/ref/mcp/util/): Helpers for consuming MCP servers from within agents.
|
|
68
|
+
|
|
69
|
+
## API Reference – Tracing
|
|
70
|
+
- [Tracing overview](https://openai.github.io/openai-agents-python/ref/tracing/index/): End-to-end API documentation for tracing components.
|
|
71
|
+
- [Creating traces](https://openai.github.io/openai-agents-python/ref/tracing/create/): Programmatic APIs for instantiating traces and attaching metadata.
|
|
72
|
+
- [Trace model](https://openai.github.io/openai-agents-python/ref/tracing/traces/): Data models representing traces and their relationships.
|
|
73
|
+
- [Span model](https://openai.github.io/openai-agents-python/ref/tracing/spans/): Span structure, timing data, and message attribution.
|
|
74
|
+
- [Processor interface](https://openai.github.io/openai-agents-python/ref/tracing/processor_interface/): Contract for custom processors that consume trace events.
|
|
75
|
+
- [Bundled processors](https://openai.github.io/openai-agents-python/ref/tracing/processors/): Built-in processors for exporting traces to external systems.
|
|
76
|
+
- [Tracing scope](https://openai.github.io/openai-agents-python/ref/tracing/scope/): Context managers that manage active traces and spans.
|
|
77
|
+
- [Tracing setup](https://openai.github.io/openai-agents-python/ref/tracing/setup/): Configuration helpers for initializing tracing in applications and tests.
|
|
78
|
+
- [Span data utilities](https://openai.github.io/openai-agents-python/ref/tracing/span_data/): Helper models for span payloads and events.
|
|
79
|
+
- [Tracing utility helpers](https://openai.github.io/openai-agents-python/ref/tracing/util/): Miscellaneous tracing utilities, exporters, and logging helpers.
|
|
80
|
+
|
|
81
|
+
## API Reference – Realtime
|
|
82
|
+
- [Realtime agent API](https://openai.github.io/openai-agents-python/ref/realtime/agent/): Programmatic interface for realtime agents.
|
|
83
|
+
- [Realtime runner](https://openai.github.io/openai-agents-python/ref/realtime/runner/): Manage realtime execution loops, concurrency, and cleanup.
|
|
84
|
+
- [Realtime session](https://openai.github.io/openai-agents-python/ref/realtime/session/): Lifecycle and state management for realtime sessions.
|
|
85
|
+
- [Realtime events](https://openai.github.io/openai-agents-python/ref/realtime/events/): Event payload types delivered over realtime channels.
|
|
86
|
+
- [Realtime config](https://openai.github.io/openai-agents-python/ref/realtime/config/): Configuration models for realtime transports and behaviors.
|
|
87
|
+
- [Realtime model interface](https://openai.github.io/openai-agents-python/ref/realtime/model/): Interfaces for plugging in realtime-capable models.
|
|
88
|
+
|
|
89
|
+
## API Reference – Voice
|
|
90
|
+
- [Voice pipeline API](https://openai.github.io/openai-agents-python/ref/voice/pipeline/): Programmatic control over the voice pipeline and event flow.
|
|
91
|
+
- [Voice workflow helpers](https://openai.github.io/openai-agents-python/ref/voice/workflow/): Orchestrate conversational voice workflows.
|
|
92
|
+
- [Voice input models](https://openai.github.io/openai-agents-python/ref/voice/input/): Structured representations of microphone and streaming audio input.
|
|
93
|
+
- [Voice result models](https://openai.github.io/openai-agents-python/ref/voice/result/): Output schema for voice responses, transcripts, and tool invocations.
|
|
94
|
+
- [Voice pipeline config](https://openai.github.io/openai-agents-python/ref/voice/pipeline_config/): Configuration options for buffer sizes, concurrency, and model routing.
|
|
95
|
+
- [Voice events](https://openai.github.io/openai-agents-python/ref/voice/events/): Event payloads describing voice session updates.
|
|
96
|
+
- [Voice exceptions](https://openai.github.io/openai-agents-python/ref/voice/exceptions/): Exception types for voice pipelines and error handling guidance.
|
|
97
|
+
- [Voice model adapters](https://openai.github.io/openai-agents-python/ref/voice/model/): Interfaces for voice-enabled models and synthesis engines.
|
|
98
|
+
- [Voice utility helpers](https://openai.github.io/openai-agents-python/ref/voice/utils/): Audio conversion, streaming helpers, and testing utilities.
|
|
99
|
+
- [OpenAI voice provider](https://openai.github.io/openai-agents-python/ref/voice/models/openai_provider/): Adapter for OpenAI voice models.
|
|
100
|
+
- [OpenAI speech-to-text provider](https://openai.github.io/openai-agents-python/ref/voice/models/openai_stt/): Integration for STT models used in the pipeline.
|
|
101
|
+
- [OpenAI text-to-speech provider](https://openai.github.io/openai-agents-python/ref/voice/models/openai_tts/): Adapter for OpenAI TTS output.
|
|
102
|
+
|
|
103
|
+
## API Reference – Extensions
|
|
104
|
+
- [Handoff filters extension](https://openai.github.io/openai-agents-python/ref/extensions/handoff_filters/): Build filters that decide whether to trigger a handoff.
|
|
105
|
+
- [Handoff prompt extension](https://openai.github.io/openai-agents-python/ref/extensions/handoff_prompt/): Customize prompt templates used when transferring control.
|
|
106
|
+
- [LiteLLM extension](https://openai.github.io/openai-agents-python/ref/extensions/litellm/): Adapter for using LiteLLM-managed providers inside the SDK.
|
|
107
|
+
- [SQLAlchemy session memory](https://openai.github.io/openai-agents-python/ref/extensions/memory/sqlalchemy_session/): Persist agent session history to SQL databases.
|
|
108
|
+
|
|
109
|
+
## Optional
|
|
110
|
+
- [Japanese documentation](https://openai.github.io/openai-agents-python/ja/): Localized guides mirroring the core English documentation.
|
|
111
|
+
- [GitHub repository](https://github.com/openai/openai-agents-python): Source code, issues, and contribution resources.
|
|
112
|
+
- [Agents SDK package on PyPI](https://pypi.org/project/openai-agents/): Distribution page with installation command and release history.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# OpenAI Agents SDK Documentation
|
|
2
|
+
|
|
3
|
+
> Official documentation for building production-ready agentic applications with the OpenAI Agents SDK, a Python toolkit that equips LLM-powered assistants with tools, guardrails, handoffs, sessions, tracing, voice, and realtime capabilities.
|
|
4
|
+
|
|
5
|
+
The SDK focuses on a concise set of primitives so you can orchestrate multi-agent workflows without heavy abstractions. These pages explain how to install the library, design agents, coordinate tools, handle results, and extend the platform to new modalities.
|
|
6
|
+
|
|
7
|
+
## Start Here
|
|
8
|
+
- [Overview](https://openai.github.io/openai-agents-python/): Learn the core primitives—agents, handoffs, guardrails, sessions, and tracing—and see a minimal hello-world example.
|
|
9
|
+
- [Quickstart](https://openai.github.io/openai-agents-python/quickstart/): Step-by-step setup for installing the package, configuring API keys, and running your first agent locally.
|
|
10
|
+
- [Example Gallery](https://openai.github.io/openai-agents-python/examples/): Task-oriented examples that demonstrate agent loops, tool usage, guardrails, and integration patterns.
|
|
11
|
+
|
|
12
|
+
## Core Concepts
|
|
13
|
+
- [Agents](https://openai.github.io/openai-agents-python/agents/): Configure agent instructions, tools, guardrails, memory, and streaming behavior.
|
|
14
|
+
- [Running agents](https://openai.github.io/openai-agents-python/running_agents/): Learn synchronous, asynchronous, and batched execution, plus cancellation and error handling.
|
|
15
|
+
- [Sessions](https://openai.github.io/openai-agents-python/sessions/): Manage stateful conversations with automatic history persistence and memory controls.
|
|
16
|
+
- [Results](https://openai.github.io/openai-agents-python/results/): Inspect agent outputs, tool calls, follow-up actions, and metadata returned by the runner.
|
|
17
|
+
- [Streaming](https://openai.github.io/openai-agents-python/streaming/): Stream intermediate tool usage and LLM responses for responsive UIs.
|
|
18
|
+
- [REPL](https://openai.github.io/openai-agents-python/repl/): Use the interactive runner to prototype agents and inspect execution step by step.
|
|
19
|
+
- [Context strategies](https://openai.github.io/openai-agents-python/context/): Control what past messages, attachments, and tool runs are injected into prompts.
|
|
20
|
+
|
|
21
|
+
## Coordination and Safety
|
|
22
|
+
- [Handoffs](https://openai.github.io/openai-agents-python/handoffs/): Delegate tasks between agents with intent classification, argument passing, and return values.
|
|
23
|
+
- [Multi-agent patterns](https://openai.github.io/openai-agents-python/multi_agent/): Architect teams of agents that collaborate, escalate, or specialize by capability.
|
|
24
|
+
- [Guardrails](https://openai.github.io/openai-agents-python/guardrails/): Define validators that run alongside the agent loop to enforce business and safety rules.
|
|
25
|
+
- [Tools](https://openai.github.io/openai-agents-python/tools/): Register Python callables as structured tools, manage schemas, and work with tool contexts.
|
|
26
|
+
- [Model Context Protocol](https://openai.github.io/openai-agents-python/mcp/): Connect MCP servers so agents can request external data or actions through standardized tool APIs.
|
|
27
|
+
|
|
28
|
+
## Operations and Configuration
|
|
29
|
+
- [Usage and pricing](https://openai.github.io/openai-agents-python/usage/): Understand token accounting, usage metrics, and cost estimation.
|
|
30
|
+
- [Configuration](https://openai.github.io/openai-agents-python/config/): Tune model selection, retry logic, rate limits, and runner policies for production workloads.
|
|
31
|
+
- [Visualization](https://openai.github.io/openai-agents-python/visualization/): Embed tracing dashboards and visualize agent runs directly in notebooks and web apps.
|
|
32
|
+
|
|
33
|
+
## Observability and Tracing
|
|
34
|
+
- [Tracing](https://openai.github.io/openai-agents-python/tracing/): Capture spans for every agent step, emit data to OpenAI traces, and integrate third-party processors.
|
|
35
|
+
|
|
36
|
+
## Modalities and Interfaces
|
|
37
|
+
- [Voice quickstart](https://openai.github.io/openai-agents-python/voice/quickstart/): Build speech-enabled agents with streaming transcription and TTS.
|
|
38
|
+
- [Voice pipeline](https://openai.github.io/openai-agents-python/voice/pipeline/): Customize audio ingestion, tool execution, and response rendering.
|
|
39
|
+
- [Realtime quickstart](https://openai.github.io/openai-agents-python/realtime/quickstart/): Stand up low-latency realtime agents with WebRTC and websocket transports.
|
|
40
|
+
- [Realtime guide](https://openai.github.io/openai-agents-python/realtime/guide/): Deep dive into session lifecycle, event formats, and concurrency patterns.
|
|
41
|
+
|
|
42
|
+
## API Reference Highlights
|
|
43
|
+
- [Agents API index](https://openai.github.io/openai-agents-python/ref/index/): Entry point for class and function documentation throughout the SDK.
|
|
44
|
+
- [Agent lifecycle](https://openai.github.io/openai-agents-python/ref/lifecycle/): Understand the runner, evaluation phases, and callbacks triggered during execution.
|
|
45
|
+
- [Runs and sessions](https://openai.github.io/openai-agents-python/ref/run/): API for launching runs, streaming updates, and handling cancellations.
|
|
46
|
+
- [Results objects](https://openai.github.io/openai-agents-python/ref/result/): Data structures returned from agent runs, including final output and tool calls.
|
|
47
|
+
- [Tool interfaces](https://openai.github.io/openai-agents-python/ref/tool/): Create tools, parse arguments, and manage tool execution contexts.
|
|
48
|
+
- [Tracing APIs](https://openai.github.io/openai-agents-python/ref/tracing/index/): Programmatic interfaces for creating traces, spans, and integrating custom processors.
|
|
49
|
+
- [Realtime APIs](https://openai.github.io/openai-agents-python/ref/realtime/agent/): Classes for realtime agents, runners, sessions, and event payloads.
|
|
50
|
+
- [Voice APIs](https://openai.github.io/openai-agents-python/ref/voice/pipeline/): Configure voice pipelines, inputs, events, and model adapters.
|
|
51
|
+
- [Extensions](https://openai.github.io/openai-agents-python/ref/extensions/handoff_filters/): Extend the SDK with custom handoff filters, prompts, LiteLLM integration, and SQLAlchemy session memory.
|
|
52
|
+
|
|
53
|
+
## Models and Providers
|
|
54
|
+
- [Model catalog](https://openai.github.io/openai-agents-python/models/): Overview of supported model families and configuration guidance.
|
|
55
|
+
- [LiteLLM integration](https://openai.github.io/openai-agents-python/models/litellm/): Configure LiteLLM as a provider to fan out across multiple model backends.
|
|
56
|
+
|
|
57
|
+
## Optional
|
|
58
|
+
- [Release notes](https://openai.github.io/openai-agents-python/release/): Track SDK changes, migration notes, and deprecations.
|
|
59
|
+
- [Japanese documentation](https://openai.github.io/openai-agents-python/ja/): Localized overview and quickstart for Japanese-speaking developers.
|
|
60
|
+
- [Repository on GitHub](https://github.com/openai/openai-agents-python): Source code, issues, and contribution guidelines for the SDK.
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
import random
|
|
3
|
+
from dataclasses import dataclass
|
|
3
4
|
from typing import Literal
|
|
4
5
|
|
|
5
6
|
from agents import Agent, RunContextWrapper, Runner
|
|
6
7
|
|
|
7
8
|
|
|
9
|
+
@dataclass
|
|
8
10
|
class CustomContext:
|
|
9
|
-
|
|
10
|
-
self.style = style
|
|
11
|
+
style: Literal["haiku", "pirate", "robot"]
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
def custom_instructions(
|
|
@@ -27,11 +28,9 @@ agent = Agent(
|
|
|
27
28
|
instructions=custom_instructions,
|
|
28
29
|
)
|
|
29
30
|
|
|
30
|
-
|
|
31
31
|
async def main():
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
print(f"Using style: {choice}\n")
|
|
32
|
+
context = CustomContext(style=random.choice(["haiku", "pirate", "robot"]))
|
|
33
|
+
print(f"Using style: {context.style}\n")
|
|
35
34
|
|
|
36
35
|
user_message = "Tell me a joke."
|
|
37
36
|
print(f"User: {user_message}")
|
|
@@ -43,6 +42,7 @@ async def main():
|
|
|
43
42
|
if __name__ == "__main__":
|
|
44
43
|
asyncio.run(main())
|
|
45
44
|
|
|
45
|
+
|
|
46
46
|
"""
|
|
47
47
|
$ python examples/basic/dynamic_system_prompt.py
|
|
48
48
|
|
|
@@ -46,7 +46,7 @@ class ExampleHooks(RunHooks):
|
|
|
46
46
|
async def on_tool_start(self, context: RunContextWrapper, agent: Agent, tool: Tool) -> None:
|
|
47
47
|
self.event_counter += 1
|
|
48
48
|
print(
|
|
49
|
-
f"### {self.event_counter}: Tool {tool.name} started. Usage: {self._usage_to_str(context.usage)}"
|
|
49
|
+
f"### {self.event_counter}: Tool {tool.name} started. name={context.tool_name}, call_id={context.tool_call_id}, args={context.tool_arguments}. Usage: {self._usage_to_str(context.usage)}" # type: ignore[attr-defined]
|
|
50
50
|
)
|
|
51
51
|
|
|
52
52
|
async def on_tool_end(
|
|
@@ -54,7 +54,7 @@ class ExampleHooks(RunHooks):
|
|
|
54
54
|
) -> None:
|
|
55
55
|
self.event_counter += 1
|
|
56
56
|
print(
|
|
57
|
-
f"### {self.event_counter}: Tool {tool.name}
|
|
57
|
+
f"### {self.event_counter}: Tool {tool.name} finished. result={result}, name={context.tool_name}, call_id={context.tool_call_id}, args={context.tool_arguments}. Usage: {self._usage_to_str(context.usage)}" # type: ignore[attr-defined]
|
|
58
58
|
)
|
|
59
59
|
|
|
60
60
|
async def on_handoff(
|
|
@@ -128,19 +128,19 @@ Enter a max number: 250
|
|
|
128
128
|
### 1: Agent Start Agent started. Usage: 0 requests, 0 input tokens, 0 output tokens, 0 total tokens
|
|
129
129
|
### 2: LLM started. Usage: 0 requests, 0 input tokens, 0 output tokens, 0 total tokens
|
|
130
130
|
### 3: LLM ended. Usage: 1 requests, 143 input tokens, 15 output tokens, 158 total tokens
|
|
131
|
-
### 4: Tool random_number started. Usage: 1 requests, 143 input tokens, 15 output tokens, 158 total tokens
|
|
132
|
-
### 5: Tool random_number
|
|
131
|
+
### 4: Tool random_number started. name=random_number, call_id=call_IujmDZYiM800H0hy7v17VTS0, args={"max":250}. Usage: 1 requests, 143 input tokens, 15 output tokens, 158 total tokens
|
|
132
|
+
### 5: Tool random_number finished. result=107, name=random_number, call_id=call_IujmDZYiM800H0hy7v17VTS0, args={"max":250}. Usage: 1 requests, 143 input tokens, 15 output tokens, 158 total tokens
|
|
133
133
|
### 6: LLM started. Usage: 1 requests, 143 input tokens, 15 output tokens, 158 total tokens
|
|
134
134
|
### 7: LLM ended. Usage: 2 requests, 310 input tokens, 29 output tokens, 339 total tokens
|
|
135
135
|
### 8: Handoff from Start Agent to Multiply Agent. Usage: 2 requests, 310 input tokens, 29 output tokens, 339 total tokens
|
|
136
136
|
### 9: Agent Multiply Agent started. Usage: 2 requests, 310 input tokens, 29 output tokens, 339 total tokens
|
|
137
137
|
### 10: LLM started. Usage: 2 requests, 310 input tokens, 29 output tokens, 339 total tokens
|
|
138
138
|
### 11: LLM ended. Usage: 3 requests, 472 input tokens, 45 output tokens, 517 total tokens
|
|
139
|
-
### 12: Tool multiply_by_two started. Usage: 3 requests, 472 input tokens, 45 output tokens, 517 total tokens
|
|
140
|
-
### 13: Tool multiply_by_two
|
|
139
|
+
### 12: Tool multiply_by_two started. name=multiply_by_two, call_id=call_KhHvTfsgaosZsfi741QvzgYw, args={"x":107}. Usage: 3 requests, 472 input tokens, 45 output tokens, 517 total tokens
|
|
140
|
+
### 13: Tool multiply_by_two finished. result=214, name=multiply_by_two, call_id=call_KhHvTfsgaosZsfi741QvzgYw, args={"x":107}. Usage: 3 requests, 472 input tokens, 45 output tokens, 517 total tokens
|
|
141
141
|
### 14: LLM started. Usage: 3 requests, 472 input tokens, 45 output tokens, 517 total tokens
|
|
142
142
|
### 15: LLM ended. Usage: 4 requests, 660 input tokens, 56 output tokens, 716 total tokens
|
|
143
|
-
### 16: Agent Multiply Agent ended with output number=
|
|
143
|
+
### 16: Agent Multiply Agent ended with output number=214. Usage: 4 requests, 660 input tokens, 56 output tokens, 716 total tokens
|
|
144
144
|
Done!
|
|
145
145
|
|
|
146
146
|
"""
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import asyncio
|
|
2
|
-
from typing import Any
|
|
2
|
+
from typing import Annotated, Any, Optional
|
|
3
3
|
|
|
4
4
|
from openai.types.responses import ResponseFunctionCallArgumentsDeltaEvent
|
|
5
5
|
|
|
@@ -7,14 +7,18 @@ from agents import Agent, Runner, function_tool
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
@function_tool
|
|
10
|
-
def write_file(filename: str, content: str) -> str:
|
|
10
|
+
def write_file(filename: Annotated[str, "Name of the file"], content: str) -> str:
|
|
11
11
|
"""Write content to a file."""
|
|
12
12
|
return f"File {filename} written successfully"
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
@function_tool
|
|
16
|
-
def create_config(
|
|
17
|
-
|
|
16
|
+
def create_config(
|
|
17
|
+
project_name: Annotated[str, "Project name"],
|
|
18
|
+
version: Annotated[str, "Project version"],
|
|
19
|
+
dependencies: Annotated[Optional[list[str]], "Dependencies (list of packages)"],
|
|
20
|
+
) -> str:
|
|
21
|
+
"""Generate a project configuration file."""
|
|
18
22
|
return f"Config for {project_name} v{version} created"
|
|
19
23
|
|
|
20
24
|
|
|
@@ -39,7 +39,7 @@ from ...items import ModelResponse, TResponseInputItem, TResponseStreamEvent
|
|
|
39
39
|
from ...logger import logger
|
|
40
40
|
from ...model_settings import ModelSettings
|
|
41
41
|
from ...models.chatcmpl_converter import Converter
|
|
42
|
-
from ...models.chatcmpl_helpers import HEADERS,
|
|
42
|
+
from ...models.chatcmpl_helpers import HEADERS, HEADERS_OVERRIDE
|
|
43
43
|
from ...models.chatcmpl_stream_handler import ChatCmplStreamHandler
|
|
44
44
|
from ...models.fake_id import FAKE_RESPONSES_ID
|
|
45
45
|
from ...models.interface import Model, ModelTracing
|
|
@@ -385,11 +385,7 @@ class LitellmModel(Model):
|
|
|
385
385
|
return value
|
|
386
386
|
|
|
387
387
|
def _merge_headers(self, model_settings: ModelSettings):
|
|
388
|
-
|
|
389
|
-
ua_ctx = USER_AGENT_OVERRIDE.get()
|
|
390
|
-
if ua_ctx is not None:
|
|
391
|
-
merged["User-Agent"] = ua_ctx
|
|
392
|
-
return merged
|
|
388
|
+
return {**HEADERS, **(model_settings.extra_headers or {}), **(HEADERS_OVERRIDE.get() or {})}
|
|
393
389
|
|
|
394
390
|
|
|
395
391
|
class LitellmConverter:
|
|
@@ -107,7 +107,7 @@ class Converter:
|
|
|
107
107
|
if hasattr(message, "thinking_blocks") and message.thinking_blocks:
|
|
108
108
|
# Store thinking text in content and signature in encrypted_content
|
|
109
109
|
reasoning_item.content = []
|
|
110
|
-
|
|
110
|
+
signatures: list[str] = []
|
|
111
111
|
for block in message.thinking_blocks:
|
|
112
112
|
if isinstance(block, dict):
|
|
113
113
|
thinking_text = block.get("thinking", "")
|
|
@@ -116,15 +116,12 @@ class Converter:
|
|
|
116
116
|
Content(text=thinking_text, type="reasoning_text")
|
|
117
117
|
)
|
|
118
118
|
# Store the signature if present
|
|
119
|
-
if block.get("signature"):
|
|
120
|
-
|
|
119
|
+
if signature := block.get("signature"):
|
|
120
|
+
signatures.append(signature)
|
|
121
121
|
|
|
122
|
-
# Store
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
# Tested with: claude-sonnet-4-20250514
|
|
126
|
-
if signature:
|
|
127
|
-
reasoning_item.encrypted_content = signature
|
|
122
|
+
# Store the signatures in encrypted_content with newline delimiter
|
|
123
|
+
if signatures:
|
|
124
|
+
reasoning_item.encrypted_content = "\n".join(signatures)
|
|
128
125
|
|
|
129
126
|
items.append(reasoning_item)
|
|
130
127
|
|
|
@@ -483,7 +480,20 @@ class Converter:
|
|
|
483
480
|
# If we have pending thinking blocks, use them as the content
|
|
484
481
|
# This is required for Anthropic API tool calls with interleaved thinking
|
|
485
482
|
if pending_thinking_blocks:
|
|
486
|
-
|
|
483
|
+
# If there is a text content, save it to append after thinking blocks
|
|
484
|
+
# content type is Union[str, Iterable[ContentArrayOfContentPart], None]
|
|
485
|
+
if "content" in asst and isinstance(asst["content"], str):
|
|
486
|
+
text_content = ChatCompletionContentPartTextParam(
|
|
487
|
+
text=asst["content"], type="text"
|
|
488
|
+
)
|
|
489
|
+
asst["content"] = [text_content]
|
|
490
|
+
|
|
491
|
+
if "content" not in asst or asst["content"] is None:
|
|
492
|
+
asst["content"] = []
|
|
493
|
+
|
|
494
|
+
# Thinking blocks MUST come before any other content
|
|
495
|
+
# We ignore type errors because pending_thinking_blocks is not openai standard
|
|
496
|
+
asst["content"] = pending_thinking_blocks + asst["content"] # type: ignore
|
|
487
497
|
pending_thinking_blocks = None # Clear after using
|
|
488
498
|
|
|
489
499
|
tool_calls = list(asst.get("tool_calls", []))
|
|
@@ -518,7 +528,8 @@ class Converter:
|
|
|
518
528
|
elif reasoning_item := cls.maybe_reasoning_message(item):
|
|
519
529
|
# Reconstruct thinking blocks from content (text) and encrypted_content (signature)
|
|
520
530
|
content_items = reasoning_item.get("content", [])
|
|
521
|
-
|
|
531
|
+
encrypted_content = reasoning_item.get("encrypted_content")
|
|
532
|
+
signatures = encrypted_content.split("\n") if encrypted_content else []
|
|
522
533
|
|
|
523
534
|
if content_items and preserve_thinking_blocks:
|
|
524
535
|
# Reconstruct thinking blocks from content and signature
|
|
@@ -532,9 +543,9 @@ class Converter:
|
|
|
532
543
|
"type": "thinking",
|
|
533
544
|
"thinking": content_item.get("text", ""),
|
|
534
545
|
}
|
|
535
|
-
# Add
|
|
536
|
-
if
|
|
537
|
-
thinking_block["signature"] =
|
|
546
|
+
# Add signatures if available
|
|
547
|
+
if signatures:
|
|
548
|
+
thinking_block["signature"] = signatures.pop(0)
|
|
538
549
|
pending_thinking_blocks.append(thinking_block)
|
|
539
550
|
|
|
540
551
|
# 8) If we haven't recognized it => fail or ignore
|
|
@@ -10,8 +10,8 @@ from ..version import __version__
|
|
|
10
10
|
_USER_AGENT = f"Agents/Python {__version__}"
|
|
11
11
|
HEADERS = {"User-Agent": _USER_AGENT}
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
"
|
|
13
|
+
HEADERS_OVERRIDE: ContextVar[dict[str, str] | None] = ContextVar(
|
|
14
|
+
"openai_chatcompletions_headers_override", default=None
|
|
15
15
|
)
|
|
16
16
|
|
|
17
17
|
|
|
@@ -25,7 +25,7 @@ from ..tracing.spans import Span
|
|
|
25
25
|
from ..usage import Usage
|
|
26
26
|
from ..util._json import _to_dump_compatible
|
|
27
27
|
from .chatcmpl_converter import Converter
|
|
28
|
-
from .chatcmpl_helpers import HEADERS,
|
|
28
|
+
from .chatcmpl_helpers import HEADERS, HEADERS_OVERRIDE, ChatCmplHelpers
|
|
29
29
|
from .chatcmpl_stream_handler import ChatCmplStreamHandler
|
|
30
30
|
from .fake_id import FAKE_RESPONSES_ID
|
|
31
31
|
from .interface import Model, ModelTracing
|
|
@@ -351,8 +351,8 @@ class OpenAIChatCompletionsModel(Model):
|
|
|
351
351
|
return self._client
|
|
352
352
|
|
|
353
353
|
def _merge_headers(self, model_settings: ModelSettings):
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
354
|
+
return {
|
|
355
|
+
**HEADERS,
|
|
356
|
+
**(model_settings.extra_headers or {}),
|
|
357
|
+
**(HEADERS_OVERRIDE.get() or {}),
|
|
358
|
+
}
|
|
@@ -50,9 +50,9 @@ if TYPE_CHECKING:
|
|
|
50
50
|
_USER_AGENT = f"Agents/Python {__version__}"
|
|
51
51
|
_HEADERS = {"User-Agent": _USER_AGENT}
|
|
52
52
|
|
|
53
|
-
# Override
|
|
54
|
-
|
|
55
|
-
"
|
|
53
|
+
# Override headers used by the Responses API.
|
|
54
|
+
_HEADERS_OVERRIDE: ContextVar[dict[str, str] | None] = ContextVar(
|
|
55
|
+
"openai_responses_headers_override", default=None
|
|
56
56
|
)
|
|
57
57
|
|
|
58
58
|
|
|
@@ -334,11 +334,11 @@ class OpenAIResponsesModel(Model):
|
|
|
334
334
|
return self._client
|
|
335
335
|
|
|
336
336
|
def _merge_headers(self, model_settings: ModelSettings):
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
337
|
+
return {
|
|
338
|
+
**_HEADERS,
|
|
339
|
+
**(model_settings.extra_headers or {}),
|
|
340
|
+
**(_HEADERS_OVERRIDE.get() or {}),
|
|
341
|
+
}
|
|
342
342
|
|
|
343
343
|
|
|
344
344
|
@dataclass
|
|
@@ -408,6 +408,7 @@ class RealtimeSession(RealtimeModelListener):
|
|
|
408
408
|
usage=self._context_wrapper.usage,
|
|
409
409
|
tool_name=event.name,
|
|
410
410
|
tool_call_id=event.call_id,
|
|
411
|
+
tool_arguments=event.arguments,
|
|
411
412
|
)
|
|
412
413
|
result = await func_tool.on_invoke_tool(tool_context, event.arguments)
|
|
413
414
|
|
|
@@ -432,6 +433,7 @@ class RealtimeSession(RealtimeModelListener):
|
|
|
432
433
|
usage=self._context_wrapper.usage,
|
|
433
434
|
tool_name=event.name,
|
|
434
435
|
tool_call_id=event.call_id,
|
|
436
|
+
tool_arguments=event.arguments,
|
|
435
437
|
)
|
|
436
438
|
|
|
437
439
|
# Execute the handoff to get the new agent
|
|
@@ -53,7 +53,7 @@ from .items import (
|
|
|
53
53
|
ToolCallItemTypes,
|
|
54
54
|
TResponseInputItem,
|
|
55
55
|
)
|
|
56
|
-
from .lifecycle import RunHooks
|
|
56
|
+
from .lifecycle import AgentHooksBase, RunHooks, RunHooksBase
|
|
57
57
|
from .logger import logger
|
|
58
58
|
from .memory import Session, SessionInputCallback
|
|
59
59
|
from .model_settings import ModelSettings
|
|
@@ -461,13 +461,11 @@ class AgentRunner:
|
|
|
461
461
|
) -> RunResult:
|
|
462
462
|
context = kwargs.get("context")
|
|
463
463
|
max_turns = kwargs.get("max_turns", DEFAULT_MAX_TURNS)
|
|
464
|
-
hooks = kwargs.get("hooks")
|
|
464
|
+
hooks = cast(RunHooks[TContext], self._validate_run_hooks(kwargs.get("hooks")))
|
|
465
465
|
run_config = kwargs.get("run_config")
|
|
466
466
|
previous_response_id = kwargs.get("previous_response_id")
|
|
467
467
|
conversation_id = kwargs.get("conversation_id")
|
|
468
468
|
session = kwargs.get("session")
|
|
469
|
-
if hooks is None:
|
|
470
|
-
hooks = RunHooks[Any]()
|
|
471
469
|
if run_config is None:
|
|
472
470
|
run_config = RunConfig()
|
|
473
471
|
|
|
@@ -668,14 +666,12 @@ class AgentRunner:
|
|
|
668
666
|
) -> RunResultStreaming:
|
|
669
667
|
context = kwargs.get("context")
|
|
670
668
|
max_turns = kwargs.get("max_turns", DEFAULT_MAX_TURNS)
|
|
671
|
-
hooks = kwargs.get("hooks")
|
|
669
|
+
hooks = cast(RunHooks[TContext], self._validate_run_hooks(kwargs.get("hooks")))
|
|
672
670
|
run_config = kwargs.get("run_config")
|
|
673
671
|
previous_response_id = kwargs.get("previous_response_id")
|
|
674
672
|
conversation_id = kwargs.get("conversation_id")
|
|
675
673
|
session = kwargs.get("session")
|
|
676
674
|
|
|
677
|
-
if hooks is None:
|
|
678
|
-
hooks = RunHooks[Any]()
|
|
679
675
|
if run_config is None:
|
|
680
676
|
run_config = RunConfig()
|
|
681
677
|
|
|
@@ -732,6 +728,23 @@ class AgentRunner:
|
|
|
732
728
|
)
|
|
733
729
|
return streamed_result
|
|
734
730
|
|
|
731
|
+
@staticmethod
|
|
732
|
+
def _validate_run_hooks(
|
|
733
|
+
hooks: RunHooksBase[Any, Agent[Any]] | AgentHooksBase[Any, Agent[Any]] | Any | None,
|
|
734
|
+
) -> RunHooks[Any]:
|
|
735
|
+
if hooks is None:
|
|
736
|
+
return RunHooks[Any]()
|
|
737
|
+
input_hook_type = type(hooks).__name__
|
|
738
|
+
if isinstance(hooks, AgentHooksBase):
|
|
739
|
+
raise TypeError(
|
|
740
|
+
"Run hooks must be instances of RunHooks. "
|
|
741
|
+
f"Received agent-scoped hooks ({input_hook_type}). "
|
|
742
|
+
"Attach AgentHooks to an Agent via Agent(..., hooks=...)."
|
|
743
|
+
)
|
|
744
|
+
if not isinstance(hooks, RunHooksBase):
|
|
745
|
+
raise TypeError(f"Run hooks must be instances of RunHooks. Received {input_hook_type}.")
|
|
746
|
+
return hooks
|
|
747
|
+
|
|
735
748
|
@classmethod
|
|
736
749
|
async def _maybe_filter_model_input(
|
|
737
750
|
cls,
|
|
@@ -14,6 +14,10 @@ def _assert_must_pass_tool_name() -> str:
|
|
|
14
14
|
raise ValueError("tool_name must be passed to ToolContext")
|
|
15
15
|
|
|
16
16
|
|
|
17
|
+
def _assert_must_pass_tool_arguments() -> str:
|
|
18
|
+
raise ValueError("tool_arguments must be passed to ToolContext")
|
|
19
|
+
|
|
20
|
+
|
|
17
21
|
@dataclass
|
|
18
22
|
class ToolContext(RunContextWrapper[TContext]):
|
|
19
23
|
"""The context of a tool call."""
|
|
@@ -24,6 +28,9 @@ class ToolContext(RunContextWrapper[TContext]):
|
|
|
24
28
|
tool_call_id: str = field(default_factory=_assert_must_pass_tool_call_id)
|
|
25
29
|
"""The ID of the tool call."""
|
|
26
30
|
|
|
31
|
+
tool_arguments: str = field(default_factory=_assert_must_pass_tool_arguments)
|
|
32
|
+
"""The raw arguments string of the tool call."""
|
|
33
|
+
|
|
27
34
|
@classmethod
|
|
28
35
|
def from_agent_context(
|
|
29
36
|
cls,
|
|
@@ -39,4 +46,10 @@ class ToolContext(RunContextWrapper[TContext]):
|
|
|
39
46
|
f.name: getattr(context, f.name) for f in fields(RunContextWrapper) if f.init
|
|
40
47
|
}
|
|
41
48
|
tool_name = tool_call.name if tool_call is not None else _assert_must_pass_tool_name()
|
|
42
|
-
|
|
49
|
+
tool_args = (
|
|
50
|
+
tool_call.arguments if tool_call is not None else _assert_must_pass_tool_arguments()
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
return cls(
|
|
54
|
+
tool_name=tool_name, tool_call_id=tool_call_id, tool_arguments=tool_args, **base_values
|
|
55
|
+
)
|
|
@@ -5,7 +5,7 @@ from typing import Any
|
|
|
5
5
|
import pytest
|
|
6
6
|
|
|
7
7
|
from agents import ModelSettings, ModelTracing, __version__
|
|
8
|
-
from agents.models.chatcmpl_helpers import
|
|
8
|
+
from agents.models.chatcmpl_helpers import HEADERS_OVERRIDE
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
@pytest.mark.allow_call_model_methods
|
|
@@ -65,7 +65,7 @@ async def test_user_agent_header_litellm(override_ua: str | None, monkeypatch):
|
|
|
65
65
|
model = LitellmModel(model="gpt-4")
|
|
66
66
|
|
|
67
67
|
if override_ua is not None:
|
|
68
|
-
token =
|
|
68
|
+
token = HEADERS_OVERRIDE.set({"User-Agent": override_ua})
|
|
69
69
|
else:
|
|
70
70
|
token = None
|
|
71
71
|
try:
|
|
@@ -83,7 +83,7 @@ async def test_user_agent_header_litellm(override_ua: str | None, monkeypatch):
|
|
|
83
83
|
)
|
|
84
84
|
finally:
|
|
85
85
|
if token is not None:
|
|
86
|
-
|
|
86
|
+
HEADERS_OVERRIDE.reset(token)
|
|
87
87
|
|
|
88
88
|
assert "extra_headers" in called_kwargs
|
|
89
89
|
assert called_kwargs["extra_headers"]["User-Agent"] == expected_ua
|