openai-agents 0.1.0__tar.gz → 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of openai-agents might be problematic. Click here for more details.
- openai_agents-0.2.0/.vscode/launch.json +14 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/Makefile +6 -2
- {openai_agents-0.1.0 → openai_agents-0.2.0}/PKG-INFO +120 -3
- {openai_agents-0.1.0 → openai_agents-0.2.0}/README.md +116 -1
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/agents.md +1 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/examples.md +3 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/index.md +2 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/mcp.md +33 -1
- openai_agents-0.2.0/docs/ref/memory.md +8 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/release.md +4 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/running_agents.md +36 -1
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/scripts/translate_docs.py +3 -1
- openai_agents-0.2.0/docs/sessions.md +319 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/tools.md +1 -1
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/agent_patterns/llm_as_a_judge.py +1 -1
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/basic/agent_lifecycle_example.py +2 -4
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/basic/hello_world_jupyter.ipynb +1 -1
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/basic/lifecycle_example.py +6 -8
- openai_agents-0.2.0/examples/basic/session_example.py +77 -0
- openai_agents-0.2.0/examples/mcp/prompt_server/README.md +29 -0
- openai_agents-0.2.0/examples/mcp/prompt_server/main.py +110 -0
- openai_agents-0.2.0/examples/mcp/prompt_server/server.py +37 -0
- openai_agents-0.2.0/examples/realtime/demo.py +115 -0
- openai_agents-0.2.0/examples/realtime/ui.py +268 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/reasoning_content/main.py +2 -2
- {openai_agents-0.1.0 → openai_agents-0.2.0}/mkdocs.yml +4 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/pyproject.toml +3 -2
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/__init__.py +5 -1
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/_run_impl.py +5 -1
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/agent.py +61 -29
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/function_schema.py +11 -1
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/guardrail.py +5 -1
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/lifecycle.py +26 -17
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/mcp/server.py +43 -11
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/mcp/util.py +5 -6
- openai_agents-0.2.0/src/agents/memory/__init__.py +3 -0
- openai_agents-0.2.0/src/agents/memory/session.py +369 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/model_settings.py +15 -7
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/models/chatcmpl_converter.py +19 -2
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/models/chatcmpl_stream_handler.py +1 -1
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/models/openai_responses.py +11 -4
- openai_agents-0.2.0/src/agents/realtime/README.md +3 -0
- openai_agents-0.2.0/src/agents/realtime/__init__.py +174 -0
- openai_agents-0.2.0/src/agents/realtime/agent.py +80 -0
- openai_agents-0.2.0/src/agents/realtime/config.py +128 -0
- openai_agents-0.2.0/src/agents/realtime/events.py +216 -0
- openai_agents-0.2.0/src/agents/realtime/items.py +91 -0
- openai_agents-0.2.0/src/agents/realtime/model.py +69 -0
- openai_agents-0.2.0/src/agents/realtime/model_events.py +159 -0
- openai_agents-0.2.0/src/agents/realtime/model_inputs.py +100 -0
- openai_agents-0.2.0/src/agents/realtime/openai_realtime.py +584 -0
- openai_agents-0.2.0/src/agents/realtime/runner.py +118 -0
- openai_agents-0.2.0/src/agents/realtime/session.py +502 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/run.py +106 -4
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/tool.py +6 -7
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/tool_context.py +16 -3
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/voice/models/openai_stt.py +1 -1
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/voice/pipeline.py +6 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/voice/workflow.py +8 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/mcp/helpers.py +13 -1
- openai_agents-0.2.0/tests/mcp/test_prompt_server.py +301 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/mcp/test_tool_filtering.py +6 -3
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/model_settings/test_serialization.py +13 -2
- openai_agents-0.2.0/tests/realtime/test_agent.py +25 -0
- openai_agents-0.2.0/tests/realtime/test_item_parsing.py +80 -0
- openai_agents-0.2.0/tests/realtime/test_model_events.py +12 -0
- openai_agents-0.2.0/tests/realtime/test_openai_realtime.py +378 -0
- openai_agents-0.2.0/tests/realtime/test_runner.py +224 -0
- openai_agents-0.2.0/tests/realtime/test_session.py +1210 -0
- openai_agents-0.2.0/tests/realtime/test_tracing.py +264 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_function_schema.py +218 -1
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_function_tool.py +43 -17
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_function_tool_decorator.py +1 -1
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_items_helpers.py +11 -2
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_reasoning_content.py +5 -9
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_run_step_processing.py +7 -1
- openai_agents-0.2.0/tests/test_session.py +400 -0
- openai_agents-0.2.0/tests/test_session_exceptions.py +300 -0
- openai_agents-0.2.0/tests/voice/__init__.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/voice/test_openai_stt.py +2 -2
- {openai_agents-0.1.0 → openai_agents-0.2.0}/uv.lock +10 -6
- {openai_agents-0.1.0 → openai_agents-0.2.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/.github/ISSUE_TEMPLATE/model_provider.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/.github/ISSUE_TEMPLATE/question.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/.github/workflows/docs.yml +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/.github/workflows/issues.yml +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/.github/workflows/publish.yml +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/.github/workflows/tests.yml +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/.gitignore +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/.prettierrc +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/.vscode/settings.json +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/AGENTS.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/CLAUDE.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/LICENSE +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/assets/images/favicon-platform.svg +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/assets/images/graph.png +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/assets/images/mcp-tracing.jpg +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/assets/images/orchestration.png +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/assets/logo.svg +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/config.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/context.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/guardrails.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/handoffs.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ja/agents.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ja/config.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ja/context.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ja/examples.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ja/guardrails.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ja/handoffs.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ja/index.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ja/mcp.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ja/models/index.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ja/models/litellm.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ja/multi_agent.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ja/quickstart.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ja/repl.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ja/results.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ja/running_agents.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ja/streaming.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ja/tools.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ja/tracing.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ja/visualization.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ja/voice/pipeline.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ja/voice/quickstart.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ja/voice/tracing.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/models/index.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/models/litellm.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/multi_agent.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/quickstart.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/agent.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/agent_output.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/exceptions.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/extensions/handoff_filters.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/extensions/handoff_prompt.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/extensions/litellm.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/function_schema.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/guardrail.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/handoffs.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/index.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/items.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/lifecycle.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/mcp/server.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/mcp/util.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/model_settings.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/models/interface.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/models/openai_chatcompletions.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/models/openai_responses.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/repl.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/result.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/run.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/run_context.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/stream_events.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/tool.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/tracing/create.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/tracing/index.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/tracing/processor_interface.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/tracing/processors.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/tracing/scope.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/tracing/setup.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/tracing/span_data.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/tracing/spans.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/tracing/traces.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/tracing/util.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/usage.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/voice/events.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/voice/exceptions.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/voice/input.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/voice/model.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/voice/models/openai_provider.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/voice/models/openai_stt.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/voice/models/openai_tts.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/voice/pipeline.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/voice/pipeline_config.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/voice/result.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/voice/utils.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/ref/voice/workflow.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/repl.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/results.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/streaming.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/stylesheets/extra.css +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/tracing.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/visualization.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/voice/pipeline.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/voice/quickstart.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/docs/voice/tracing.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/__init__.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/agent_patterns/README.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/agent_patterns/agents_as_tools.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/agent_patterns/deterministic.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/agent_patterns/forcing_tool_use.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/agent_patterns/input_guardrails.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/agent_patterns/output_guardrails.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/agent_patterns/parallelization.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/agent_patterns/routing.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/agent_patterns/streaming_guardrails.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/basic/dynamic_system_prompt.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/basic/hello_world.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/basic/local_image.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/basic/media/image_bison.jpg +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/basic/non_strict_output_type.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/basic/previous_response_id.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/basic/prompt_template.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/basic/remote_image.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/basic/stream_items.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/basic/stream_text.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/basic/tools.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/customer_service/main.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/financial_research_agent/README.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/financial_research_agent/__init__.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/financial_research_agent/agents/__init__.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/financial_research_agent/agents/financials_agent.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/financial_research_agent/agents/planner_agent.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/financial_research_agent/agents/risk_agent.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/financial_research_agent/agents/search_agent.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/financial_research_agent/agents/verifier_agent.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/financial_research_agent/agents/writer_agent.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/financial_research_agent/main.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/financial_research_agent/manager.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/financial_research_agent/printer.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/handoffs/message_filter.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/handoffs/message_filter_streaming.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/hosted_mcp/__init__.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/hosted_mcp/approvals.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/hosted_mcp/simple.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/mcp/filesystem_example/README.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/mcp/filesystem_example/main.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/mcp/filesystem_example/sample_files/favorite_books.txt +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/mcp/filesystem_example/sample_files/favorite_cities.txt +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/mcp/filesystem_example/sample_files/favorite_songs.txt +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/mcp/git_example/README.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/mcp/git_example/main.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/mcp/sse_example/README.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/mcp/sse_example/main.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/mcp/sse_example/server.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/mcp/streamablehttp_example/README.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/mcp/streamablehttp_example/main.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/mcp/streamablehttp_example/server.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/model_providers/README.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/model_providers/custom_example_agent.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/model_providers/custom_example_global.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/model_providers/custom_example_provider.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/model_providers/litellm_auto.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/model_providers/litellm_provider.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/reasoning_content/__init__.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/reasoning_content/runner_example.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/research_bot/README.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/research_bot/__init__.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/research_bot/agents/__init__.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/research_bot/agents/planner_agent.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/research_bot/agents/search_agent.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/research_bot/agents/writer_agent.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/research_bot/main.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/research_bot/manager.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/research_bot/printer.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/research_bot/sample_outputs/product_recs.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/research_bot/sample_outputs/product_recs.txt +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/research_bot/sample_outputs/vacation.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/research_bot/sample_outputs/vacation.txt +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/tools/code_interpreter.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/tools/computer_use.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/tools/file_search.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/tools/image_generator.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/tools/web_search.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/voice/__init__.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/voice/static/README.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/voice/static/__init__.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/voice/static/main.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/voice/static/util.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/voice/streamed/README.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/voice/streamed/__init__.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/voice/streamed/main.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/examples/voice/streamed/my_workflow.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/_config.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/_debug.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/agent_output.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/computer.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/exceptions.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/extensions/__init__.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/extensions/handoff_filters.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/extensions/handoff_prompt.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/extensions/models/__init__.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/extensions/models/litellm_model.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/extensions/models/litellm_provider.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/extensions/visualization.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/handoffs.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/items.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/logger.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/mcp/__init__.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/models/__init__.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/models/_openai_shared.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/models/chatcmpl_helpers.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/models/fake_id.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/models/interface.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/models/multi_provider.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/models/openai_chatcompletions.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/models/openai_provider.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/prompts.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/py.typed +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/repl.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/result.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/run_context.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/stream_events.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/strict_schema.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/tracing/__init__.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/tracing/create.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/tracing/logger.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/tracing/processor_interface.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/tracing/processors.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/tracing/provider.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/tracing/scope.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/tracing/setup.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/tracing/span_data.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/tracing/spans.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/tracing/traces.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/tracing/util.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/usage.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/util/__init__.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/util/_coro.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/util/_error_tracing.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/util/_json.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/util/_pretty_print.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/util/_transforms.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/util/_types.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/version.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/voice/__init__.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/voice/events.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/voice/exceptions.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/voice/imports.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/voice/input.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/voice/model.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/voice/models/__init__.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/voice/models/openai_model_provider.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/voice/models/openai_tts.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/voice/pipeline_config.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/voice/result.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/src/agents/voice/utils.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/README.md +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/__init__.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/conftest.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/fake_model.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/fastapi/__init__.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/fastapi/streaming_app.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/fastapi/test_streaming_context.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/mcp/__init__.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/mcp/conftest.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/mcp/test_caching.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/mcp/test_connect_disconnect.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/mcp/test_mcp_tracing.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/mcp/test_mcp_util.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/mcp/test_runner_calls_mcp.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/mcp/test_server_errors.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/models/__init__.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/models/conftest.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/models/test_kwargs_functionality.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/models/test_litellm_chatcompletions_stream.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/models/test_litellm_extra_body.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/models/test_map.py +0 -0
- {openai_agents-0.1.0/tests/voice → openai_agents-0.2.0/tests/realtime}/__init__.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_agent_config.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_agent_hooks.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_agent_prompt.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_agent_runner.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_agent_runner_streamed.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_agent_tracing.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_cancel_streaming.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_computer_action.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_config.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_doc_parsing.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_extension_filters.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_extra_headers.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_global_hooks.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_guardrails.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_handoff_tool.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_max_turns.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_openai_chatcompletions.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_openai_chatcompletions_converter.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_openai_chatcompletions_stream.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_openai_responses_converter.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_output_tool.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_pretty_print.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_repl.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_responses.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_responses_tracing.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_result_cast.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_run.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_run_config.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_run_error_details.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_run_step_execution.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_strict_schema.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_tool_choice_reset.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_tool_converter.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_tool_use_behavior.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_trace_processor.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_tracing.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_tracing_errors.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_tracing_errors_streamed.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_usage.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/test_visualization.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/testing_processor.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/tracing/test_processor_api_key.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/voice/conftest.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/voice/fake_models.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/voice/helpers.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/voice/test_input.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/voice/test_openai_tts.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/voice/test_pipeline.py +0 -0
- {openai_agents-0.1.0 → openai_agents-0.2.0}/tests/voice/test_workflow.py +0 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
// Use IntelliSense to learn about possible attributes.
|
|
3
|
+
// Hover to view descriptions of existing attributes.
|
|
4
|
+
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
|
5
|
+
"version": "0.2.0",
|
|
6
|
+
"configurations": [
|
|
7
|
+
{
|
|
8
|
+
"name": "Python Debugger: Python File",
|
|
9
|
+
"type": "debugpy",
|
|
10
|
+
"request": "launch",
|
|
11
|
+
"program": "${file}"
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
}
|
|
@@ -7,6 +7,10 @@ format:
|
|
|
7
7
|
uv run ruff format
|
|
8
8
|
uv run ruff check --fix
|
|
9
9
|
|
|
10
|
+
.PHONY: format-check
|
|
11
|
+
format-check:
|
|
12
|
+
uv run ruff format --check
|
|
13
|
+
|
|
10
14
|
.PHONY: lint
|
|
11
15
|
lint:
|
|
12
16
|
uv run ruff check
|
|
@@ -55,5 +59,5 @@ serve-docs:
|
|
|
55
59
|
deploy-docs:
|
|
56
60
|
uv run mkdocs gh-deploy --force --verbose
|
|
57
61
|
|
|
58
|
-
|
|
59
|
-
|
|
62
|
+
.PHONY: check
|
|
63
|
+
check: format-check lint mypy tests
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openai-agents
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: OpenAI Agents SDK
|
|
5
5
|
Project-URL: Homepage, https://openai.github.io/openai-agents-python/
|
|
6
6
|
Project-URL: Repository, https://github.com/openai/openai-agents-python
|
|
@@ -21,13 +21,15 @@ 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.9.4; python_version >= '3.10'
|
|
24
|
-
Requires-Dist: openai
|
|
24
|
+
Requires-Dist: openai<2,>=1.93.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
|
|
28
28
|
Requires-Dist: typing-extensions<5,>=4.12.2
|
|
29
29
|
Provides-Extra: litellm
|
|
30
30
|
Requires-Dist: litellm<2,>=1.67.4.post1; extra == 'litellm'
|
|
31
|
+
Provides-Extra: realtime
|
|
32
|
+
Requires-Dist: websockets<16,>=15.0; extra == 'realtime'
|
|
31
33
|
Provides-Extra: viz
|
|
32
34
|
Requires-Dist: graphviz>=0.17; extra == 'viz'
|
|
33
35
|
Provides-Extra: voice
|
|
@@ -49,10 +51,119 @@ The OpenAI Agents SDK is a lightweight yet powerful framework for building multi
|
|
|
49
51
|
1. [**Agents**](https://openai.github.io/openai-agents-python/agents): LLMs configured with instructions, tools, guardrails, and handoffs
|
|
50
52
|
2. [**Handoffs**](https://openai.github.io/openai-agents-python/handoffs/): A specialized tool call used by the Agents SDK for transferring control between agents
|
|
51
53
|
3. [**Guardrails**](https://openai.github.io/openai-agents-python/guardrails/): Configurable safety checks for input and output validation
|
|
52
|
-
4. [**
|
|
54
|
+
4. [**Sessions**](#sessions): Automatic conversation history management across agent runs
|
|
55
|
+
5. [**Tracing**](https://openai.github.io/openai-agents-python/tracing/): Built-in tracking of agent runs, allowing you to view, debug and optimize your workflows
|
|
53
56
|
|
|
54
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.
|
|
55
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
|
+
|
|
56
167
|
## Get started
|
|
57
168
|
|
|
58
169
|
1. Set up your Python environment
|
|
@@ -207,10 +318,16 @@ make sync
|
|
|
207
318
|
|
|
208
319
|
2. (After making changes) lint/test
|
|
209
320
|
|
|
321
|
+
```
|
|
322
|
+
make check # run tests linter and typechecker
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
Or to run them individually:
|
|
210
326
|
```
|
|
211
327
|
make tests # run tests
|
|
212
328
|
make mypy # run typechecker
|
|
213
329
|
make lint # run linter
|
|
330
|
+
make format-check # run style checker
|
|
214
331
|
```
|
|
215
332
|
|
|
216
333
|
## Acknowledgements
|
|
@@ -12,10 +12,119 @@ The OpenAI Agents SDK is a lightweight yet powerful framework for building multi
|
|
|
12
12
|
1. [**Agents**](https://openai.github.io/openai-agents-python/agents): LLMs configured with instructions, tools, guardrails, and handoffs
|
|
13
13
|
2. [**Handoffs**](https://openai.github.io/openai-agents-python/handoffs/): A specialized tool call used by the Agents SDK for transferring control between agents
|
|
14
14
|
3. [**Guardrails**](https://openai.github.io/openai-agents-python/guardrails/): Configurable safety checks for input and output validation
|
|
15
|
-
4. [**
|
|
15
|
+
4. [**Sessions**](#sessions): Automatic conversation history management across agent runs
|
|
16
|
+
5. [**Tracing**](https://openai.github.io/openai-agents-python/tracing/): Built-in tracking of agent runs, allowing you to view, debug and optimize your workflows
|
|
16
17
|
|
|
17
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.
|
|
18
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
|
+
|
|
19
128
|
## Get started
|
|
20
129
|
|
|
21
130
|
1. Set up your Python environment
|
|
@@ -170,10 +279,16 @@ make sync
|
|
|
170
279
|
|
|
171
280
|
2. (After making changes) lint/test
|
|
172
281
|
|
|
282
|
+
```
|
|
283
|
+
make check # run tests linter and typechecker
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
Or to run them individually:
|
|
173
287
|
```
|
|
174
288
|
make tests # run tests
|
|
175
289
|
make mypy # run typechecker
|
|
176
290
|
make lint # run linter
|
|
291
|
+
make format-check # run style checker
|
|
177
292
|
```
|
|
178
293
|
|
|
179
294
|
## Acknowledgements
|
|
@@ -6,6 +6,7 @@ Agents are the core building block in your apps. An agent is a large language mo
|
|
|
6
6
|
|
|
7
7
|
The most common properties of an agent you'll configure are:
|
|
8
8
|
|
|
9
|
+
- `name`: A required string that identifies your agent.
|
|
9
10
|
- `instructions`: also known as a developer message or system prompt.
|
|
10
11
|
- `model`: which LLM to use, and optional `model_settings` to configure model tuning parameters like temperature, top_p, etc.
|
|
11
12
|
- `tools`: Tools that the agent can use to achieve its tasks.
|
|
@@ -40,3 +40,6 @@ Check out a variety of sample implementations of the SDK in the examples section
|
|
|
40
40
|
|
|
41
41
|
- **[voice](https://github.com/openai/openai-agents-python/tree/main/examples/voice):**
|
|
42
42
|
See examples of voice agents, using our TTS and STT models.
|
|
43
|
+
|
|
44
|
+
- **[realtime](https://github.com/openai/openai-agents-python/tree/main/examples/realtime):**
|
|
45
|
+
Examples showing how to build realtime experiences using the SDK.
|
|
@@ -5,6 +5,7 @@ The [OpenAI Agents SDK](https://github.com/openai/openai-agents-python) enables
|
|
|
5
5
|
- **Agents**, which are LLMs equipped with instructions and tools
|
|
6
6
|
- **Handoffs**, which allow agents to delegate to other agents for specific tasks
|
|
7
7
|
- **Guardrails**, which enable the inputs to agents to be validated
|
|
8
|
+
- **Sessions**, which automatically maintains conversation history across agent runs
|
|
8
9
|
|
|
9
10
|
In combination with Python, these primitives are powerful enough to express complex relationships between tools and agents, and allow you to build real-world applications without a steep learning curve. In addition, the SDK comes with built-in **tracing** that lets you visualize and debug your agentic flows, as well as evaluate them and even fine-tune models for your application.
|
|
10
11
|
|
|
@@ -21,6 +22,7 @@ Here are the main features of the SDK:
|
|
|
21
22
|
- Python-first: Use built-in language features to orchestrate and chain agents, rather than needing to learn new abstractions.
|
|
22
23
|
- Handoffs: A powerful feature to coordinate and delegate between multiple agents.
|
|
23
24
|
- Guardrails: Run input validations and checks in parallel to your agents, breaking early if the checks fail.
|
|
25
|
+
- Sessions: Automatic conversation history management across agent runs, eliminating manual state handling.
|
|
24
26
|
- Function tools: Turn any Python function into a tool, with automatic schema generation and Pydantic-powered validation.
|
|
25
27
|
- Tracing: Built-in tracing that lets you visualize, debug and monitor your workflows, as well as use the OpenAI suite of evaluation, fine-tuning and distillation tools.
|
|
26
28
|
|
|
@@ -4,7 +4,7 @@ The [Model context protocol](https://modelcontextprotocol.io/introduction) (aka
|
|
|
4
4
|
|
|
5
5
|
> MCP is an open protocol that standardizes how applications provide context to LLMs. Think of MCP like a USB-C port for AI applications. Just as USB-C provides a standardized way to connect your devices to various peripherals and accessories, MCP provides a standardized way to connect AI models to different data sources and tools.
|
|
6
6
|
|
|
7
|
-
The Agents SDK has support for MCP. This enables you to use a wide range of MCP servers to provide tools to your Agents.
|
|
7
|
+
The Agents SDK has support for MCP. This enables you to use a wide range of MCP servers to provide tools and prompts to your Agents.
|
|
8
8
|
|
|
9
9
|
## MCP servers
|
|
10
10
|
|
|
@@ -135,6 +135,38 @@ The `ToolFilterContext` provides access to:
|
|
|
135
135
|
- `agent`: The agent requesting the tools
|
|
136
136
|
- `server_name`: The name of the MCP server
|
|
137
137
|
|
|
138
|
+
## Prompts
|
|
139
|
+
|
|
140
|
+
MCP servers can also provide prompts that can be used to dynamically generate agent instructions. This allows you to create reusable instruction templates that can be customized with parameters.
|
|
141
|
+
|
|
142
|
+
### Using prompts
|
|
143
|
+
|
|
144
|
+
MCP servers that support prompts provide two key methods:
|
|
145
|
+
|
|
146
|
+
- `list_prompts()`: Lists all available prompts on the server
|
|
147
|
+
- `get_prompt(name, arguments)`: Gets a specific prompt with optional parameters
|
|
148
|
+
|
|
149
|
+
```python
|
|
150
|
+
# List available prompts
|
|
151
|
+
prompts_result = await server.list_prompts()
|
|
152
|
+
for prompt in prompts_result.prompts:
|
|
153
|
+
print(f"Prompt: {prompt.name} - {prompt.description}")
|
|
154
|
+
|
|
155
|
+
# Get a specific prompt with parameters
|
|
156
|
+
prompt_result = await server.get_prompt(
|
|
157
|
+
"generate_code_review_instructions",
|
|
158
|
+
{"focus": "security vulnerabilities", "language": "python"}
|
|
159
|
+
)
|
|
160
|
+
instructions = prompt_result.messages[0].content.text
|
|
161
|
+
|
|
162
|
+
# Use the prompt-generated instructions with an Agent
|
|
163
|
+
agent = Agent(
|
|
164
|
+
name="Code Reviewer",
|
|
165
|
+
instructions=instructions, # Instructions from MCP prompt
|
|
166
|
+
mcp_servers=[server]
|
|
167
|
+
)
|
|
168
|
+
```
|
|
169
|
+
|
|
138
170
|
## Caching
|
|
139
171
|
|
|
140
172
|
Every time an Agent runs, it calls `list_tools()` on the MCP server. This can be a latency hit, especially if the server is a remote server. To automatically cache the list of tools, you can pass `cache_tools_list=True` to [`MCPServerStdio`][agents.mcp.server.MCPServerStdio], [`MCPServerSse`][agents.mcp.server.MCPServerSse], and [`MCPServerStreamableHttp`][agents.mcp.server.MCPServerStreamableHttp]. You should only do this if you're certain the tool list will not change.
|
|
@@ -19,6 +19,10 @@ We will increment `Z` for non-breaking changes:
|
|
|
19
19
|
|
|
20
20
|
## Breaking change changelog
|
|
21
21
|
|
|
22
|
+
### 0.2.0
|
|
23
|
+
|
|
24
|
+
In this version, a few places that used to take `Agent` as an arg, now take `AgentBase` as an arg instead. For example, the `list_tools()` call in MCP servers. This is a purely typing change, you will still receive `Agent` objects. To update, just fix type errors by replacing `Agent` with `AgentBase`.
|
|
25
|
+
|
|
22
26
|
### 0.1.0
|
|
23
27
|
|
|
24
28
|
In this version, [`MCPServer.list_tools()`][agents.mcp.server.MCPServer] has two new params: `run_context` and `agent`. You'll need to add these params to any classes that subclass `MCPServer`.
|
|
@@ -65,7 +65,9 @@ Calling any of the run methods can result in one or more agents running (and hen
|
|
|
65
65
|
|
|
66
66
|
At the end of the agent run, you can choose what to show to the user. For example, you might show the user every new item generated by the agents, or just the final output. Either way, the user might then ask a followup question, in which case you can call the run method again.
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
### Manual conversation management
|
|
69
|
+
|
|
70
|
+
You can manually manage conversation history using the [`RunResultBase.to_input_list()`][agents.result.RunResultBase.to_input_list] method to get the inputs for the next turn:
|
|
69
71
|
|
|
70
72
|
```python
|
|
71
73
|
async def main():
|
|
@@ -84,6 +86,39 @@ async def main():
|
|
|
84
86
|
# California
|
|
85
87
|
```
|
|
86
88
|
|
|
89
|
+
### Automatic conversation management with Sessions
|
|
90
|
+
|
|
91
|
+
For a simpler approach, you can use [Sessions](sessions.md) to automatically handle conversation history without manually calling `.to_input_list()`:
|
|
92
|
+
|
|
93
|
+
```python
|
|
94
|
+
from agents import Agent, Runner, SQLiteSession
|
|
95
|
+
|
|
96
|
+
async def main():
|
|
97
|
+
agent = Agent(name="Assistant", instructions="Reply very concisely.")
|
|
98
|
+
|
|
99
|
+
# Create session instance
|
|
100
|
+
session = SQLiteSession("conversation_123")
|
|
101
|
+
|
|
102
|
+
with trace(workflow_name="Conversation", group_id=thread_id):
|
|
103
|
+
# First turn
|
|
104
|
+
result = await Runner.run(agent, "What city is the Golden Gate Bridge in?", session=session)
|
|
105
|
+
print(result.final_output)
|
|
106
|
+
# San Francisco
|
|
107
|
+
|
|
108
|
+
# Second turn - agent automatically remembers previous context
|
|
109
|
+
result = await Runner.run(agent, "What state is it in?", session=session)
|
|
110
|
+
print(result.final_output)
|
|
111
|
+
# California
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Sessions automatically:
|
|
115
|
+
|
|
116
|
+
- Retrieves conversation history before each run
|
|
117
|
+
- Stores new messages after each run
|
|
118
|
+
- Maintains separate conversations for different session IDs
|
|
119
|
+
|
|
120
|
+
See the [Sessions documentation](sessions.md) for more details.
|
|
121
|
+
|
|
87
122
|
## Exceptions
|
|
88
123
|
|
|
89
124
|
The SDK raises exceptions in certain cases. The full list is in [`agents.exceptions`][]. As an overview:
|
|
@@ -266,7 +266,9 @@ def translate_single_source_file(file_path: str) -> None:
|
|
|
266
266
|
|
|
267
267
|
def main():
|
|
268
268
|
parser = argparse.ArgumentParser(description="Translate documentation files")
|
|
269
|
-
parser.add_argument(
|
|
269
|
+
parser.add_argument(
|
|
270
|
+
"--file", type=str, help="Specific file to translate (relative to docs directory)"
|
|
271
|
+
)
|
|
270
272
|
args = parser.parse_args()
|
|
271
273
|
|
|
272
274
|
if args.file:
|