openai-agents 0.0.15__tar.gz → 0.0.16__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.16/AGENTS.md +69 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/PKG-INFO +2 -2
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/tracing.md +1 -0
- openai_agents-0.0.16/examples/hosted_mcp/approvals.py +61 -0
- openai_agents-0.0.16/examples/hosted_mcp/simple.py +47 -0
- openai_agents-0.0.16/examples/tools/code_interpreter.py +34 -0
- openai_agents-0.0.16/examples/tools/image_generator.py +54 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/pyproject.toml +2 -2
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/__init__.py +18 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/_run_impl.py +226 -6
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/extensions/models/litellm_model.py +11 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/items.py +57 -3
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/mcp/server.py +4 -2
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/models/chatcmpl_stream_handler.py +25 -1
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/models/openai_chatcompletions.py +14 -1
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/models/openai_responses.py +44 -13
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/run.py +2 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/stream_events.py +2 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/tool.py +112 -2
- openai_agents-0.0.16/src/agents/usage.py +42 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/fake_model.py +1 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/models/test_litellm_chatcompletions_stream.py +14 -2
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_extra_headers.py +14 -6
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_openai_chatcompletions.py +15 -2
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_openai_chatcompletions_stream.py +14 -2
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_responses_tracing.py +23 -1
- openai_agents-0.0.16/tests/test_usage.py +52 -0
- openai_agents-0.0.16/tests/voice/__init__.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/voice/test_workflow.py +2 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/uv.lock +1689 -1689
- openai_agents-0.0.15/src/agents/usage.py +0 -22
- {openai_agents-0.0.15 → openai_agents-0.0.16}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/.github/ISSUE_TEMPLATE/model_provider.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/.github/ISSUE_TEMPLATE/question.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/.github/workflows/docs.yml +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/.github/workflows/issues.yml +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/.github/workflows/publish.yml +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/.github/workflows/tests.yml +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/.gitignore +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/.prettierrc +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/.vscode/settings.json +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/LICENSE +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/Makefile +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/README.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/agents.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/assets/images/favicon-platform.svg +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/assets/images/graph.png +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/assets/images/mcp-tracing.jpg +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/assets/images/orchestration.png +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/assets/logo.svg +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/config.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/context.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/examples.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/guardrails.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/handoffs.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/index.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ja/agents.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ja/config.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ja/context.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ja/examples.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ja/guardrails.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ja/handoffs.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ja/index.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ja/mcp.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ja/models/index.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ja/models/litellm.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ja/models.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ja/multi_agent.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ja/quickstart.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ja/results.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ja/running_agents.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ja/streaming.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ja/tools.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ja/tracing.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ja/visualization.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ja/voice/pipeline.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ja/voice/quickstart.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ja/voice/tracing.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/mcp.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/models/index.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/models/litellm.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/multi_agent.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/quickstart.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/agent.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/agent_output.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/exceptions.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/extensions/handoff_filters.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/extensions/handoff_prompt.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/extensions/litellm.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/function_schema.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/guardrail.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/handoffs.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/index.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/items.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/lifecycle.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/mcp/server.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/mcp/util.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/model_settings.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/models/interface.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/models/openai_chatcompletions.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/models/openai_responses.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/result.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/run.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/run_context.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/stream_events.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/tool.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/tracing/create.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/tracing/index.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/tracing/processor_interface.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/tracing/processors.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/tracing/scope.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/tracing/setup.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/tracing/span_data.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/tracing/spans.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/tracing/traces.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/tracing/util.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/usage.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/voice/events.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/voice/exceptions.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/voice/input.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/voice/model.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/voice/models/openai_provider.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/voice/models/openai_stt.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/voice/models/openai_tts.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/voice/pipeline.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/voice/pipeline_config.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/voice/result.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/voice/utils.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/ref/voice/workflow.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/results.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/running_agents.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/scripts/translate_docs.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/streaming.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/stylesheets/extra.css +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/tools.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/visualization.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/voice/pipeline.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/voice/quickstart.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/docs/voice/tracing.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/__init__.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/agent_patterns/README.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/agent_patterns/agents_as_tools.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/agent_patterns/deterministic.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/agent_patterns/forcing_tool_use.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/agent_patterns/input_guardrails.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/agent_patterns/llm_as_a_judge.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/agent_patterns/output_guardrails.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/agent_patterns/parallelization.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/agent_patterns/routing.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/agent_patterns/streaming_guardrails.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/basic/agent_lifecycle_example.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/basic/dynamic_system_prompt.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/basic/hello_world.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/basic/hello_world_jupyter.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/basic/lifecycle_example.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/basic/local_image.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/basic/media/image_bison.jpg +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/basic/non_strict_output_type.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/basic/previous_response_id.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/basic/remote_image.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/basic/stream_items.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/basic/stream_text.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/basic/tools.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/customer_service/main.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/financial_research_agent/README.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/financial_research_agent/__init__.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/financial_research_agent/agents/__init__.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/financial_research_agent/agents/financials_agent.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/financial_research_agent/agents/planner_agent.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/financial_research_agent/agents/risk_agent.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/financial_research_agent/agents/search_agent.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/financial_research_agent/agents/verifier_agent.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/financial_research_agent/agents/writer_agent.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/financial_research_agent/main.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/financial_research_agent/manager.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/financial_research_agent/printer.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/handoffs/message_filter.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/handoffs/message_filter_streaming.py +0 -0
- {openai_agents-0.0.15/examples/research_bot/agents → openai_agents-0.0.16/examples/hosted_mcp}/__init__.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/mcp/filesystem_example/README.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/mcp/filesystem_example/main.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/mcp/filesystem_example/sample_files/favorite_books.txt +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/mcp/filesystem_example/sample_files/favorite_cities.txt +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/mcp/filesystem_example/sample_files/favorite_songs.txt +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/mcp/git_example/README.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/mcp/git_example/main.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/mcp/sse_example/README.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/mcp/sse_example/main.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/mcp/sse_example/server.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/mcp/streamablehttp_example/README.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/mcp/streamablehttp_example/main.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/mcp/streamablehttp_example/server.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/model_providers/README.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/model_providers/custom_example_agent.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/model_providers/custom_example_global.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/model_providers/custom_example_provider.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/model_providers/litellm_auto.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/model_providers/litellm_provider.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/research_bot/README.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/research_bot/__init__.py +0 -0
- {openai_agents-0.0.15/examples/voice → openai_agents-0.0.16/examples/research_bot/agents}/__init__.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/research_bot/agents/planner_agent.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/research_bot/agents/search_agent.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/research_bot/agents/writer_agent.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/research_bot/main.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/research_bot/manager.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/research_bot/printer.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/research_bot/sample_outputs/product_recs.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/research_bot/sample_outputs/product_recs.txt +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/research_bot/sample_outputs/vacation.md +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/research_bot/sample_outputs/vacation.txt +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/tools/computer_use.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/tools/file_search.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/tools/web_search.py +0 -0
- {openai_agents-0.0.15/examples/voice/static → openai_agents-0.0.16/examples/voice}/__init__.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/voice/static/README.md +0 -0
- {openai_agents-0.0.15/examples/voice/streamed → openai_agents-0.0.16/examples/voice/static}/__init__.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/voice/static/main.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/voice/static/util.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/voice/streamed/README.md +0 -0
- {openai_agents-0.0.15/src/agents/extensions → openai_agents-0.0.16/examples/voice/streamed}/__init__.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/voice/streamed/main.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/examples/voice/streamed/my_workflow.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/mkdocs.yml +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/_config.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/_debug.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/agent.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/agent_output.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/computer.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/exceptions.py +0 -0
- {openai_agents-0.0.15/src/agents/extensions/models → openai_agents-0.0.16/src/agents/extensions}/__init__.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/extensions/handoff_filters.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/extensions/handoff_prompt.py +0 -0
- {openai_agents-0.0.15/src/agents → openai_agents-0.0.16/src/agents/extensions}/models/__init__.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/extensions/models/litellm_provider.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/extensions/visualization.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/function_schema.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/guardrail.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/handoffs.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/lifecycle.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/logger.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/mcp/__init__.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/mcp/util.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/model_settings.py +0 -0
- {openai_agents-0.0.15/src/agents/util → openai_agents-0.0.16/src/agents/models}/__init__.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/models/_openai_shared.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/models/chatcmpl_converter.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/models/chatcmpl_helpers.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/models/fake_id.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/models/interface.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/models/multi_provider.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/models/openai_provider.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/py.typed +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/result.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/run_context.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/strict_schema.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/tracing/__init__.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/tracing/create.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/tracing/logger.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/tracing/processor_interface.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/tracing/processors.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/tracing/scope.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/tracing/setup.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/tracing/span_data.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/tracing/spans.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/tracing/traces.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/tracing/util.py +0 -0
- {openai_agents-0.0.15/src/agents/voice/models → openai_agents-0.0.16/src/agents/util}/__init__.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/util/_coro.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/util/_error_tracing.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/util/_json.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/util/_pretty_print.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/util/_transforms.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/util/_types.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/version.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/voice/__init__.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/voice/events.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/voice/exceptions.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/voice/imports.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/voice/input.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/voice/model.py +0 -0
- {openai_agents-0.0.15/tests → openai_agents-0.0.16/src/agents/voice/models}/__init__.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/voice/models/openai_model_provider.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/voice/models/openai_stt.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/voice/models/openai_tts.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/voice/pipeline.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/voice/pipeline_config.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/voice/result.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/voice/utils.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/src/agents/voice/workflow.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/README.md +0 -0
- {openai_agents-0.0.15/tests/fastapi → openai_agents-0.0.16/tests}/__init__.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/conftest.py +0 -0
- {openai_agents-0.0.15/tests/mcp → openai_agents-0.0.16/tests/fastapi}/__init__.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/fastapi/streaming_app.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/fastapi/test_streaming_context.py +0 -0
- {openai_agents-0.0.15/tests/models → openai_agents-0.0.16/tests/mcp}/__init__.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/mcp/conftest.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/mcp/helpers.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/mcp/test_caching.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/mcp/test_connect_disconnect.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/mcp/test_mcp_tracing.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/mcp/test_mcp_util.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/mcp/test_runner_calls_mcp.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/mcp/test_server_errors.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/model_settings/test_serialization.py +0 -0
- {openai_agents-0.0.15/tests/voice → openai_agents-0.0.16/tests/models}/__init__.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/models/conftest.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/models/test_litellm_extra_body.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/models/test_map.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_agent_config.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_agent_hooks.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_agent_runner.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_agent_runner_streamed.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_agent_tracing.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_cancel_streaming.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_computer_action.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_config.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_doc_parsing.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_extension_filters.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_function_schema.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_function_tool.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_function_tool_decorator.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_global_hooks.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_guardrails.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_handoff_tool.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_items_helpers.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_max_turns.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_openai_chatcompletions_converter.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_openai_responses_converter.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_output_tool.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_pretty_print.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_responses.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_result_cast.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_run_config.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_run_step_execution.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_run_step_processing.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_strict_schema.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_tool_choice_reset.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_tool_converter.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_tool_use_behavior.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_trace_processor.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_tracing.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_tracing_errors.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_tracing_errors_streamed.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/test_visualization.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/testing_processor.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/tracing/test_processor_api_key.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/voice/conftest.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/voice/fake_models.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/voice/helpers.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/voice/test_input.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/voice/test_openai_stt.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/voice/test_openai_tts.py +0 -0
- {openai_agents-0.0.15 → openai_agents-0.0.16}/tests/voice/test_pipeline.py +0 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
Welcome to the OpenAI Agents SDK repository. This file contains the main points for new contributors.
|
|
2
|
+
|
|
3
|
+
## Repository overview
|
|
4
|
+
|
|
5
|
+
- **Source code**: `src/agents/` contains the implementation.
|
|
6
|
+
- **Tests**: `tests/` with a short guide in `tests/README.md`.
|
|
7
|
+
- **Examples**: under `examples/`.
|
|
8
|
+
- **Documentation**: markdown pages live in `docs/` with `mkdocs.yml` controlling the site.
|
|
9
|
+
- **Utilities**: developer commands are defined in the `Makefile`.
|
|
10
|
+
- **PR template**: `.github/PULL_REQUEST_TEMPLATE/pull_request_template.md` describes the information every PR must include.
|
|
11
|
+
|
|
12
|
+
## Local workflow
|
|
13
|
+
|
|
14
|
+
1. Format, lint and type‑check your changes:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
make format
|
|
18
|
+
make lint
|
|
19
|
+
make mypy
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
2. Run the tests:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
make tests
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
To run a single test, use `uv run pytest -s -k <test_name>`.
|
|
29
|
+
|
|
30
|
+
3. Build the documentation (optional but recommended for docs changes):
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
make build-docs
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Coverage can be generated with `make coverage`.
|
|
37
|
+
|
|
38
|
+
## Snapshot tests
|
|
39
|
+
|
|
40
|
+
Some tests rely on inline snapshots. See `tests/README.md` for details on updating them:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
make snapshots-fix # update existing snapshots
|
|
44
|
+
make snapshots-create # create new snapshots
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Run `make tests` again after updating snapshots to ensure they pass.
|
|
48
|
+
|
|
49
|
+
## Style notes
|
|
50
|
+
|
|
51
|
+
- Write comments as full sentences and end them with a period.
|
|
52
|
+
|
|
53
|
+
## Pull request expectations
|
|
54
|
+
|
|
55
|
+
PRs should use the template located at `.github/PULL_REQUEST_TEMPLATE/pull_request_template.md`. Provide a summary, test plan and issue number if applicable, then check that:
|
|
56
|
+
|
|
57
|
+
- New tests are added when needed.
|
|
58
|
+
- Documentation is updated.
|
|
59
|
+
- `make lint` and `make format` have been run.
|
|
60
|
+
- The full test suite passes.
|
|
61
|
+
|
|
62
|
+
Commit messages should be concise and written in the imperative mood. Small, focused commits are preferred.
|
|
63
|
+
|
|
64
|
+
## What reviewers look for
|
|
65
|
+
|
|
66
|
+
- Tests covering new behaviour.
|
|
67
|
+
- Consistent style: code formatted with `ruff format`, imports sorted, and type hints passing `mypy`.
|
|
68
|
+
- Clear documentation for any public API changes.
|
|
69
|
+
- Clean history and a helpful PR description.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openai-agents
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.16
|
|
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
|
|
@@ -20,7 +20,7 @@ Classifier: Typing :: Typed
|
|
|
20
20
|
Requires-Python: >=3.9
|
|
21
21
|
Requires-Dist: griffe<2,>=1.5.6
|
|
22
22
|
Requires-Dist: mcp<2,>=1.8.0; python_version >= '3.10'
|
|
23
|
-
Requires-Dist: openai>=1.
|
|
23
|
+
Requires-Dist: openai>=1.81.0
|
|
24
24
|
Requires-Dist: pydantic<3,>=2.10
|
|
25
25
|
Requires-Dist: requests<3,>=2.0
|
|
26
26
|
Requires-Dist: types-requests<3,>=2.0
|
|
@@ -115,3 +115,4 @@ To customize this default setup, to send traces to alternative or additional bac
|
|
|
115
115
|
- [Langfuse](https://langfuse.com/docs/integrations/openaiagentssdk/openai-agents)
|
|
116
116
|
- [Langtrace](https://docs.langtrace.ai/supported-integrations/llm-frameworks/openai-agents-sdk)
|
|
117
117
|
- [Okahu-Monocle](https://github.com/monocle2ai/monocle)
|
|
118
|
+
- [Galileo](https://v2docs.galileo.ai/integrations/openai-agent-integration#openai-agent-integration)
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
import asyncio
|
|
3
|
+
|
|
4
|
+
from agents import (
|
|
5
|
+
Agent,
|
|
6
|
+
HostedMCPTool,
|
|
7
|
+
MCPToolApprovalFunctionResult,
|
|
8
|
+
MCPToolApprovalRequest,
|
|
9
|
+
Runner,
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
"""This example demonstrates how to use the hosted MCP support in the OpenAI Responses API, with
|
|
13
|
+
approval callbacks."""
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def approval_callback(request: MCPToolApprovalRequest) -> MCPToolApprovalFunctionResult:
|
|
17
|
+
answer = input(f"Approve running the tool `{request.data.name}`? (y/n) ")
|
|
18
|
+
result: MCPToolApprovalFunctionResult = {"approve": answer == "y"}
|
|
19
|
+
if not result["approve"]:
|
|
20
|
+
result["reason"] = "User denied"
|
|
21
|
+
return result
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
async def main(verbose: bool, stream: bool):
|
|
25
|
+
agent = Agent(
|
|
26
|
+
name="Assistant",
|
|
27
|
+
tools=[
|
|
28
|
+
HostedMCPTool(
|
|
29
|
+
tool_config={
|
|
30
|
+
"type": "mcp",
|
|
31
|
+
"server_label": "gitmcp",
|
|
32
|
+
"server_url": "https://gitmcp.io/openai/codex",
|
|
33
|
+
"require_approval": "always",
|
|
34
|
+
},
|
|
35
|
+
on_approval_request=approval_callback,
|
|
36
|
+
)
|
|
37
|
+
],
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
if stream:
|
|
41
|
+
result = Runner.run_streamed(agent, "Which language is this repo written in?")
|
|
42
|
+
async for event in result.stream_events():
|
|
43
|
+
if event.type == "run_item_stream_event":
|
|
44
|
+
print(f"Got event of type {event.item.__class__.__name__}")
|
|
45
|
+
print(f"Done streaming; final result: {result.final_output}")
|
|
46
|
+
else:
|
|
47
|
+
res = await Runner.run(agent, "Which language is this repo written in?")
|
|
48
|
+
print(res.final_output)
|
|
49
|
+
|
|
50
|
+
if verbose:
|
|
51
|
+
for item in result.new_items:
|
|
52
|
+
print(item)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
if __name__ == "__main__":
|
|
56
|
+
parser = argparse.ArgumentParser()
|
|
57
|
+
parser.add_argument("--verbose", action="store_true", default=False)
|
|
58
|
+
parser.add_argument("--stream", action="store_true", default=False)
|
|
59
|
+
args = parser.parse_args()
|
|
60
|
+
|
|
61
|
+
asyncio.run(main(args.verbose, args.stream))
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
import asyncio
|
|
3
|
+
|
|
4
|
+
from agents import Agent, HostedMCPTool, Runner
|
|
5
|
+
|
|
6
|
+
"""This example demonstrates how to use the hosted MCP support in the OpenAI Responses API, with
|
|
7
|
+
approvals not required for any tools. You should only use this for trusted MCP servers."""
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
async def main(verbose: bool, stream: bool):
|
|
11
|
+
agent = Agent(
|
|
12
|
+
name="Assistant",
|
|
13
|
+
tools=[
|
|
14
|
+
HostedMCPTool(
|
|
15
|
+
tool_config={
|
|
16
|
+
"type": "mcp",
|
|
17
|
+
"server_label": "gitmcp",
|
|
18
|
+
"server_url": "https://gitmcp.io/openai/codex",
|
|
19
|
+
"require_approval": "never",
|
|
20
|
+
}
|
|
21
|
+
)
|
|
22
|
+
],
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
if stream:
|
|
26
|
+
result = Runner.run_streamed(agent, "Which language is this repo written in?")
|
|
27
|
+
async for event in result.stream_events():
|
|
28
|
+
if event.type == "run_item_stream_event":
|
|
29
|
+
print(f"Got event of type {event.item.__class__.__name__}")
|
|
30
|
+
print(f"Done streaming; final result: {result.final_output}")
|
|
31
|
+
else:
|
|
32
|
+
res = await Runner.run(agent, "Which language is this repo written in?")
|
|
33
|
+
print(res.final_output)
|
|
34
|
+
# The repository is primarily written in multiple languages, including Rust and TypeScript...
|
|
35
|
+
|
|
36
|
+
if verbose:
|
|
37
|
+
for item in result.new_items:
|
|
38
|
+
print(item)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
if __name__ == "__main__":
|
|
42
|
+
parser = argparse.ArgumentParser()
|
|
43
|
+
parser.add_argument("--verbose", action="store_true", default=False)
|
|
44
|
+
parser.add_argument("--stream", action="store_true", default=False)
|
|
45
|
+
args = parser.parse_args()
|
|
46
|
+
|
|
47
|
+
asyncio.run(main(args.verbose, args.stream))
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
|
|
3
|
+
from agents import Agent, CodeInterpreterTool, Runner, trace
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
async def main():
|
|
7
|
+
agent = Agent(
|
|
8
|
+
name="Code interpreter",
|
|
9
|
+
instructions="You love doing math.",
|
|
10
|
+
tools=[
|
|
11
|
+
CodeInterpreterTool(
|
|
12
|
+
tool_config={"type": "code_interpreter", "container": {"type": "auto"}},
|
|
13
|
+
)
|
|
14
|
+
],
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
with trace("Code interpreter example"):
|
|
18
|
+
print("Solving math problem...")
|
|
19
|
+
result = Runner.run_streamed(agent, "What is the square root of273 * 312821 plus 1782?")
|
|
20
|
+
async for event in result.stream_events():
|
|
21
|
+
if (
|
|
22
|
+
event.type == "run_item_stream_event"
|
|
23
|
+
and event.item.type == "tool_call_item"
|
|
24
|
+
and event.item.raw_item.type == "code_interpreter_call"
|
|
25
|
+
):
|
|
26
|
+
print(f"Code interpreter code:\n```\n{event.item.raw_item.code}\n```\n")
|
|
27
|
+
elif event.type == "run_item_stream_event":
|
|
28
|
+
print(f"Other event: {event.item.type}")
|
|
29
|
+
|
|
30
|
+
print(f"Final output: {result.final_output}")
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
if __name__ == "__main__":
|
|
34
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
import base64
|
|
3
|
+
import os
|
|
4
|
+
import subprocess
|
|
5
|
+
import sys
|
|
6
|
+
import tempfile
|
|
7
|
+
|
|
8
|
+
from agents import Agent, ImageGenerationTool, Runner, trace
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def open_file(path: str) -> None:
|
|
12
|
+
if sys.platform.startswith("darwin"):
|
|
13
|
+
subprocess.run(["open", path], check=False) # macOS
|
|
14
|
+
elif os.name == "nt": # Windows
|
|
15
|
+
os.astartfile(path) # type: ignore
|
|
16
|
+
elif os.name == "posix":
|
|
17
|
+
subprocess.run(["xdg-open", path], check=False) # Linux/Unix
|
|
18
|
+
else:
|
|
19
|
+
print(f"Don't know how to open files on this platform: {sys.platform}")
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
async def main():
|
|
23
|
+
agent = Agent(
|
|
24
|
+
name="Image generator",
|
|
25
|
+
instructions="You are a helpful agent.",
|
|
26
|
+
tools=[
|
|
27
|
+
ImageGenerationTool(
|
|
28
|
+
tool_config={"type": "image_generation", "quality": "low"},
|
|
29
|
+
)
|
|
30
|
+
],
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
with trace("Image generation example"):
|
|
34
|
+
print("Generating image, this may take a while...")
|
|
35
|
+
result = await Runner.run(
|
|
36
|
+
agent, "Create an image of a frog eating a pizza, comic book style."
|
|
37
|
+
)
|
|
38
|
+
print(result.final_output)
|
|
39
|
+
for item in result.new_items:
|
|
40
|
+
if (
|
|
41
|
+
item.type == "tool_call_item"
|
|
42
|
+
and item.raw_item.type == "image_generation_call"
|
|
43
|
+
and (img_result := item.raw_item.result)
|
|
44
|
+
):
|
|
45
|
+
with tempfile.NamedTemporaryFile(suffix=".png", delete=False) as tmp:
|
|
46
|
+
tmp.write(base64.b64decode(img_result))
|
|
47
|
+
temp_path = tmp.name
|
|
48
|
+
|
|
49
|
+
# Open the image
|
|
50
|
+
open_file(temp_path)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
if __name__ == "__main__":
|
|
54
|
+
asyncio.run(main())
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "openai-agents"
|
|
3
|
-
version = "0.0.
|
|
3
|
+
version = "0.0.16"
|
|
4
4
|
description = "OpenAI Agents SDK"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.9"
|
|
7
7
|
license = "MIT"
|
|
8
8
|
authors = [{ name = "OpenAI", email = "support@openai.com" }]
|
|
9
9
|
dependencies = [
|
|
10
|
-
"openai>=1.
|
|
10
|
+
"openai>=1.81.0",
|
|
11
11
|
"pydantic>=2.10, <3",
|
|
12
12
|
"griffe>=1.5.6, <2",
|
|
13
13
|
"typing-extensions>=4.12.2, <5",
|
|
@@ -54,10 +54,19 @@ from .stream_events import (
|
|
|
54
54
|
StreamEvent,
|
|
55
55
|
)
|
|
56
56
|
from .tool import (
|
|
57
|
+
CodeInterpreterTool,
|
|
57
58
|
ComputerTool,
|
|
58
59
|
FileSearchTool,
|
|
59
60
|
FunctionTool,
|
|
60
61
|
FunctionToolResult,
|
|
62
|
+
HostedMCPTool,
|
|
63
|
+
ImageGenerationTool,
|
|
64
|
+
LocalShellCommandRequest,
|
|
65
|
+
LocalShellExecutor,
|
|
66
|
+
LocalShellTool,
|
|
67
|
+
MCPToolApprovalFunction,
|
|
68
|
+
MCPToolApprovalFunctionResult,
|
|
69
|
+
MCPToolApprovalRequest,
|
|
61
70
|
Tool,
|
|
62
71
|
WebSearchTool,
|
|
63
72
|
default_tool_error_function,
|
|
@@ -206,8 +215,17 @@ __all__ = [
|
|
|
206
215
|
"FunctionToolResult",
|
|
207
216
|
"ComputerTool",
|
|
208
217
|
"FileSearchTool",
|
|
218
|
+
"CodeInterpreterTool",
|
|
219
|
+
"ImageGenerationTool",
|
|
220
|
+
"LocalShellCommandRequest",
|
|
221
|
+
"LocalShellExecutor",
|
|
222
|
+
"LocalShellTool",
|
|
209
223
|
"Tool",
|
|
210
224
|
"WebSearchTool",
|
|
225
|
+
"HostedMCPTool",
|
|
226
|
+
"MCPToolApprovalFunction",
|
|
227
|
+
"MCPToolApprovalRequest",
|
|
228
|
+
"MCPToolApprovalFunctionResult",
|
|
211
229
|
"function_tool",
|
|
212
230
|
"Usage",
|
|
213
231
|
"add_trace_processor",
|