openai-agents 0.0.2__tar.gz → 0.0.3__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.0.3/.gitignore +144 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/PKG-INFO +11 -9
- {openai_agents-0.0.2 → openai_agents-0.0.3}/README.md +9 -7
- {openai_agents-0.0.2/tests → openai_agents-0.0.3}/docs/index.md +1 -1
- {openai_agents-0.0.2/tests → openai_agents-0.0.3}/examples/agent_patterns/README.md +1 -1
- {openai_agents-0.0.2/tests → openai_agents-0.0.3}/examples/tools/computer_use.py +5 -4
- {openai_agents-0.0.2/tests → openai_agents-0.0.3}/pyproject.toml +2 -2
- {openai_agents-0.0.2/tests → openai_agents-0.0.3}/src/agents/_run_impl.py +2 -2
- {openai_agents-0.0.2/tests → openai_agents-0.0.3}/src/agents/agent_output.py +1 -1
- {openai_agents-0.0.2/tests → openai_agents-0.0.3}/src/agents/items.py +3 -3
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/model_settings.py +1 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/models/openai_responses.py +1 -1
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/tool.py +2 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_config.py +6 -3
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_items_helpers.py +9 -7
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_openai_responses_converter.py +2 -2
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_run_step_processing.py +3 -3
- {openai_agents-0.0.2 → openai_agents-0.0.3}/uv.lock +5 -5
- openai_agents-0.0.2/docs/index.md +0 -52
- openai_agents-0.0.2/examples/agent_patterns/README.md +0 -54
- openai_agents-0.0.2/examples/tools/computer_use.py +0 -165
- openai_agents-0.0.2/pyproject.toml +0 -119
- openai_agents-0.0.2/src/agents/_run_impl.py +0 -792
- openai_agents-0.0.2/src/agents/agent_output.py +0 -144
- openai_agents-0.0.2/src/agents/items.py +0 -246
- openai_agents-0.0.2/src/openai_agents.egg-info/PKG-INFO +0 -217
- openai_agents-0.0.2/src/openai_agents.egg-info/SOURCES.txt +0 -81
- openai_agents-0.0.2/src/openai_agents.egg-info/dependency_links.txt +0 -1
- openai_agents-0.0.2/src/openai_agents.egg-info/requires.txt +0 -6
- openai_agents-0.0.2/src/openai_agents.egg-info/top_level.txt +0 -1
- openai_agents-0.0.2/tests/LICENSE +0 -21
- openai_agents-0.0.2/tests/Makefile +0 -37
- openai_agents-0.0.2/tests/README.md +0 -174
- openai_agents-0.0.2/tests/docs/agents.md +0 -131
- openai_agents-0.0.2/tests/docs/assets/images/favicon-platform.svg +0 -16
- openai_agents-0.0.2/tests/docs/assets/images/orchestration.png +0 -0
- openai_agents-0.0.2/tests/docs/assets/logo.svg +0 -15
- openai_agents-0.0.2/tests/docs/config.md +0 -94
- openai_agents-0.0.2/tests/docs/context.md +0 -76
- openai_agents-0.0.2/tests/docs/guardrails.md +0 -154
- openai_agents-0.0.2/tests/docs/handoffs.md +0 -113
- openai_agents-0.0.2/tests/docs/models.md +0 -73
- openai_agents-0.0.2/tests/docs/multi_agent.md +0 -37
- openai_agents-0.0.2/tests/docs/quickstart.md +0 -186
- openai_agents-0.0.2/tests/docs/ref/agent.md +0 -3
- openai_agents-0.0.2/tests/docs/ref/agent_output.md +0 -3
- openai_agents-0.0.2/tests/docs/ref/exceptions.md +0 -3
- openai_agents-0.0.2/tests/docs/ref/extensions/handoff_filters.md +0 -3
- openai_agents-0.0.2/tests/docs/ref/extensions/handoff_prompt.md +0 -8
- openai_agents-0.0.2/tests/docs/ref/function_schema.md +0 -3
- openai_agents-0.0.2/tests/docs/ref/guardrail.md +0 -3
- openai_agents-0.0.2/tests/docs/ref/handoffs.md +0 -3
- openai_agents-0.0.2/tests/docs/ref/index.md +0 -13
- openai_agents-0.0.2/tests/docs/ref/items.md +0 -3
- openai_agents-0.0.2/tests/docs/ref/lifecycle.md +0 -6
- openai_agents-0.0.2/tests/docs/ref/model_settings.md +0 -3
- openai_agents-0.0.2/tests/docs/ref/models/interface.md +0 -3
- openai_agents-0.0.2/tests/docs/ref/models/openai_chatcompletions.md +0 -3
- openai_agents-0.0.2/tests/docs/ref/models/openai_responses.md +0 -3
- openai_agents-0.0.2/tests/docs/ref/result.md +0 -3
- openai_agents-0.0.2/tests/docs/ref/run.md +0 -8
- openai_agents-0.0.2/tests/docs/ref/run_context.md +0 -3
- openai_agents-0.0.2/tests/docs/ref/stream_events.md +0 -3
- openai_agents-0.0.2/tests/docs/ref/tool.md +0 -3
- openai_agents-0.0.2/tests/docs/ref/tracing/create.md +0 -3
- openai_agents-0.0.2/tests/docs/ref/tracing/index.md +0 -3
- openai_agents-0.0.2/tests/docs/ref/tracing/processor_interface.md +0 -3
- openai_agents-0.0.2/tests/docs/ref/tracing/processors.md +0 -3
- openai_agents-0.0.2/tests/docs/ref/tracing/scope.md +0 -3
- openai_agents-0.0.2/tests/docs/ref/tracing/setup.md +0 -3
- openai_agents-0.0.2/tests/docs/ref/tracing/span_data.md +0 -3
- openai_agents-0.0.2/tests/docs/ref/tracing/spans.md +0 -9
- openai_agents-0.0.2/tests/docs/ref/tracing/traces.md +0 -3
- openai_agents-0.0.2/tests/docs/ref/tracing/util.md +0 -3
- openai_agents-0.0.2/tests/docs/ref/usage.md +0 -3
- openai_agents-0.0.2/tests/docs/results.md +0 -52
- openai_agents-0.0.2/tests/docs/running_agents.md +0 -95
- openai_agents-0.0.2/tests/docs/streaming.md +0 -87
- openai_agents-0.0.2/tests/docs/stylesheets/extra.css +0 -194
- openai_agents-0.0.2/tests/docs/tools.md +0 -270
- openai_agents-0.0.2/tests/docs/tracing.md +0 -95
- openai_agents-0.0.2/tests/examples/__init__.py +0 -3
- openai_agents-0.0.2/tests/examples/agent_patterns/agents_as_tools.py +0 -79
- openai_agents-0.0.2/tests/examples/agent_patterns/deterministic.py +0 -80
- openai_agents-0.0.2/tests/examples/agent_patterns/input_guardrails.py +0 -105
- openai_agents-0.0.2/tests/examples/agent_patterns/llm_as_a_judge.py +0 -76
- openai_agents-0.0.2/tests/examples/agent_patterns/output_guardrails.py +0 -80
- openai_agents-0.0.2/tests/examples/agent_patterns/parallelization.py +0 -61
- openai_agents-0.0.2/tests/examples/agent_patterns/routing.py +0 -70
- openai_agents-0.0.2/tests/examples/basic/agent_lifecycle_example.py +0 -112
- openai_agents-0.0.2/tests/examples/basic/dynamic_system_prompt.py +0 -69
- openai_agents-0.0.2/tests/examples/basic/hello_world.py +0 -20
- openai_agents-0.0.2/tests/examples/basic/lifecycle_example.py +0 -118
- openai_agents-0.0.2/tests/examples/basic/stream_items.py +0 -65
- openai_agents-0.0.2/tests/examples/basic/stream_text.py +0 -21
- openai_agents-0.0.2/tests/examples/customer_service/main.py +0 -169
- openai_agents-0.0.2/tests/examples/handoffs/message_filter.py +0 -176
- openai_agents-0.0.2/tests/examples/handoffs/message_filter_streaming.py +0 -176
- openai_agents-0.0.2/tests/examples/research_bot/README.md +0 -25
- openai_agents-0.0.2/tests/examples/research_bot/__init__.py +0 -1
- openai_agents-0.0.2/tests/examples/research_bot/agents/__init__.py +0 -0
- openai_agents-0.0.2/tests/examples/research_bot/agents/planner_agent.py +0 -29
- openai_agents-0.0.2/tests/examples/research_bot/agents/search_agent.py +0 -18
- openai_agents-0.0.2/tests/examples/research_bot/agents/writer_agent.py +0 -33
- openai_agents-0.0.2/tests/examples/research_bot/main.py +0 -12
- openai_agents-0.0.2/tests/examples/research_bot/manager.py +0 -119
- openai_agents-0.0.2/tests/examples/research_bot/printer.py +0 -41
- openai_agents-0.0.2/tests/examples/research_bot/sample_outputs/product_recs.md +0 -180
- openai_agents-0.0.2/tests/examples/research_bot/sample_outputs/product_recs.txt +0 -212
- openai_agents-0.0.2/tests/examples/research_bot/sample_outputs/vacation.md +0 -177
- openai_agents-0.0.2/tests/examples/research_bot/sample_outputs/vacation.txt +0 -206
- openai_agents-0.0.2/tests/examples/tools/file_search.py +0 -36
- openai_agents-0.0.2/tests/examples/tools/web_search.py +0 -23
- openai_agents-0.0.2/tests/mkdocs.yml +0 -121
- openai_agents-0.0.2/tests/src/agents/__init__.py +0 -223
- openai_agents-0.0.2/tests/src/agents/_config.py +0 -23
- openai_agents-0.0.2/tests/src/agents/_debug.py +0 -17
- openai_agents-0.0.2/tests/src/agents/_utils.py +0 -61
- openai_agents-0.0.2/tests/src/agents/agent.py +0 -159
- openai_agents-0.0.2/tests/src/agents/computer.py +0 -107
- openai_agents-0.0.2/tests/src/agents/exceptions.py +0 -63
- openai_agents-0.0.2/tests/src/agents/extensions/__init__.py +0 -0
- openai_agents-0.0.2/tests/src/agents/extensions/handoff_filters.py +0 -67
- openai_agents-0.0.2/tests/src/agents/extensions/handoff_prompt.py +0 -19
- openai_agents-0.0.2/tests/src/agents/function_schema.py +0 -340
- openai_agents-0.0.2/tests/src/agents/guardrail.py +0 -320
- openai_agents-0.0.2/tests/src/agents/handoffs.py +0 -236
- openai_agents-0.0.2/tests/src/agents/lifecycle.py +0 -105
- openai_agents-0.0.2/tests/src/agents/logger.py +0 -3
- openai_agents-0.0.2/tests/src/agents/model_settings.py +0 -35
- openai_agents-0.0.2/tests/src/agents/models/__init__.py +0 -0
- openai_agents-0.0.2/tests/src/agents/models/_openai_shared.py +0 -34
- openai_agents-0.0.2/tests/src/agents/models/fake_id.py +0 -5
- openai_agents-0.0.2/tests/src/agents/models/interface.py +0 -107
- openai_agents-0.0.2/tests/src/agents/models/openai_chatcompletions.py +0 -952
- openai_agents-0.0.2/tests/src/agents/models/openai_provider.py +0 -65
- openai_agents-0.0.2/tests/src/agents/models/openai_responses.py +0 -384
- openai_agents-0.0.2/tests/src/agents/result.py +0 -220
- openai_agents-0.0.2/tests/src/agents/run.py +0 -904
- openai_agents-0.0.2/tests/src/agents/run_context.py +0 -26
- openai_agents-0.0.2/tests/src/agents/stream_events.py +0 -58
- openai_agents-0.0.2/tests/src/agents/strict_schema.py +0 -167
- openai_agents-0.0.2/tests/src/agents/tool.py +0 -286
- openai_agents-0.0.2/tests/src/agents/tracing/__init__.py +0 -97
- openai_agents-0.0.2/tests/src/agents/tracing/create.py +0 -306
- openai_agents-0.0.2/tests/src/agents/tracing/logger.py +0 -3
- openai_agents-0.0.2/tests/src/agents/tracing/processor_interface.py +0 -69
- openai_agents-0.0.2/tests/src/agents/tracing/processors.py +0 -261
- openai_agents-0.0.2/tests/src/agents/tracing/scope.py +0 -45
- openai_agents-0.0.2/tests/src/agents/tracing/setup.py +0 -211
- openai_agents-0.0.2/tests/src/agents/tracing/span_data.py +0 -188
- openai_agents-0.0.2/tests/src/agents/tracing/spans.py +0 -264
- openai_agents-0.0.2/tests/src/agents/tracing/traces.py +0 -195
- openai_agents-0.0.2/tests/src/agents/tracing/util.py +0 -17
- openai_agents-0.0.2/tests/src/agents/usage.py +0 -22
- openai_agents-0.0.2/tests/src/agents/version.py +0 -7
- openai_agents-0.0.2/tests/src/openai_agents.egg-info/PKG-INFO +0 -217
- openai_agents-0.0.2/tests/src/openai_agents.egg-info/SOURCES.txt +0 -81
- openai_agents-0.0.2/tests/src/openai_agents.egg-info/dependency_links.txt +0 -1
- openai_agents-0.0.2/tests/src/openai_agents.egg-info/requires.txt +0 -6
- openai_agents-0.0.2/tests/src/openai_agents.egg-info/top_level.txt +0 -1
- {openai_agents-0.0.2 → openai_agents-0.0.3}/.github/workflows/docs.yml +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/.github/workflows/publish.yml +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/.github/workflows/tests.yml +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/.prettierrc +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/LICENSE +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/Makefile +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/agents.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/assets/images/favicon-platform.svg +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/assets/images/orchestration.png +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/assets/logo.svg +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/config.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/context.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/guardrails.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/handoffs.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/models.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/multi_agent.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/quickstart.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/agent.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/agent_output.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/exceptions.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/extensions/handoff_filters.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/extensions/handoff_prompt.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/function_schema.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/guardrail.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/handoffs.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/index.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/items.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/lifecycle.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/model_settings.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/models/interface.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/models/openai_chatcompletions.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/models/openai_responses.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/result.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/run.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/run_context.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/stream_events.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/tool.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/tracing/create.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/tracing/index.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/tracing/processor_interface.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/tracing/processors.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/tracing/scope.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/tracing/setup.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/tracing/span_data.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/tracing/spans.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/tracing/traces.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/tracing/util.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/ref/usage.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/results.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/running_agents.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/streaming.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/stylesheets/extra.css +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/tools.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/docs/tracing.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/__init__.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/agent_patterns/agents_as_tools.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/agent_patterns/deterministic.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/agent_patterns/input_guardrails.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/agent_patterns/llm_as_a_judge.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/agent_patterns/output_guardrails.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/agent_patterns/parallelization.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/agent_patterns/routing.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/basic/agent_lifecycle_example.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/basic/dynamic_system_prompt.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/basic/hello_world.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/basic/lifecycle_example.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/basic/stream_items.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/basic/stream_text.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/customer_service/main.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/handoffs/message_filter.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/handoffs/message_filter_streaming.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/research_bot/README.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/research_bot/__init__.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/research_bot/agents/__init__.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/research_bot/agents/planner_agent.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/research_bot/agents/search_agent.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/research_bot/agents/writer_agent.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/research_bot/main.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/research_bot/manager.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/research_bot/printer.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/research_bot/sample_outputs/product_recs.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/research_bot/sample_outputs/product_recs.txt +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/research_bot/sample_outputs/vacation.md +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/research_bot/sample_outputs/vacation.txt +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/tools/file_search.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/examples/tools/web_search.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/mkdocs.yml +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/__init__.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/_config.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/_debug.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/_utils.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/agent.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/computer.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/exceptions.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/extensions/__init__.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/extensions/handoff_filters.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/extensions/handoff_prompt.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/function_schema.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/guardrail.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/handoffs.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/lifecycle.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/logger.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/models/__init__.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/models/_openai_shared.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/models/fake_id.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/models/interface.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/models/openai_chatcompletions.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/models/openai_provider.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/result.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/run.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/run_context.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/stream_events.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/strict_schema.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/tracing/__init__.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/tracing/create.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/tracing/logger.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/tracing/processor_interface.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/tracing/processors.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/tracing/scope.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/tracing/setup.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/tracing/span_data.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/tracing/spans.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/tracing/traces.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/tracing/util.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/usage.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/src/agents/version.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/__init__.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/conftest.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/fake_model.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_agent_config.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_agent_hooks.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_agent_runner.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_agent_runner_streamed.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_agent_tracing.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_computer_action.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_doc_parsing.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_extension_filters.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_function_schema.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_function_tool.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_function_tool_decorator.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_global_hooks.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_guardrails.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_handoff_tool.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_max_turns.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_openai_chatcompletions.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_openai_chatcompletions_converter.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_openai_chatcompletions_stream.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_output_tool.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_responses.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_responses_tracing.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_result_cast.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_run_config.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_run_step_execution.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_strict_schema.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_tool_converter.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_trace_processor.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_tracing.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_tracing_errors.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/test_tracing_errors_streamed.py +0 -0
- {openai_agents-0.0.2 → openai_agents-0.0.3}/tests/testing_processor.py +0 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# macOS Files
|
|
2
|
+
.DS_Store
|
|
3
|
+
|
|
4
|
+
# Byte-compiled / optimized / DLL files
|
|
5
|
+
__pycache__/
|
|
6
|
+
**/__pycache__/
|
|
7
|
+
*.py[cod]
|
|
8
|
+
*$py.class
|
|
9
|
+
|
|
10
|
+
# C extensions
|
|
11
|
+
*.so
|
|
12
|
+
|
|
13
|
+
# Distribution / packaging
|
|
14
|
+
.Python
|
|
15
|
+
build/
|
|
16
|
+
develop-eggs/
|
|
17
|
+
dist/
|
|
18
|
+
downloads/
|
|
19
|
+
eggs/
|
|
20
|
+
.eggs/
|
|
21
|
+
lib/
|
|
22
|
+
lib64/
|
|
23
|
+
parts/
|
|
24
|
+
sdist/
|
|
25
|
+
var/
|
|
26
|
+
wheels/
|
|
27
|
+
share/python-wheels/
|
|
28
|
+
*.egg-info/
|
|
29
|
+
.installed.cfg
|
|
30
|
+
*.egg
|
|
31
|
+
MANIFEST
|
|
32
|
+
|
|
33
|
+
# PyInstaller
|
|
34
|
+
*.manifest
|
|
35
|
+
*.spec
|
|
36
|
+
|
|
37
|
+
# Installer logs
|
|
38
|
+
pip-log.txt
|
|
39
|
+
pip-delete-this-directory.txt
|
|
40
|
+
|
|
41
|
+
# Unit test / coverage reports
|
|
42
|
+
htmlcov/
|
|
43
|
+
.tox/
|
|
44
|
+
.nox/
|
|
45
|
+
.coverage
|
|
46
|
+
.coverage.*
|
|
47
|
+
.cache
|
|
48
|
+
nosetests.xml
|
|
49
|
+
coverage.xml
|
|
50
|
+
*.cover
|
|
51
|
+
*.py,cover
|
|
52
|
+
.hypothesis/
|
|
53
|
+
.pytest_cache/
|
|
54
|
+
cover/
|
|
55
|
+
|
|
56
|
+
# Translations
|
|
57
|
+
*.mo
|
|
58
|
+
*.pot
|
|
59
|
+
|
|
60
|
+
# Django stuff:
|
|
61
|
+
*.log
|
|
62
|
+
local_settings.py
|
|
63
|
+
db.sqlite3
|
|
64
|
+
db.sqlite3-journal
|
|
65
|
+
|
|
66
|
+
# Flask stuff:
|
|
67
|
+
instance/
|
|
68
|
+
.webassets-cache
|
|
69
|
+
|
|
70
|
+
# Scrapy stuff:
|
|
71
|
+
.scrapy
|
|
72
|
+
|
|
73
|
+
# Sphinx documentation
|
|
74
|
+
docs/_build/
|
|
75
|
+
|
|
76
|
+
# PyBuilder
|
|
77
|
+
.pybuilder/
|
|
78
|
+
target/
|
|
79
|
+
|
|
80
|
+
# Jupyter Notebook
|
|
81
|
+
.ipynb_checkpoints
|
|
82
|
+
|
|
83
|
+
# IPython
|
|
84
|
+
profile_default/
|
|
85
|
+
ipython_config.py
|
|
86
|
+
|
|
87
|
+
# pdm
|
|
88
|
+
.pdm.toml
|
|
89
|
+
.pdm-python
|
|
90
|
+
.pdm-build/
|
|
91
|
+
|
|
92
|
+
# PEP 582
|
|
93
|
+
__pypackages__/
|
|
94
|
+
|
|
95
|
+
# Celery stuff
|
|
96
|
+
celerybeat-schedule
|
|
97
|
+
celerybeat.pid
|
|
98
|
+
|
|
99
|
+
# SageMath parsed files
|
|
100
|
+
*.sage.py
|
|
101
|
+
|
|
102
|
+
# Environments
|
|
103
|
+
.env
|
|
104
|
+
.venv
|
|
105
|
+
env/
|
|
106
|
+
venv/
|
|
107
|
+
ENV/
|
|
108
|
+
env.bak/
|
|
109
|
+
venv.bak/
|
|
110
|
+
.venv39
|
|
111
|
+
.venv_res
|
|
112
|
+
|
|
113
|
+
# Spyder project settings
|
|
114
|
+
.spyderproject
|
|
115
|
+
.spyproject
|
|
116
|
+
|
|
117
|
+
# Rope project settings
|
|
118
|
+
.ropeproject
|
|
119
|
+
|
|
120
|
+
# mkdocs documentation
|
|
121
|
+
/site
|
|
122
|
+
|
|
123
|
+
# mypy
|
|
124
|
+
.mypy_cache/
|
|
125
|
+
.dmypy.json
|
|
126
|
+
dmypy.json
|
|
127
|
+
|
|
128
|
+
# Pyre type checker
|
|
129
|
+
.pyre/
|
|
130
|
+
|
|
131
|
+
# pytype static type analyzer
|
|
132
|
+
.pytype/
|
|
133
|
+
|
|
134
|
+
# Cython debug symbols
|
|
135
|
+
cython_debug/
|
|
136
|
+
|
|
137
|
+
# PyCharm
|
|
138
|
+
#.idea/
|
|
139
|
+
|
|
140
|
+
# Ruff stuff:
|
|
141
|
+
.ruff_cache/
|
|
142
|
+
|
|
143
|
+
# PyPI configuration file
|
|
144
|
+
.pypirc
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openai-agents
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.3
|
|
4
4
|
Summary: OpenAI Agents SDK
|
|
5
5
|
Project-URL: Homepage, https://github.com/openai/openai-agents-python
|
|
6
6
|
Project-URL: Repository, https://github.com/openai/openai-agents-python
|
|
@@ -19,7 +19,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
19
19
|
Classifier: Typing :: Typed
|
|
20
20
|
Requires-Python: >=3.9
|
|
21
21
|
Requires-Dist: griffe<2,>=1.5.6
|
|
22
|
-
Requires-Dist: openai>=1.66.
|
|
22
|
+
Requires-Dist: openai>=1.66.2
|
|
23
23
|
Requires-Dist: pydantic<3,>=2.10
|
|
24
24
|
Requires-Dist: requests<3,>=2.0
|
|
25
25
|
Requires-Dist: types-requests<3,>=2.0
|
|
@@ -30,16 +30,18 @@ Description-Content-Type: text/markdown
|
|
|
30
30
|
|
|
31
31
|
The OpenAI Agents SDK is a lightweight yet powerful framework for building multi-agent workflows.
|
|
32
32
|
|
|
33
|
-
<img src="docs/
|
|
33
|
+
<img src="https://cdn.openai.com/API/docs/images/orchestration.png" alt="Image of the Agents Tracing UI" style="max-height: 803px;">
|
|
34
34
|
|
|
35
35
|
### Core concepts:
|
|
36
36
|
|
|
37
|
-
1. [**Agents**](
|
|
38
|
-
2. [**Handoffs**](
|
|
39
|
-
3. [**Guardrails**](
|
|
40
|
-
4. [**Tracing**](
|
|
37
|
+
1. [**Agents**](https://openai.github.io/openai-agents-python/agents): LLMs configured with instructions, tools, guardrails, and handoffs
|
|
38
|
+
2. [**Handoffs**](https://openai.github.io/openai-agents-python/handoffs/): Allow agents to transfer control to other agents for specific tasks
|
|
39
|
+
3. [**Guardrails**](https://openai.github.io/openai-agents-python/guardrails/): Configurable safety checks for input and output validation
|
|
40
|
+
4. [**Tracing**](https://openai.github.io/openai-agents-python/tracing/): Built-in tracking of agent runs, allowing you to view, debug and optimize your workflows
|
|
41
41
|
|
|
42
|
-
Explore the [examples](examples) directory to see the SDK in action.
|
|
42
|
+
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.
|
|
43
|
+
|
|
44
|
+
Notably, our SDK [is compatible](https://openai.github.io/openai-agents-python/models/) with any model providers that support the OpenAI Chat Completions API format.
|
|
43
45
|
|
|
44
46
|
## Get started
|
|
45
47
|
|
|
@@ -166,7 +168,7 @@ The Agents SDK is designed to be highly flexible, allowing you to model a wide r
|
|
|
166
168
|
|
|
167
169
|
## Tracing
|
|
168
170
|
|
|
169
|
-
The Agents SDK
|
|
171
|
+
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), and [Braintrust](https://braintrust.dev/docs/guides/traces/integrations#openai-agents-sdk). For more details about how to customize or disable tracing, see [Tracing](http://openai.github.io/openai-agents-python/tracing).
|
|
170
172
|
|
|
171
173
|
## Development (only needed if you need to edit the SDK/examples)
|
|
172
174
|
|
|
@@ -2,16 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
The OpenAI Agents SDK is a lightweight yet powerful framework for building multi-agent workflows.
|
|
4
4
|
|
|
5
|
-
<img src="docs/
|
|
5
|
+
<img src="https://cdn.openai.com/API/docs/images/orchestration.png" alt="Image of the Agents Tracing UI" style="max-height: 803px;">
|
|
6
6
|
|
|
7
7
|
### Core concepts:
|
|
8
8
|
|
|
9
|
-
1. [**Agents**](
|
|
10
|
-
2. [**Handoffs**](
|
|
11
|
-
3. [**Guardrails**](
|
|
12
|
-
4. [**Tracing**](
|
|
9
|
+
1. [**Agents**](https://openai.github.io/openai-agents-python/agents): LLMs configured with instructions, tools, guardrails, and handoffs
|
|
10
|
+
2. [**Handoffs**](https://openai.github.io/openai-agents-python/handoffs/): Allow agents to transfer control to other agents for specific tasks
|
|
11
|
+
3. [**Guardrails**](https://openai.github.io/openai-agents-python/guardrails/): Configurable safety checks for input and output validation
|
|
12
|
+
4. [**Tracing**](https://openai.github.io/openai-agents-python/tracing/): Built-in tracking of agent runs, allowing you to view, debug and optimize your workflows
|
|
13
13
|
|
|
14
|
-
Explore the [examples](examples) directory to see the SDK in action.
|
|
14
|
+
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.
|
|
15
|
+
|
|
16
|
+
Notably, our SDK [is compatible](https://openai.github.io/openai-agents-python/models/) with any model providers that support the OpenAI Chat Completions API format.
|
|
15
17
|
|
|
16
18
|
## Get started
|
|
17
19
|
|
|
@@ -138,7 +140,7 @@ The Agents SDK is designed to be highly flexible, allowing you to model a wide r
|
|
|
138
140
|
|
|
139
141
|
## Tracing
|
|
140
142
|
|
|
141
|
-
The Agents SDK
|
|
143
|
+
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), and [Braintrust](https://braintrust.dev/docs/guides/traces/integrations#openai-agents-sdk). For more details about how to customize or disable tracing, see [Tracing](http://openai.github.io/openai-agents-python/tracing).
|
|
142
144
|
|
|
143
145
|
## Development (only needed if you need to edit the SDK/examples)
|
|
144
146
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# OpenAI Agents SDK
|
|
2
2
|
|
|
3
|
-
The OpenAI Agents SDK enables you to build agentic AI apps in a lightweight, easy to use package with very few abstractions. It's a production-ready upgrade of our previous experimentation for agents, [Swarm](https://github.com/openai/swarm/tree/main). The Agents SDK has a very small set of primitives:
|
|
3
|
+
The [OpenAI Agents SDK](https://github.com/openai/openai-agents-python) enables you to build agentic AI apps in a lightweight, easy to use package with very few abstractions. It's a production-ready upgrade of our previous experimentation for agents, [Swarm](https://github.com/openai/swarm/tree/main). The Agents SDK has a very small set of primitives:
|
|
4
4
|
|
|
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
|
|
@@ -51,4 +51,4 @@ You can definitely do this without any special Agents SDK features by using para
|
|
|
51
51
|
|
|
52
52
|
This is really useful for latency: for example, you might have a very fast model that runs the guardrail and a slow model that runs the actual agent. You wouldn't want to wait for the slow model to finish, so guardrails let you quickly reject invalid inputs.
|
|
53
53
|
|
|
54
|
-
See the [`
|
|
54
|
+
See the [`input_guardrails.py`](./input_guardrails.py) and [`output_guardrails.py`](./output_guardrails.py) files for examples.
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
import base64
|
|
3
|
-
import logging
|
|
4
3
|
from typing import Literal, Union
|
|
5
4
|
|
|
6
5
|
from playwright.async_api import Browser, Page, Playwright, async_playwright
|
|
@@ -16,8 +15,10 @@ from agents import (
|
|
|
16
15
|
trace,
|
|
17
16
|
)
|
|
18
17
|
|
|
19
|
-
|
|
20
|
-
logging
|
|
18
|
+
# Uncomment to see very verbose logs
|
|
19
|
+
# import logging
|
|
20
|
+
# logging.getLogger("openai.agents").setLevel(logging.DEBUG)
|
|
21
|
+
# logging.getLogger("openai.agents").addHandler(logging.StreamHandler())
|
|
21
22
|
|
|
22
23
|
|
|
23
24
|
async def main():
|
|
@@ -28,7 +29,7 @@ async def main():
|
|
|
28
29
|
instructions="You are a helpful agent.",
|
|
29
30
|
tools=[ComputerTool(computer)],
|
|
30
31
|
# Use the computer using model, and set truncation to auto because its required
|
|
31
|
-
model="computer-use-preview
|
|
32
|
+
model="computer-use-preview",
|
|
32
33
|
model_settings=ModelSettings(truncation="auto"),
|
|
33
34
|
)
|
|
34
35
|
result = await Runner.run(agent, "Search for SF sports news and summarize.")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "openai-agents"
|
|
3
|
-
version = "0.0.
|
|
3
|
+
version = "0.0.3"
|
|
4
4
|
description = "OpenAI Agents SDK"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.9"
|
|
@@ -9,7 +9,7 @@ authors = [
|
|
|
9
9
|
{ name = "OpenAI", email = "support@openai.com" },
|
|
10
10
|
]
|
|
11
11
|
dependencies = [
|
|
12
|
-
"openai>=1.66.
|
|
12
|
+
"openai>=1.66.2",
|
|
13
13
|
"pydantic>=2.10, <3",
|
|
14
14
|
"griffe>=1.5.6, <2",
|
|
15
15
|
"typing-extensions>=4.12.2, <5",
|
|
@@ -23,7 +23,7 @@ from openai.types.responses.response_computer_tool_call import (
|
|
|
23
23
|
ActionWait,
|
|
24
24
|
)
|
|
25
25
|
from openai.types.responses.response_input_param import ComputerCallOutput
|
|
26
|
-
from openai.types.responses.
|
|
26
|
+
from openai.types.responses.response_reasoning_item import ResponseReasoningItem
|
|
27
27
|
|
|
28
28
|
from . import _utils
|
|
29
29
|
from .agent import Agent
|
|
@@ -288,7 +288,7 @@ class RunImpl:
|
|
|
288
288
|
items.append(ToolCallItem(raw_item=output, agent=agent))
|
|
289
289
|
elif isinstance(output, ResponseFunctionWebSearch):
|
|
290
290
|
items.append(ToolCallItem(raw_item=output, agent=agent))
|
|
291
|
-
elif isinstance(output,
|
|
291
|
+
elif isinstance(output, ResponseReasoningItem):
|
|
292
292
|
items.append(ReasoningItem(raw_item=output, agent=agent))
|
|
293
293
|
elif isinstance(output, ResponseComputerToolCall):
|
|
294
294
|
items.append(ToolCallItem(raw_item=output, agent=agent))
|
|
@@ -138,7 +138,7 @@ def _type_to_str(t: type[Any]) -> str:
|
|
|
138
138
|
# It's a simple type like `str`, `int`, etc.
|
|
139
139
|
return t.__name__
|
|
140
140
|
elif args:
|
|
141
|
-
args_str =
|
|
141
|
+
args_str = ", ".join(_type_to_str(arg) for arg in args)
|
|
142
142
|
return f"{origin.__name__}[{args_str}]"
|
|
143
143
|
else:
|
|
144
144
|
return str(t)
|
|
@@ -19,7 +19,7 @@ from openai.types.responses import (
|
|
|
19
19
|
ResponseStreamEvent,
|
|
20
20
|
)
|
|
21
21
|
from openai.types.responses.response_input_item_param import ComputerCallOutput, FunctionCallOutput
|
|
22
|
-
from openai.types.responses.
|
|
22
|
+
from openai.types.responses.response_reasoning_item import ResponseReasoningItem
|
|
23
23
|
from pydantic import BaseModel
|
|
24
24
|
from typing_extensions import TypeAlias
|
|
25
25
|
|
|
@@ -136,10 +136,10 @@ class ToolCallOutputItem(RunItemBase[Union[FunctionCallOutput, ComputerCallOutpu
|
|
|
136
136
|
|
|
137
137
|
|
|
138
138
|
@dataclass
|
|
139
|
-
class ReasoningItem(RunItemBase[
|
|
139
|
+
class ReasoningItem(RunItemBase[ResponseReasoningItem]):
|
|
140
140
|
"""Represents a reasoning item."""
|
|
141
141
|
|
|
142
|
-
raw_item:
|
|
142
|
+
raw_item: ResponseReasoningItem
|
|
143
143
|
"""The raw reasoning item."""
|
|
144
144
|
|
|
145
145
|
type: Literal["reasoning_item"] = "reasoning_item"
|
|
@@ -361,7 +361,7 @@ class Converter:
|
|
|
361
361
|
includes = "file_search_call.results" if tool.include_search_results else None
|
|
362
362
|
elif isinstance(tool, ComputerTool):
|
|
363
363
|
converted_tool = {
|
|
364
|
-
"type": "
|
|
364
|
+
"type": "computer_use_preview",
|
|
365
365
|
"environment": tool.computer.environment,
|
|
366
366
|
"display_width": tool.computer.dimensions[0],
|
|
367
367
|
"display_height": tool.computer.dimensions[1],
|
|
@@ -49,13 +49,16 @@ def test_resp_set_default_openai_client():
|
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
def test_set_default_openai_api():
|
|
52
|
-
assert isinstance(OpenAIProvider().get_model("gpt-4"), OpenAIResponsesModel),
|
|
52
|
+
assert isinstance(OpenAIProvider().get_model("gpt-4"), OpenAIResponsesModel), (
|
|
53
53
|
"Default should be responses"
|
|
54
|
+
)
|
|
54
55
|
|
|
55
56
|
set_default_openai_api("chat_completions")
|
|
56
|
-
assert isinstance(OpenAIProvider().get_model("gpt-4"), OpenAIChatCompletionsModel),
|
|
57
|
+
assert isinstance(OpenAIProvider().get_model("gpt-4"), OpenAIChatCompletionsModel), (
|
|
57
58
|
"Should be chat completions model"
|
|
59
|
+
)
|
|
58
60
|
|
|
59
61
|
set_default_openai_api("responses")
|
|
60
|
-
assert isinstance(OpenAIProvider().get_model("gpt-4"), OpenAIResponsesModel),
|
|
62
|
+
assert isinstance(OpenAIProvider().get_model("gpt-4"), OpenAIResponsesModel), (
|
|
61
63
|
"Should be responses model"
|
|
64
|
+
)
|
|
@@ -13,12 +13,12 @@ from openai.types.responses.response_function_tool_call import ResponseFunctionT
|
|
|
13
13
|
from openai.types.responses.response_function_tool_call_param import ResponseFunctionToolCallParam
|
|
14
14
|
from openai.types.responses.response_function_web_search import ResponseFunctionWebSearch
|
|
15
15
|
from openai.types.responses.response_function_web_search_param import ResponseFunctionWebSearchParam
|
|
16
|
-
from openai.types.responses.response_input_item_param import Reasoning as ReasoningInputParam
|
|
17
|
-
from openai.types.responses.response_output_item import Reasoning, ReasoningContent
|
|
18
16
|
from openai.types.responses.response_output_message import ResponseOutputMessage
|
|
19
17
|
from openai.types.responses.response_output_message_param import ResponseOutputMessageParam
|
|
20
18
|
from openai.types.responses.response_output_refusal import ResponseOutputRefusal
|
|
21
19
|
from openai.types.responses.response_output_text import ResponseOutputText
|
|
20
|
+
from openai.types.responses.response_reasoning_item import ResponseReasoningItem, Summary
|
|
21
|
+
from openai.types.responses.response_reasoning_item_param import ResponseReasoningItemParam
|
|
22
22
|
|
|
23
23
|
from agents import (
|
|
24
24
|
Agent,
|
|
@@ -129,7 +129,7 @@ def test_text_message_outputs_across_list_of_runitems() -> None:
|
|
|
129
129
|
item1: RunItem = MessageOutputItem(agent=Agent(name="test"), raw_item=message1)
|
|
130
130
|
item2: RunItem = MessageOutputItem(agent=Agent(name="test"), raw_item=message2)
|
|
131
131
|
# Create a non-message run item of a different type, e.g., a reasoning trace.
|
|
132
|
-
reasoning =
|
|
132
|
+
reasoning = ResponseReasoningItem(id="rid", summary=[], type="reasoning")
|
|
133
133
|
non_message_item: RunItem = ReasoningItem(agent=Agent(name="test"), raw_item=reasoning)
|
|
134
134
|
# Confirm only the message outputs are concatenated.
|
|
135
135
|
assert ItemHelpers.text_message_outputs([item1, non_message_item, item2]) == "foobar"
|
|
@@ -266,16 +266,18 @@ def test_to_input_items_for_computer_call_click() -> None:
|
|
|
266
266
|
|
|
267
267
|
def test_to_input_items_for_reasoning() -> None:
|
|
268
268
|
"""A reasoning output should produce the same dict as a reasoning input item."""
|
|
269
|
-
rc =
|
|
270
|
-
reasoning =
|
|
269
|
+
rc = Summary(text="why", type="summary_text")
|
|
270
|
+
reasoning = ResponseReasoningItem(id="rid1", summary=[rc], type="reasoning")
|
|
271
271
|
resp = ModelResponse(output=[reasoning], usage=Usage(), referenceable_id=None)
|
|
272
272
|
input_items = resp.to_input_items()
|
|
273
273
|
assert isinstance(input_items, list) and len(input_items) == 1
|
|
274
274
|
converted_dict = input_items[0]
|
|
275
275
|
|
|
276
|
-
expected:
|
|
276
|
+
expected: ResponseReasoningItemParam = {
|
|
277
277
|
"id": "rid1",
|
|
278
|
-
"
|
|
278
|
+
"summary": [{"text": "why", "type": "summary_text"}],
|
|
279
279
|
"type": "reasoning",
|
|
280
280
|
}
|
|
281
|
+
print(converted_dict)
|
|
282
|
+
print(expected)
|
|
281
283
|
assert converted_dict == expected
|
|
@@ -163,7 +163,7 @@ def test_convert_tools_basic_types_and_includes():
|
|
|
163
163
|
assert "function" in types
|
|
164
164
|
assert "file_search" in types
|
|
165
165
|
assert "web_search_preview" in types
|
|
166
|
-
assert "
|
|
166
|
+
assert "computer_use_preview" in types
|
|
167
167
|
# Verify file search tool contains max_num_results and vector_store_ids
|
|
168
168
|
file_params = next(ct for ct in converted.tools if ct["type"] == "file_search")
|
|
169
169
|
assert file_params.get("max_num_results") == file_tool.max_num_results
|
|
@@ -173,7 +173,7 @@ def test_convert_tools_basic_types_and_includes():
|
|
|
173
173
|
assert web_params.get("user_location") == web_tool.user_location
|
|
174
174
|
assert web_params.get("search_context_size") == web_tool.search_context_size
|
|
175
175
|
# Verify computer tool contains environment and computed dimensions
|
|
176
|
-
comp_params = next(ct for ct in converted.tools if ct["type"] == "
|
|
176
|
+
comp_params = next(ct for ct in converted.tools if ct["type"] == "computer_use_preview")
|
|
177
177
|
assert comp_params.get("environment") == "mac"
|
|
178
178
|
assert comp_params.get("display_width") == 800
|
|
179
179
|
assert comp_params.get("display_height") == 600
|
|
@@ -7,7 +7,7 @@ from openai.types.responses import (
|
|
|
7
7
|
ResponseFunctionWebSearch,
|
|
8
8
|
)
|
|
9
9
|
from openai.types.responses.response_computer_tool_call import ActionClick
|
|
10
|
-
from openai.types.responses.
|
|
10
|
+
from openai.types.responses.response_reasoning_item import ResponseReasoningItem, Summary
|
|
11
11
|
from pydantic import BaseModel
|
|
12
12
|
|
|
13
13
|
from agents import (
|
|
@@ -287,8 +287,8 @@ def test_function_web_search_tool_call_parsed_correctly():
|
|
|
287
287
|
def test_reasoning_item_parsed_correctly():
|
|
288
288
|
# Verify that a Reasoning output item is converted into a ReasoningItem.
|
|
289
289
|
|
|
290
|
-
reasoning =
|
|
291
|
-
id="r1", type="reasoning",
|
|
290
|
+
reasoning = ResponseReasoningItem(
|
|
291
|
+
id="r1", type="reasoning", summary=[Summary(text="why", type="summary_text")]
|
|
292
292
|
)
|
|
293
293
|
response = ModelResponse(
|
|
294
294
|
output=[reasoning],
|
|
@@ -764,7 +764,7 @@ wheels = [
|
|
|
764
764
|
|
|
765
765
|
[[package]]
|
|
766
766
|
name = "openai"
|
|
767
|
-
version = "1.66.
|
|
767
|
+
version = "1.66.2"
|
|
768
768
|
source = { registry = "https://pypi.org/simple" }
|
|
769
769
|
dependencies = [
|
|
770
770
|
{ name = "anyio" },
|
|
@@ -776,14 +776,14 @@ dependencies = [
|
|
|
776
776
|
{ name = "tqdm" },
|
|
777
777
|
{ name = "typing-extensions" },
|
|
778
778
|
]
|
|
779
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
779
|
+
sdist = { url = "https://files.pythonhosted.org/packages/d8/e1/b3e1fda1aa32d4f40d4de744e91de4de65c854c3e53c63342e4b5f9c5995/openai-1.66.2.tar.gz", hash = "sha256:9b3a843c25f81ee09b6469d483d9fba779d5c6ea41861180772f043481b0598d", size = 397041 }
|
|
780
780
|
wheels = [
|
|
781
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
781
|
+
{ url = "https://files.pythonhosted.org/packages/2c/6f/3315b3583ffe3e31c55b446cb22d2a7c235e65ca191674fffae62deb3c11/openai-1.66.2-py3-none-any.whl", hash = "sha256:75194057ee6bb8b732526387b6041327a05656d976fc21c064e21c8ac6b07999", size = 567268 },
|
|
782
782
|
]
|
|
783
783
|
|
|
784
784
|
[[package]]
|
|
785
785
|
name = "openai-agents"
|
|
786
|
-
version = "0.0.
|
|
786
|
+
version = "0.0.3"
|
|
787
787
|
source = { editable = "." }
|
|
788
788
|
dependencies = [
|
|
789
789
|
{ name = "griffe" },
|
|
@@ -812,7 +812,7 @@ dev = [
|
|
|
812
812
|
[package.metadata]
|
|
813
813
|
requires-dist = [
|
|
814
814
|
{ name = "griffe", specifier = ">=1.5.6,<2" },
|
|
815
|
-
{ name = "openai", specifier = ">=1.66.
|
|
815
|
+
{ name = "openai", specifier = ">=1.66.2" },
|
|
816
816
|
{ name = "pydantic", specifier = ">=2.10,<3" },
|
|
817
817
|
{ name = "requests", specifier = ">=2.0,<3" },
|
|
818
818
|
{ name = "types-requests", specifier = ">=2.0,<3" },
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
# OpenAI Agents SDK
|
|
2
|
-
|
|
3
|
-
The OpenAI Agents SDK enables you to build agentic AI apps in a lightweight, easy to use package with very few abstractions. It's a production-ready upgrade of our previous experimentation for agents, [Swarm](https://github.com/openai/swarm/tree/main). The Agents SDK has a very small set of primitives:
|
|
4
|
-
|
|
5
|
-
- **Agents**, which are LLMs equipped with instructions and tools
|
|
6
|
-
- **Handoffs**, which allow agents to delegate to other agents for specific tasks
|
|
7
|
-
- **Guardrails**, which enable the inputs to agents to be validated
|
|
8
|
-
|
|
9
|
-
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
|
-
## Why use the Agents SDK
|
|
12
|
-
|
|
13
|
-
The SDK has two driving design principles:
|
|
14
|
-
|
|
15
|
-
1. Enough features to be worth using, but few enough primitives to make it quick to learn.
|
|
16
|
-
2. Works great out of the box, but you can customize exactly what happens.
|
|
17
|
-
|
|
18
|
-
Here are the main features of the SDK:
|
|
19
|
-
|
|
20
|
-
- Agent loop: Built-in agent loop that handles calling tools, sending results to the LLM, and looping until the LLM is done.
|
|
21
|
-
- Python-first: Use built-in language features to orchestrate and chain agents, rather than needing to learn new abstractions.
|
|
22
|
-
- Handoffs: A powerful feature to coordinate and delegate between multiple agents.
|
|
23
|
-
- Guardrails: Run input validations and checks in parallel to your agents, breaking early if the checks fail.
|
|
24
|
-
- Function tools: Turn any Python function into a tool, with automatic schema generation and Pydantic-powered validation.
|
|
25
|
-
- 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
|
-
|
|
27
|
-
## Installation
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
pip install openai-agents
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Hello world example
|
|
34
|
-
|
|
35
|
-
```python
|
|
36
|
-
from agents import Agent, Runner
|
|
37
|
-
|
|
38
|
-
agent = Agent(name="Assistant", instructions="You are a helpful assistant")
|
|
39
|
-
|
|
40
|
-
result = Runner.run_sync(agent, "Write a haiku about recursion in programming.")
|
|
41
|
-
print(result.final_output)
|
|
42
|
-
|
|
43
|
-
# Code within the code,
|
|
44
|
-
# Functions calling themselves,
|
|
45
|
-
# Infinite loop's dance.
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
(_If running this, ensure you set the `OPENAI_API_KEY` environment variable_)
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
export OPENAI_API_KEY=sk-...
|
|
52
|
-
```
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
# Common agentic patterns
|
|
2
|
-
|
|
3
|
-
This folder contains examples of different common patterns for agents.
|
|
4
|
-
|
|
5
|
-
## Deterministic flows
|
|
6
|
-
|
|
7
|
-
A common tactic is to break down a task into a series of smaller steps. Each task can be performed by an agent, and the output of one agent is used as input to the next. For example, if your task was to generate a story, you could break it down into the following steps:
|
|
8
|
-
|
|
9
|
-
1. Generate an outline
|
|
10
|
-
2. Generate the story
|
|
11
|
-
3. Generate the ending
|
|
12
|
-
|
|
13
|
-
Each of these steps can be performed by an agent. The output of one agent is used as input to the next.
|
|
14
|
-
|
|
15
|
-
See the [`deterministic.py`](./deterministic.py) file for an example of this.
|
|
16
|
-
|
|
17
|
-
## Handoffs and routing
|
|
18
|
-
|
|
19
|
-
In many situations, you have specialized sub-agents that handle specific tasks. You can use handoffs to route the task to the right agent.
|
|
20
|
-
|
|
21
|
-
For example, you might have a frontline agent that receives a request, and then hands off to a specialized agent based on the language of the request.
|
|
22
|
-
See the [`routing.py`](./routing.py) file for an example of this.
|
|
23
|
-
|
|
24
|
-
## Agents as tools
|
|
25
|
-
|
|
26
|
-
The mental model for handoffs is that the new agent "takes over". It sees the previous conversation history, and owns the conversation from that point onwards. However, this is not the only way to use agents. You can also use agents as a tool - the tool agent goes off and runs on its own, and then returns the result to the original agent.
|
|
27
|
-
|
|
28
|
-
For example, you could model the translation task above as tool calls instead: rather than handing over to the language-specific agent, you could call the agent as a tool, and then use the result in the next step. This enables things like translating multiple languages at once.
|
|
29
|
-
|
|
30
|
-
See the [`agents_as_tools.py`](./agents_as_tools.py) file for an example of this.
|
|
31
|
-
|
|
32
|
-
## LLM-as-a-judge
|
|
33
|
-
|
|
34
|
-
LLMs can often improve the quality of their output if given feedback. A common pattern is to generate a response using a model, and then use a second model to provide feedback. You can even use a small model for the initial generation and a larger model for the feedback, to optimize cost.
|
|
35
|
-
|
|
36
|
-
For example, you could use an LLM to generate an outline for a story, and then use a second LLM to evaluate the outline and provide feedback. You can then use the feedback to improve the outline, and repeat until the LLM is satisfied with the outline.
|
|
37
|
-
|
|
38
|
-
See the [`llm_as_a_judge.py`](./llm_as_a_judge.py) file for an example of this.
|
|
39
|
-
|
|
40
|
-
## Parallelization
|
|
41
|
-
|
|
42
|
-
Running multiple agents in parallel is a common pattern. This can be useful for both latency (e.g. if you have multiple steps that don't depend on each other) and also for other reasons e.g. generating multiple responses and picking the best one.
|
|
43
|
-
|
|
44
|
-
See the [`parallelization.py`](./parallelization.py) file for an example of this. It runs a translation agent multiple times in parallel, and then picks the best translation.
|
|
45
|
-
|
|
46
|
-
## Guardrails
|
|
47
|
-
|
|
48
|
-
Related to parallelization, you often want to run input guardrails to make sure the inputs to your agents are valid. For example, if you have a customer support agent, you might want to make sure that the user isn't trying to ask for help with a math problem.
|
|
49
|
-
|
|
50
|
-
You can definitely do this without any special Agents SDK features by using parallelization, but we support a special guardrail primitive. Guardrails can have a "tripwire" - if the tripwire is triggered, the agent execution will immediately stop and a `GuardrailTripwireTriggered` exception will be raised.
|
|
51
|
-
|
|
52
|
-
This is really useful for latency: for example, you might have a very fast model that runs the guardrail and a slow model that runs the actual agent. You wouldn't want to wait for the slow model to finish, so guardrails let you quickly reject invalid inputs.
|
|
53
|
-
|
|
54
|
-
See the [`guardrails.py`](./guardrails.py) file for an example of this.
|