openai-agents 0.2.2__tar.gz → 0.2.4__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.4/.github/codex/home/config.toml +1 -0
- openai_agents-0.2.4/.github/codex/labels/codex-attempt.md +9 -0
- openai_agents-0.2.4/.github/codex/labels/codex-review.md +7 -0
- openai_agents-0.2.4/.github/codex/labels/codex-triage.md +7 -0
- openai_agents-0.2.4/.github/workflows/codex.yml +60 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/Makefile +1 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/PKG-INFO +116 -112
- {openai_agents-0.2.2 → openai_agents-0.2.4}/README.md +114 -110
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/agents.md +98 -1
- openai_agents-0.2.4/docs/ja/agents.md +248 -0
- openai_agents-0.2.4/docs/ja/config.md +98 -0
- openai_agents-0.2.4/docs/ja/context.md +82 -0
- openai_agents-0.2.4/docs/ja/examples.md +47 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ja/guardrails.md +17 -17
- openai_agents-0.2.4/docs/ja/handoffs.md +117 -0
- openai_agents-0.2.4/docs/ja/index.md +58 -0
- openai_agents-0.2.4/docs/ja/mcp.md +191 -0
- openai_agents-0.2.4/docs/ja/models/index.md +159 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ja/models/litellm.md +10 -10
- openai_agents-0.2.4/docs/ja/multi_agent.md +41 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ja/quickstart.md +30 -20
- openai_agents-0.2.4/docs/ja/realtime/guide.md +156 -0
- openai_agents-0.2.4/docs/ja/realtime/quickstart.md +179 -0
- openai_agents-0.2.4/docs/ja/release.md +32 -0
- openai_agents-0.2.4/docs/ja/repl.md +21 -0
- openai_agents-0.2.4/docs/ja/results.md +56 -0
- openai_agents-0.2.4/docs/ja/running_agents.md +138 -0
- openai_agents-0.2.4/docs/ja/sessions.md +315 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ja/streaming.md +7 -7
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ja/tools.md +62 -35
- openai_agents-0.2.4/docs/ja/tracing.md +124 -0
- openai_agents-0.2.4/docs/ja/visualization.md +87 -0
- openai_agents-0.2.4/docs/ja/voice/pipeline.md +86 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ja/voice/quickstart.md +10 -10
- openai_agents-0.2.4/docs/ja/voice/tracing.md +18 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/quickstart.md +15 -5
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/realtime/guide.md +11 -0
- openai_agents-0.2.4/docs/ref/computer.md +3 -0
- openai_agents-0.2.4/docs/ref/extensions/models/litellm_model.md +3 -0
- openai_agents-0.2.4/docs/ref/extensions/models/litellm_provider.md +3 -0
- openai_agents-0.2.4/docs/ref/extensions/visualization.md +3 -0
- openai_agents-0.2.4/docs/ref/logger.md +3 -0
- openai_agents-0.2.4/docs/ref/models/chatcmpl_converter.md +3 -0
- openai_agents-0.2.4/docs/ref/models/chatcmpl_helpers.md +3 -0
- openai_agents-0.2.4/docs/ref/models/chatcmpl_stream_handler.md +3 -0
- openai_agents-0.2.4/docs/ref/models/fake_id.md +3 -0
- openai_agents-0.2.4/docs/ref/models/multi_provider.md +3 -0
- openai_agents-0.2.4/docs/ref/models/openai_provider.md +3 -0
- openai_agents-0.2.4/docs/ref/prompts.md +3 -0
- openai_agents-0.2.4/docs/ref/realtime/model.md +3 -0
- openai_agents-0.2.4/docs/ref/strict_schema.md +3 -0
- openai_agents-0.2.4/docs/ref/tool_context.md +3 -0
- openai_agents-0.2.4/docs/ref/tracing/logger.md +3 -0
- openai_agents-0.2.4/docs/ref/tracing/provider.md +3 -0
- openai_agents-0.2.4/docs/ref/version.md +3 -0
- openai_agents-0.2.4/docs/ref/voice/imports.md +3 -0
- openai_agents-0.2.4/docs/ref/voice/models/openai_model_provider.md +3 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/running_agents.md +3 -2
- openai_agents-0.2.4/docs/scripts/generate_ref_files.py +78 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/tracing.md +2 -1
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/agent_patterns/llm_as_a_judge.py +4 -4
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/financial_research_agent/agents/writer_agent.py +1 -1
- openai_agents-0.2.4/examples/realtime/twilio/README.md +86 -0
- openai_agents-0.2.4/examples/realtime/twilio/requirements.txt +5 -0
- openai_agents-0.2.4/examples/realtime/twilio/server.py +80 -0
- openai_agents-0.2.4/examples/realtime/twilio/twilio_handler.py +264 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/reasoning_content/main.py +2 -1
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/tools/image_generator.py +1 -1
- {openai_agents-0.2.2 → openai_agents-0.2.4}/mkdocs.yml +2 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/pyproject.toml +2 -2
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/agent.py +1 -28
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/agent_output.py +1 -1
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/extensions/models/litellm_model.py +14 -1
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/function_schema.py +3 -3
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/guardrail.py +9 -4
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/items.py +2 -1
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/model_settings.py +2 -1
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/models/chatcmpl_converter.py +12 -1
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/models/chatcmpl_stream_handler.py +17 -14
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/realtime/__init__.py +4 -0
- openai_agents-0.2.4/src/agents/realtime/_default_tracker.py +47 -0
- openai_agents-0.2.4/src/agents/realtime/_util.py +9 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/realtime/events.py +18 -0
- openai_agents-0.2.4/src/agents/realtime/model.py +163 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/realtime/model_events.py +28 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/realtime/openai_realtime.py +97 -29
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/realtime/session.py +37 -10
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tool.py +5 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tracing/create.py +1 -2
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tracing/processors.py +4 -5
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tracing/traces.py +1 -1
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/usage.py +2 -1
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/realtime/test_agent.py +2 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/realtime/test_conversion_helpers.py +2 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/realtime/test_openai_realtime.py +64 -45
- openai_agents-0.2.4/tests/realtime/test_playback_tracker.py +112 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/realtime/test_session.py +181 -13
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/realtime/test_tracing.py +3 -1
- openai_agents-0.2.4/tests/voice/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/voice/test_workflow.py +1 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/uv.lock +5 -5
- openai_agents-0.2.2/docs/ja/agents.md +0 -151
- openai_agents-0.2.2/docs/ja/config.md +0 -98
- openai_agents-0.2.2/docs/ja/context.md +0 -81
- openai_agents-0.2.2/docs/ja/examples.md +0 -45
- openai_agents-0.2.2/docs/ja/handoffs.md +0 -117
- openai_agents-0.2.2/docs/ja/index.md +0 -56
- openai_agents-0.2.2/docs/ja/mcp.md +0 -72
- openai_agents-0.2.2/docs/ja/models/index.md +0 -155
- openai_agents-0.2.2/docs/ja/multi_agent.md +0 -41
- openai_agents-0.2.2/docs/ja/repl.md +0 -22
- openai_agents-0.2.2/docs/ja/results.md +0 -56
- openai_agents-0.2.2/docs/ja/running_agents.md +0 -99
- openai_agents-0.2.2/docs/ja/tracing.md +0 -123
- openai_agents-0.2.2/docs/ja/visualization.md +0 -87
- openai_agents-0.2.2/docs/ja/voice/pipeline.md +0 -81
- openai_agents-0.2.2/docs/ja/voice/tracing.md +0 -18
- openai_agents-0.2.2/src/agents/realtime/model.py +0 -69
- {openai_agents-0.2.2 → openai_agents-0.2.4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/.github/ISSUE_TEMPLATE/model_provider.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/.github/ISSUE_TEMPLATE/question.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/.github/workflows/docs.yml +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/.github/workflows/issues.yml +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/.github/workflows/publish.yml +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/.github/workflows/tests.yml +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/.github/workflows/update-docs.yml +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/.gitignore +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/.prettierrc +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/.vscode/launch.json +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/.vscode/settings.json +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/AGENTS.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/CLAUDE.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/LICENSE +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/assets/images/favicon-platform.svg +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/assets/images/graph.png +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/assets/images/mcp-tracing.jpg +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/assets/images/orchestration.png +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/assets/logo.svg +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/config.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/context.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/examples.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/guardrails.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/handoffs.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/index.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/mcp.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/models/index.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/models/litellm.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/multi_agent.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/realtime/quickstart.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/agent.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/agent_output.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/exceptions.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/extensions/handoff_filters.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/extensions/handoff_prompt.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/extensions/litellm.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/function_schema.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/guardrail.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/handoffs.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/index.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/items.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/lifecycle.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/mcp/server.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/mcp/util.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/memory.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/model_settings.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/models/interface.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/models/openai_chatcompletions.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/models/openai_responses.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/realtime/agent.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/realtime/config.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/realtime/events.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/realtime/runner.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/realtime/session.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/repl.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/result.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/run.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/run_context.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/stream_events.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/tool.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/tracing/create.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/tracing/index.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/tracing/processor_interface.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/tracing/processors.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/tracing/scope.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/tracing/setup.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/tracing/span_data.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/tracing/spans.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/tracing/traces.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/tracing/util.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/usage.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/voice/events.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/voice/exceptions.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/voice/input.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/voice/model.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/voice/models/openai_provider.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/voice/models/openai_stt.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/voice/models/openai_tts.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/voice/pipeline.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/voice/pipeline_config.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/voice/result.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/voice/utils.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/ref/voice/workflow.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/release.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/repl.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/results.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/scripts/translate_docs.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/sessions.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/streaming.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/stylesheets/extra.css +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/tools.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/visualization.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/voice/pipeline.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/voice/quickstart.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/docs/voice/tracing.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/agent_patterns/README.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/agent_patterns/agents_as_tools.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/agent_patterns/deterministic.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/agent_patterns/forcing_tool_use.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/agent_patterns/input_guardrails.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/agent_patterns/output_guardrails.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/agent_patterns/parallelization.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/agent_patterns/routing.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/agent_patterns/streaming_guardrails.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/agent_lifecycle_example.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/dynamic_system_prompt.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/hello_world.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/hello_world_jupyter.ipynb +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/lifecycle_example.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/local_image.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/media/image_bison.jpg +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/non_strict_output_type.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/previous_response_id.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/prompt_template.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/remote_image.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/session_example.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/stream_items.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/stream_text.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/basic/tools.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/customer_service/main.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/financial_research_agent/README.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/financial_research_agent/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/financial_research_agent/agents/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/financial_research_agent/agents/financials_agent.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/financial_research_agent/agents/planner_agent.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/financial_research_agent/agents/risk_agent.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/financial_research_agent/agents/search_agent.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/financial_research_agent/agents/verifier_agent.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/financial_research_agent/main.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/financial_research_agent/manager.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/financial_research_agent/printer.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/handoffs/message_filter.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/handoffs/message_filter_streaming.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/hosted_mcp/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/hosted_mcp/approvals.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/hosted_mcp/simple.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/filesystem_example/README.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/filesystem_example/main.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/filesystem_example/sample_files/favorite_books.txt +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/filesystem_example/sample_files/favorite_cities.txt +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/filesystem_example/sample_files/favorite_songs.txt +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/git_example/README.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/git_example/main.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/prompt_server/README.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/prompt_server/main.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/prompt_server/server.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/sse_example/README.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/sse_example/main.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/sse_example/server.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/streamablehttp_example/README.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/streamablehttp_example/main.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/mcp/streamablehttp_example/server.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/model_providers/README.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/model_providers/custom_example_agent.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/model_providers/custom_example_global.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/model_providers/custom_example_provider.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/model_providers/litellm_auto.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/model_providers/litellm_provider.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/realtime/app/README.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/realtime/app/server.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/realtime/app/static/app.js +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/realtime/app/static/index.html +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/realtime/cli/demo.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/realtime/cli/ui.py +0 -0
- {openai_agents-0.2.2/examples/research_bot/agents → openai_agents-0.2.4/examples/realtime/twilio}/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/reasoning_content/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/reasoning_content/runner_example.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/research_bot/README.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/research_bot/__init__.py +0 -0
- {openai_agents-0.2.2/examples/voice → openai_agents-0.2.4/examples/research_bot/agents}/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/research_bot/agents/planner_agent.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/research_bot/agents/search_agent.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/research_bot/agents/writer_agent.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/research_bot/main.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/research_bot/manager.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/research_bot/printer.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/research_bot/sample_outputs/product_recs.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/research_bot/sample_outputs/product_recs.txt +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/research_bot/sample_outputs/vacation.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/research_bot/sample_outputs/vacation.txt +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/tools/code_interpreter.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/tools/computer_use.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/tools/file_search.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/tools/web_search.py +0 -0
- {openai_agents-0.2.2/examples/voice/static → openai_agents-0.2.4/examples/voice}/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/voice/static/README.md +0 -0
- {openai_agents-0.2.2/examples/voice/streamed → openai_agents-0.2.4/examples/voice/static}/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/voice/static/main.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/voice/static/util.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/voice/streamed/README.md +0 -0
- {openai_agents-0.2.2/src/agents/extensions → openai_agents-0.2.4/examples/voice/streamed}/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/voice/streamed/main.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/examples/voice/streamed/my_workflow.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/_config.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/_debug.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/_run_impl.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/computer.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/exceptions.py +0 -0
- {openai_agents-0.2.2/src/agents/extensions/models → openai_agents-0.2.4/src/agents/extensions}/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/extensions/handoff_filters.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/extensions/handoff_prompt.py +0 -0
- {openai_agents-0.2.2/src/agents → openai_agents-0.2.4/src/agents/extensions}/models/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/extensions/models/litellm_provider.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/extensions/visualization.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/handoffs.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/lifecycle.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/logger.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/mcp/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/mcp/server.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/mcp/util.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/memory/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/memory/session.py +0 -0
- {openai_agents-0.2.2/src/agents/util → openai_agents-0.2.4/src/agents/models}/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/models/_openai_shared.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/models/chatcmpl_helpers.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/models/fake_id.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/models/interface.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/models/multi_provider.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/models/openai_chatcompletions.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/models/openai_provider.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/models/openai_responses.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/prompts.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/py.typed +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/realtime/README.md +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/realtime/agent.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/realtime/config.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/realtime/handoffs.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/realtime/items.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/realtime/model_inputs.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/realtime/runner.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/repl.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/result.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/run.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/run_context.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/stream_events.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/strict_schema.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tool_context.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tracing/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tracing/logger.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tracing/processor_interface.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tracing/provider.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tracing/scope.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tracing/setup.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tracing/span_data.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tracing/spans.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/tracing/util.py +0 -0
- {openai_agents-0.2.2/src/agents/voice/models → openai_agents-0.2.4/src/agents/util}/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/util/_coro.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/util/_error_tracing.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/util/_json.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/util/_pretty_print.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/util/_transforms.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/util/_types.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/version.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/events.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/exceptions.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/imports.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/input.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/model.py +0 -0
- {openai_agents-0.2.2/tests → openai_agents-0.2.4/src/agents/voice/models}/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/models/openai_model_provider.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/models/openai_stt.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/models/openai_tts.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/pipeline.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/pipeline_config.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/result.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/utils.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/src/agents/voice/workflow.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/README.md +0 -0
- {openai_agents-0.2.2/tests/fastapi → openai_agents-0.2.4/tests}/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/conftest.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/fake_model.py +0 -0
- {openai_agents-0.2.2/tests/mcp → openai_agents-0.2.4/tests/fastapi}/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/fastapi/streaming_app.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/fastapi/test_streaming_context.py +0 -0
- {openai_agents-0.2.2/tests/models → openai_agents-0.2.4/tests/mcp}/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/mcp/conftest.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/mcp/helpers.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/mcp/test_caching.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/mcp/test_connect_disconnect.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/mcp/test_mcp_tracing.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/mcp/test_mcp_util.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/mcp/test_prompt_server.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/mcp/test_runner_calls_mcp.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/mcp/test_server_errors.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/mcp/test_tool_filtering.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/model_settings/test_serialization.py +0 -0
- {openai_agents-0.2.2/tests/realtime → openai_agents-0.2.4/tests/models}/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/models/conftest.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/models/test_kwargs_functionality.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/models/test_litellm_chatcompletions_stream.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/models/test_litellm_extra_body.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/models/test_map.py +0 -0
- {openai_agents-0.2.2/tests/voice → openai_agents-0.2.4/tests/realtime}/__init__.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/realtime/test_item_parsing.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/realtime/test_model_events.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/realtime/test_realtime_handoffs.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/realtime/test_runner.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_agent_config.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_agent_hooks.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_agent_prompt.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_agent_runner.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_agent_runner_streamed.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_agent_tracing.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_cancel_streaming.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_computer_action.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_config.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_doc_parsing.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_extension_filters.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_extra_headers.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_function_schema.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_function_tool.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_function_tool_decorator.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_global_hooks.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_guardrails.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_handoff_tool.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_items_helpers.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_max_turns.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_openai_chatcompletions.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_openai_chatcompletions_converter.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_openai_chatcompletions_stream.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_openai_responses_converter.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_output_tool.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_pretty_print.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_reasoning_content.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_repl.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_responses.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_responses_tracing.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_result_cast.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_run.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_run_config.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_run_error_details.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_run_step_execution.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_run_step_processing.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_session.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_session_exceptions.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_strict_schema.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_tool_choice_reset.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_tool_converter.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_tool_use_behavior.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_trace_processor.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_tracing.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_tracing_errors.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_tracing_errors_streamed.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_usage.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/test_visualization.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/testing_processor.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/tracing/test_processor_api_key.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/voice/conftest.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/voice/fake_models.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/voice/helpers.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/voice/test_input.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/voice/test_openai_stt.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/voice/test_openai_tts.py +0 -0
- {openai_agents-0.2.2 → openai_agents-0.2.4}/tests/voice/test_pipeline.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
model = "o3"
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
Attempt to solve the reported issue.
|
|
2
|
+
|
|
3
|
+
If a code change is required, create a new branch, commit the fix, and open a pull request that resolves the problem.
|
|
4
|
+
|
|
5
|
+
Here is the original GitHub issue that triggered this run:
|
|
6
|
+
|
|
7
|
+
### {CODEX_ACTION_ISSUE_TITLE}
|
|
8
|
+
|
|
9
|
+
{CODEX_ACTION_ISSUE_BODY}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Review this PR and respond with a very concise final message, formatted in Markdown.
|
|
2
|
+
|
|
3
|
+
There should be a summary of the changes (1-2 sentences) and a few bullet points if necessary.
|
|
4
|
+
|
|
5
|
+
Then provide the **review** (1-2 sentences plus bullet points, friendly tone).
|
|
6
|
+
|
|
7
|
+
{CODEX_ACTION_GITHUB_EVENT_PATH} contains the JSON that triggered this GitHub workflow. It contains the `base` and `head` refs that define this PR. Both refs are available locally.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
name: Codex
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
issues:
|
|
5
|
+
types: [opened, labeled]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
types: [labeled]
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
codex:
|
|
12
|
+
# This `if` check provides complex filtering logic to avoid running Codex
|
|
13
|
+
# on every PR. Admittedly, one thing this does not verify is whether the
|
|
14
|
+
# sender has write access to the repo: that must be done as part of a
|
|
15
|
+
# runtime step.
|
|
16
|
+
#
|
|
17
|
+
# Note the label values should match the ones in the .github/codex/labels
|
|
18
|
+
# folder.
|
|
19
|
+
if: |
|
|
20
|
+
(github.event_name == 'issues' && (
|
|
21
|
+
(github.event.action == 'labeled' && (github.event.label.name == 'codex-attempt' || github.event.label.name == 'codex-triage'))
|
|
22
|
+
)) ||
|
|
23
|
+
(github.event_name == 'pull_request' && github.event.action == 'labeled' && github.event.label.name == 'codex-review')
|
|
24
|
+
runs-on: ubuntu-latest
|
|
25
|
+
permissions:
|
|
26
|
+
contents: write # can push or create branches
|
|
27
|
+
issues: write # for comments + labels on issues/PRs
|
|
28
|
+
pull-requests: write # for PR comments/labels
|
|
29
|
+
steps:
|
|
30
|
+
# TODO: Consider adding an optional mode (--dry-run?) to actions/codex
|
|
31
|
+
# that verifies whether Codex should actually be run for this event.
|
|
32
|
+
# (For example, it may be rejected because the sender does not have
|
|
33
|
+
# write access to the repo.) The benefit would be two-fold:
|
|
34
|
+
# 1. As the first step of this job, it gives us a chance to add a reaction
|
|
35
|
+
# or comment to the PR/issue ASAP to "ack" the request.
|
|
36
|
+
# 2. It saves resources by skipping the clone and setup steps below if
|
|
37
|
+
# Codex is not going to run.
|
|
38
|
+
|
|
39
|
+
- name: Checkout repository
|
|
40
|
+
uses: actions/checkout@v4
|
|
41
|
+
|
|
42
|
+
# We install the dependencies like we would for an ordinary CI job,
|
|
43
|
+
# particularly because Codex will not have network access to install
|
|
44
|
+
# these dependencies.
|
|
45
|
+
- name: Setup uv
|
|
46
|
+
uses: astral-sh/setup-uv@v5
|
|
47
|
+
with:
|
|
48
|
+
enable-cache: true
|
|
49
|
+
|
|
50
|
+
- name: Install dependencies
|
|
51
|
+
run: make sync
|
|
52
|
+
|
|
53
|
+
# Note it is possible that the `verify` step internal to Run Codex will
|
|
54
|
+
# fail, in which case the work to setup the repo was worthless :(
|
|
55
|
+
- name: Run Codex
|
|
56
|
+
uses: openai/codex/.github/actions/codex@main
|
|
57
|
+
with:
|
|
58
|
+
openai_api_key: ${{ secrets.PROD_OPENAI_API_KEY }}
|
|
59
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
60
|
+
codex_home: ./.github/codex/home
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openai-agents
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.4
|
|
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.97.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
|
|
@@ -56,125 +56,19 @@ The OpenAI Agents SDK is a lightweight yet powerful framework for building multi
|
|
|
56
56
|
|
|
57
57
|
Explore the [examples](examples) directory to see the SDK in action, and read our [documentation](https://openai.github.io/openai-agents-python/) for more details.
|
|
58
58
|
|
|
59
|
-
## Sessions
|
|
60
|
-
|
|
61
|
-
The Agents SDK provides built-in session memory to automatically maintain conversation history across multiple agent runs, eliminating the need to manually handle `.to_input_list()` between turns.
|
|
62
|
-
|
|
63
|
-
### Quick start
|
|
64
|
-
|
|
65
|
-
```python
|
|
66
|
-
from agents import Agent, Runner, SQLiteSession
|
|
67
|
-
|
|
68
|
-
# Create agent
|
|
69
|
-
agent = Agent(
|
|
70
|
-
name="Assistant",
|
|
71
|
-
instructions="Reply very concisely.",
|
|
72
|
-
)
|
|
73
|
-
|
|
74
|
-
# Create a session instance
|
|
75
|
-
session = SQLiteSession("conversation_123")
|
|
76
|
-
|
|
77
|
-
# First turn
|
|
78
|
-
result = await Runner.run(
|
|
79
|
-
agent,
|
|
80
|
-
"What city is the Golden Gate Bridge in?",
|
|
81
|
-
session=session
|
|
82
|
-
)
|
|
83
|
-
print(result.final_output) # "San Francisco"
|
|
84
|
-
|
|
85
|
-
# Second turn - agent automatically remembers previous context
|
|
86
|
-
result = await Runner.run(
|
|
87
|
-
agent,
|
|
88
|
-
"What state is it in?",
|
|
89
|
-
session=session
|
|
90
|
-
)
|
|
91
|
-
print(result.final_output) # "California"
|
|
92
|
-
|
|
93
|
-
# Also works with synchronous runner
|
|
94
|
-
result = Runner.run_sync(
|
|
95
|
-
agent,
|
|
96
|
-
"What's the population?",
|
|
97
|
-
session=session
|
|
98
|
-
)
|
|
99
|
-
print(result.final_output) # "Approximately 39 million"
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
### Session options
|
|
103
|
-
|
|
104
|
-
- **No memory** (default): No session memory when session parameter is omitted
|
|
105
|
-
- **`session: Session = DatabaseSession(...)`**: Use a Session instance to manage conversation history
|
|
106
|
-
|
|
107
|
-
```python
|
|
108
|
-
from agents import Agent, Runner, SQLiteSession
|
|
109
|
-
|
|
110
|
-
# Custom SQLite database file
|
|
111
|
-
session = SQLiteSession("user_123", "conversations.db")
|
|
112
|
-
agent = Agent(name="Assistant")
|
|
113
|
-
|
|
114
|
-
# Different session IDs maintain separate conversation histories
|
|
115
|
-
result1 = await Runner.run(
|
|
116
|
-
agent,
|
|
117
|
-
"Hello",
|
|
118
|
-
session=session
|
|
119
|
-
)
|
|
120
|
-
result2 = await Runner.run(
|
|
121
|
-
agent,
|
|
122
|
-
"Hello",
|
|
123
|
-
session=SQLiteSession("user_456", "conversations.db")
|
|
124
|
-
)
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### Custom session implementations
|
|
128
|
-
|
|
129
|
-
You can implement your own session memory by creating a class that follows the `Session` protocol:
|
|
130
|
-
|
|
131
|
-
```python
|
|
132
|
-
from agents.memory import Session
|
|
133
|
-
from typing import List
|
|
134
|
-
|
|
135
|
-
class MyCustomSession:
|
|
136
|
-
"""Custom session implementation following the Session protocol."""
|
|
137
|
-
|
|
138
|
-
def __init__(self, session_id: str):
|
|
139
|
-
self.session_id = session_id
|
|
140
|
-
# Your initialization here
|
|
141
|
-
|
|
142
|
-
async def get_items(self, limit: int | None = None) -> List[dict]:
|
|
143
|
-
# Retrieve conversation history for the session
|
|
144
|
-
pass
|
|
145
|
-
|
|
146
|
-
async def add_items(self, items: List[dict]) -> None:
|
|
147
|
-
# Store new items for the session
|
|
148
|
-
pass
|
|
149
|
-
|
|
150
|
-
async def pop_item(self) -> dict | None:
|
|
151
|
-
# Remove and return the most recent item from the session
|
|
152
|
-
pass
|
|
153
|
-
|
|
154
|
-
async def clear_session(self) -> None:
|
|
155
|
-
# Clear all items for the session
|
|
156
|
-
pass
|
|
157
|
-
|
|
158
|
-
# Use your custom session
|
|
159
|
-
agent = Agent(name="Assistant")
|
|
160
|
-
result = await Runner.run(
|
|
161
|
-
agent,
|
|
162
|
-
"Hello",
|
|
163
|
-
session=MyCustomSession("my_session")
|
|
164
|
-
)
|
|
165
|
-
```
|
|
166
|
-
|
|
167
59
|
## Get started
|
|
168
60
|
|
|
169
61
|
1. Set up your Python environment
|
|
170
62
|
|
|
171
|
-
-
|
|
63
|
+
- Option A: Using venv (traditional method)
|
|
64
|
+
|
|
172
65
|
```bash
|
|
173
66
|
python -m venv env
|
|
174
67
|
source env/bin/activate # On Windows: env\Scripts\activate
|
|
175
68
|
```
|
|
176
69
|
|
|
177
|
-
-
|
|
70
|
+
- Option B: Using uv (recommended)
|
|
71
|
+
|
|
178
72
|
```bash
|
|
179
73
|
uv venv
|
|
180
74
|
source .venv/bin/activate # On Windows: .venv\Scripts\activate
|
|
@@ -302,6 +196,114 @@ The Agents SDK is designed to be highly flexible, allowing you to model a wide r
|
|
|
302
196
|
|
|
303
197
|
The Agents SDK automatically traces your agent runs, making it easy to track and debug the behavior of your agents. Tracing is extensible by design, supporting custom spans and a wide variety of external destinations, including [Logfire](https://logfire.pydantic.dev/docs/integrations/llms/openai/#openai-agents), [AgentOps](https://docs.agentops.ai/v1/integrations/agentssdk), [Braintrust](https://braintrust.dev/docs/guides/traces/integrations#openai-agents-sdk), [Scorecard](https://docs.scorecard.io/docs/documentation/features/tracing#openai-agents-sdk-integration), and [Keywords AI](https://docs.keywordsai.co/integration/development-frameworks/openai-agent). For more details about how to customize or disable tracing, see [Tracing](http://openai.github.io/openai-agents-python/tracing), which also includes a larger list of [external tracing processors](http://openai.github.io/openai-agents-python/tracing/#external-tracing-processors-list).
|
|
304
198
|
|
|
199
|
+
## Sessions
|
|
200
|
+
|
|
201
|
+
The Agents SDK provides built-in session memory to automatically maintain conversation history across multiple agent runs, eliminating the need to manually handle `.to_input_list()` between turns.
|
|
202
|
+
|
|
203
|
+
### Quick start
|
|
204
|
+
|
|
205
|
+
```python
|
|
206
|
+
from agents import Agent, Runner, SQLiteSession
|
|
207
|
+
|
|
208
|
+
# Create agent
|
|
209
|
+
agent = Agent(
|
|
210
|
+
name="Assistant",
|
|
211
|
+
instructions="Reply very concisely.",
|
|
212
|
+
)
|
|
213
|
+
|
|
214
|
+
# Create a session instance
|
|
215
|
+
session = SQLiteSession("conversation_123")
|
|
216
|
+
|
|
217
|
+
# First turn
|
|
218
|
+
result = await Runner.run(
|
|
219
|
+
agent,
|
|
220
|
+
"What city is the Golden Gate Bridge in?",
|
|
221
|
+
session=session
|
|
222
|
+
)
|
|
223
|
+
print(result.final_output) # "San Francisco"
|
|
224
|
+
|
|
225
|
+
# Second turn - agent automatically remembers previous context
|
|
226
|
+
result = await Runner.run(
|
|
227
|
+
agent,
|
|
228
|
+
"What state is it in?",
|
|
229
|
+
session=session
|
|
230
|
+
)
|
|
231
|
+
print(result.final_output) # "California"
|
|
232
|
+
|
|
233
|
+
# Also works with synchronous runner
|
|
234
|
+
result = Runner.run_sync(
|
|
235
|
+
agent,
|
|
236
|
+
"What's the population?",
|
|
237
|
+
session=session
|
|
238
|
+
)
|
|
239
|
+
print(result.final_output) # "Approximately 39 million"
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Session options
|
|
243
|
+
|
|
244
|
+
- **No memory** (default): No session memory when session parameter is omitted
|
|
245
|
+
- **`session: Session = DatabaseSession(...)`**: Use a Session instance to manage conversation history
|
|
246
|
+
|
|
247
|
+
```python
|
|
248
|
+
from agents import Agent, Runner, SQLiteSession
|
|
249
|
+
|
|
250
|
+
# Custom SQLite database file
|
|
251
|
+
session = SQLiteSession("user_123", "conversations.db")
|
|
252
|
+
agent = Agent(name="Assistant")
|
|
253
|
+
|
|
254
|
+
# Different session IDs maintain separate conversation histories
|
|
255
|
+
result1 = await Runner.run(
|
|
256
|
+
agent,
|
|
257
|
+
"Hello",
|
|
258
|
+
session=session
|
|
259
|
+
)
|
|
260
|
+
result2 = await Runner.run(
|
|
261
|
+
agent,
|
|
262
|
+
"Hello",
|
|
263
|
+
session=SQLiteSession("user_456", "conversations.db")
|
|
264
|
+
)
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### Custom session implementations
|
|
268
|
+
|
|
269
|
+
You can implement your own session memory by creating a class that follows the `Session` protocol:
|
|
270
|
+
|
|
271
|
+
```python
|
|
272
|
+
from agents.memory import Session
|
|
273
|
+
from typing import List
|
|
274
|
+
|
|
275
|
+
class MyCustomSession:
|
|
276
|
+
"""Custom session implementation following the Session protocol."""
|
|
277
|
+
|
|
278
|
+
def __init__(self, session_id: str):
|
|
279
|
+
self.session_id = session_id
|
|
280
|
+
# Your initialization here
|
|
281
|
+
|
|
282
|
+
async def get_items(self, limit: int | None = None) -> List[dict]:
|
|
283
|
+
# Retrieve conversation history for the session
|
|
284
|
+
pass
|
|
285
|
+
|
|
286
|
+
async def add_items(self, items: List[dict]) -> None:
|
|
287
|
+
# Store new items for the session
|
|
288
|
+
pass
|
|
289
|
+
|
|
290
|
+
async def pop_item(self) -> dict | None:
|
|
291
|
+
# Remove and return the most recent item from the session
|
|
292
|
+
pass
|
|
293
|
+
|
|
294
|
+
async def clear_session(self) -> None:
|
|
295
|
+
# Clear all items for the session
|
|
296
|
+
pass
|
|
297
|
+
|
|
298
|
+
# Use your custom session
|
|
299
|
+
agent = Agent(name="Assistant")
|
|
300
|
+
result = await Runner.run(
|
|
301
|
+
agent,
|
|
302
|
+
"Hello",
|
|
303
|
+
session=MyCustomSession("my_session")
|
|
304
|
+
)
|
|
305
|
+
```
|
|
306
|
+
|
|
305
307
|
## Development (only needed if you need to edit the SDK/examples)
|
|
306
308
|
|
|
307
309
|
0. Ensure you have [`uv`](https://docs.astral.sh/uv/) installed.
|
|
@@ -323,6 +325,7 @@ make check # run tests linter and typechecker
|
|
|
323
325
|
```
|
|
324
326
|
|
|
325
327
|
Or to run them individually:
|
|
328
|
+
|
|
326
329
|
```
|
|
327
330
|
make tests # run tests
|
|
328
331
|
make mypy # run typechecker
|
|
@@ -335,6 +338,7 @@ make format-check # run style checker
|
|
|
335
338
|
We'd like to acknowledge the excellent work of the open-source community, especially:
|
|
336
339
|
|
|
337
340
|
- [Pydantic](https://docs.pydantic.dev/latest/) (data validation) and [PydanticAI](https://ai.pydantic.dev/) (advanced agent framework)
|
|
341
|
+
- [LiteLLM](https://github.com/BerriAI/litellm) (unified interface for 100+ LLMs)
|
|
338
342
|
- [MkDocs](https://github.com/squidfunk/mkdocs-material)
|
|
339
343
|
- [Griffe](https://github.com/mkdocstrings/griffe)
|
|
340
344
|
- [uv](https://github.com/astral-sh/uv) and [ruff](https://github.com/astral-sh/ruff)
|
|
@@ -17,125 +17,19 @@ The OpenAI Agents SDK is a lightweight yet powerful framework for building multi
|
|
|
17
17
|
|
|
18
18
|
Explore the [examples](examples) directory to see the SDK in action, and read our [documentation](https://openai.github.io/openai-agents-python/) for more details.
|
|
19
19
|
|
|
20
|
-
## Sessions
|
|
21
|
-
|
|
22
|
-
The Agents SDK provides built-in session memory to automatically maintain conversation history across multiple agent runs, eliminating the need to manually handle `.to_input_list()` between turns.
|
|
23
|
-
|
|
24
|
-
### Quick start
|
|
25
|
-
|
|
26
|
-
```python
|
|
27
|
-
from agents import Agent, Runner, SQLiteSession
|
|
28
|
-
|
|
29
|
-
# Create agent
|
|
30
|
-
agent = Agent(
|
|
31
|
-
name="Assistant",
|
|
32
|
-
instructions="Reply very concisely.",
|
|
33
|
-
)
|
|
34
|
-
|
|
35
|
-
# Create a session instance
|
|
36
|
-
session = SQLiteSession("conversation_123")
|
|
37
|
-
|
|
38
|
-
# First turn
|
|
39
|
-
result = await Runner.run(
|
|
40
|
-
agent,
|
|
41
|
-
"What city is the Golden Gate Bridge in?",
|
|
42
|
-
session=session
|
|
43
|
-
)
|
|
44
|
-
print(result.final_output) # "San Francisco"
|
|
45
|
-
|
|
46
|
-
# Second turn - agent automatically remembers previous context
|
|
47
|
-
result = await Runner.run(
|
|
48
|
-
agent,
|
|
49
|
-
"What state is it in?",
|
|
50
|
-
session=session
|
|
51
|
-
)
|
|
52
|
-
print(result.final_output) # "California"
|
|
53
|
-
|
|
54
|
-
# Also works with synchronous runner
|
|
55
|
-
result = Runner.run_sync(
|
|
56
|
-
agent,
|
|
57
|
-
"What's the population?",
|
|
58
|
-
session=session
|
|
59
|
-
)
|
|
60
|
-
print(result.final_output) # "Approximately 39 million"
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
### Session options
|
|
64
|
-
|
|
65
|
-
- **No memory** (default): No session memory when session parameter is omitted
|
|
66
|
-
- **`session: Session = DatabaseSession(...)`**: Use a Session instance to manage conversation history
|
|
67
|
-
|
|
68
|
-
```python
|
|
69
|
-
from agents import Agent, Runner, SQLiteSession
|
|
70
|
-
|
|
71
|
-
# Custom SQLite database file
|
|
72
|
-
session = SQLiteSession("user_123", "conversations.db")
|
|
73
|
-
agent = Agent(name="Assistant")
|
|
74
|
-
|
|
75
|
-
# Different session IDs maintain separate conversation histories
|
|
76
|
-
result1 = await Runner.run(
|
|
77
|
-
agent,
|
|
78
|
-
"Hello",
|
|
79
|
-
session=session
|
|
80
|
-
)
|
|
81
|
-
result2 = await Runner.run(
|
|
82
|
-
agent,
|
|
83
|
-
"Hello",
|
|
84
|
-
session=SQLiteSession("user_456", "conversations.db")
|
|
85
|
-
)
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
### Custom session implementations
|
|
89
|
-
|
|
90
|
-
You can implement your own session memory by creating a class that follows the `Session` protocol:
|
|
91
|
-
|
|
92
|
-
```python
|
|
93
|
-
from agents.memory import Session
|
|
94
|
-
from typing import List
|
|
95
|
-
|
|
96
|
-
class MyCustomSession:
|
|
97
|
-
"""Custom session implementation following the Session protocol."""
|
|
98
|
-
|
|
99
|
-
def __init__(self, session_id: str):
|
|
100
|
-
self.session_id = session_id
|
|
101
|
-
# Your initialization here
|
|
102
|
-
|
|
103
|
-
async def get_items(self, limit: int | None = None) -> List[dict]:
|
|
104
|
-
# Retrieve conversation history for the session
|
|
105
|
-
pass
|
|
106
|
-
|
|
107
|
-
async def add_items(self, items: List[dict]) -> None:
|
|
108
|
-
# Store new items for the session
|
|
109
|
-
pass
|
|
110
|
-
|
|
111
|
-
async def pop_item(self) -> dict | None:
|
|
112
|
-
# Remove and return the most recent item from the session
|
|
113
|
-
pass
|
|
114
|
-
|
|
115
|
-
async def clear_session(self) -> None:
|
|
116
|
-
# Clear all items for the session
|
|
117
|
-
pass
|
|
118
|
-
|
|
119
|
-
# Use your custom session
|
|
120
|
-
agent = Agent(name="Assistant")
|
|
121
|
-
result = await Runner.run(
|
|
122
|
-
agent,
|
|
123
|
-
"Hello",
|
|
124
|
-
session=MyCustomSession("my_session")
|
|
125
|
-
)
|
|
126
|
-
```
|
|
127
|
-
|
|
128
20
|
## Get started
|
|
129
21
|
|
|
130
22
|
1. Set up your Python environment
|
|
131
23
|
|
|
132
|
-
-
|
|
24
|
+
- Option A: Using venv (traditional method)
|
|
25
|
+
|
|
133
26
|
```bash
|
|
134
27
|
python -m venv env
|
|
135
28
|
source env/bin/activate # On Windows: env\Scripts\activate
|
|
136
29
|
```
|
|
137
30
|
|
|
138
|
-
-
|
|
31
|
+
- Option B: Using uv (recommended)
|
|
32
|
+
|
|
139
33
|
```bash
|
|
140
34
|
uv venv
|
|
141
35
|
source .venv/bin/activate # On Windows: .venv\Scripts\activate
|
|
@@ -263,6 +157,114 @@ The Agents SDK is designed to be highly flexible, allowing you to model a wide r
|
|
|
263
157
|
|
|
264
158
|
The Agents SDK automatically traces your agent runs, making it easy to track and debug the behavior of your agents. Tracing is extensible by design, supporting custom spans and a wide variety of external destinations, including [Logfire](https://logfire.pydantic.dev/docs/integrations/llms/openai/#openai-agents), [AgentOps](https://docs.agentops.ai/v1/integrations/agentssdk), [Braintrust](https://braintrust.dev/docs/guides/traces/integrations#openai-agents-sdk), [Scorecard](https://docs.scorecard.io/docs/documentation/features/tracing#openai-agents-sdk-integration), and [Keywords AI](https://docs.keywordsai.co/integration/development-frameworks/openai-agent). For more details about how to customize or disable tracing, see [Tracing](http://openai.github.io/openai-agents-python/tracing), which also includes a larger list of [external tracing processors](http://openai.github.io/openai-agents-python/tracing/#external-tracing-processors-list).
|
|
265
159
|
|
|
160
|
+
## Sessions
|
|
161
|
+
|
|
162
|
+
The Agents SDK provides built-in session memory to automatically maintain conversation history across multiple agent runs, eliminating the need to manually handle `.to_input_list()` between turns.
|
|
163
|
+
|
|
164
|
+
### Quick start
|
|
165
|
+
|
|
166
|
+
```python
|
|
167
|
+
from agents import Agent, Runner, SQLiteSession
|
|
168
|
+
|
|
169
|
+
# Create agent
|
|
170
|
+
agent = Agent(
|
|
171
|
+
name="Assistant",
|
|
172
|
+
instructions="Reply very concisely.",
|
|
173
|
+
)
|
|
174
|
+
|
|
175
|
+
# Create a session instance
|
|
176
|
+
session = SQLiteSession("conversation_123")
|
|
177
|
+
|
|
178
|
+
# First turn
|
|
179
|
+
result = await Runner.run(
|
|
180
|
+
agent,
|
|
181
|
+
"What city is the Golden Gate Bridge in?",
|
|
182
|
+
session=session
|
|
183
|
+
)
|
|
184
|
+
print(result.final_output) # "San Francisco"
|
|
185
|
+
|
|
186
|
+
# Second turn - agent automatically remembers previous context
|
|
187
|
+
result = await Runner.run(
|
|
188
|
+
agent,
|
|
189
|
+
"What state is it in?",
|
|
190
|
+
session=session
|
|
191
|
+
)
|
|
192
|
+
print(result.final_output) # "California"
|
|
193
|
+
|
|
194
|
+
# Also works with synchronous runner
|
|
195
|
+
result = Runner.run_sync(
|
|
196
|
+
agent,
|
|
197
|
+
"What's the population?",
|
|
198
|
+
session=session
|
|
199
|
+
)
|
|
200
|
+
print(result.final_output) # "Approximately 39 million"
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### Session options
|
|
204
|
+
|
|
205
|
+
- **No memory** (default): No session memory when session parameter is omitted
|
|
206
|
+
- **`session: Session = DatabaseSession(...)`**: Use a Session instance to manage conversation history
|
|
207
|
+
|
|
208
|
+
```python
|
|
209
|
+
from agents import Agent, Runner, SQLiteSession
|
|
210
|
+
|
|
211
|
+
# Custom SQLite database file
|
|
212
|
+
session = SQLiteSession("user_123", "conversations.db")
|
|
213
|
+
agent = Agent(name="Assistant")
|
|
214
|
+
|
|
215
|
+
# Different session IDs maintain separate conversation histories
|
|
216
|
+
result1 = await Runner.run(
|
|
217
|
+
agent,
|
|
218
|
+
"Hello",
|
|
219
|
+
session=session
|
|
220
|
+
)
|
|
221
|
+
result2 = await Runner.run(
|
|
222
|
+
agent,
|
|
223
|
+
"Hello",
|
|
224
|
+
session=SQLiteSession("user_456", "conversations.db")
|
|
225
|
+
)
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Custom session implementations
|
|
229
|
+
|
|
230
|
+
You can implement your own session memory by creating a class that follows the `Session` protocol:
|
|
231
|
+
|
|
232
|
+
```python
|
|
233
|
+
from agents.memory import Session
|
|
234
|
+
from typing import List
|
|
235
|
+
|
|
236
|
+
class MyCustomSession:
|
|
237
|
+
"""Custom session implementation following the Session protocol."""
|
|
238
|
+
|
|
239
|
+
def __init__(self, session_id: str):
|
|
240
|
+
self.session_id = session_id
|
|
241
|
+
# Your initialization here
|
|
242
|
+
|
|
243
|
+
async def get_items(self, limit: int | None = None) -> List[dict]:
|
|
244
|
+
# Retrieve conversation history for the session
|
|
245
|
+
pass
|
|
246
|
+
|
|
247
|
+
async def add_items(self, items: List[dict]) -> None:
|
|
248
|
+
# Store new items for the session
|
|
249
|
+
pass
|
|
250
|
+
|
|
251
|
+
async def pop_item(self) -> dict | None:
|
|
252
|
+
# Remove and return the most recent item from the session
|
|
253
|
+
pass
|
|
254
|
+
|
|
255
|
+
async def clear_session(self) -> None:
|
|
256
|
+
# Clear all items for the session
|
|
257
|
+
pass
|
|
258
|
+
|
|
259
|
+
# Use your custom session
|
|
260
|
+
agent = Agent(name="Assistant")
|
|
261
|
+
result = await Runner.run(
|
|
262
|
+
agent,
|
|
263
|
+
"Hello",
|
|
264
|
+
session=MyCustomSession("my_session")
|
|
265
|
+
)
|
|
266
|
+
```
|
|
267
|
+
|
|
266
268
|
## Development (only needed if you need to edit the SDK/examples)
|
|
267
269
|
|
|
268
270
|
0. Ensure you have [`uv`](https://docs.astral.sh/uv/) installed.
|
|
@@ -284,6 +286,7 @@ make check # run tests linter and typechecker
|
|
|
284
286
|
```
|
|
285
287
|
|
|
286
288
|
Or to run them individually:
|
|
289
|
+
|
|
287
290
|
```
|
|
288
291
|
make tests # run tests
|
|
289
292
|
make mypy # run typechecker
|
|
@@ -296,6 +299,7 @@ make format-check # run style checker
|
|
|
296
299
|
We'd like to acknowledge the excellent work of the open-source community, especially:
|
|
297
300
|
|
|
298
301
|
- [Pydantic](https://docs.pydantic.dev/latest/) (data validation) and [PydanticAI](https://ai.pydantic.dev/) (advanced agent framework)
|
|
302
|
+
- [LiteLLM](https://github.com/BerriAI/litellm) (unified interface for 100+ LLMs)
|
|
299
303
|
- [MkDocs](https://github.com/squidfunk/mkdocs-material)
|
|
300
304
|
- [Griffe](https://github.com/mkdocstrings/griffe)
|
|
301
305
|
- [uv](https://github.com/astral-sh/uv) and [ruff](https://github.com/astral-sh/ruff)
|