openai-agents 0.0.19__tar.gz → 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of openai-agents might be problematic. Click here for more details.
- {openai_agents-0.0.19 → openai_agents-0.2.0}/.github/workflows/issues.yml +1 -0
- openai_agents-0.2.0/.vscode/launch.json +14 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/AGENTS.md +3 -1
- openai_agents-0.2.0/CLAUDE.md +1 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/Makefile +6 -2
- {openai_agents-0.0.19 → openai_agents-0.2.0}/PKG-INFO +133 -8
- {openai_agents-0.0.19 → openai_agents-0.2.0}/README.md +127 -5
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/agents.md +1 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/context.md +2 -1
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/examples.md +3 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/guardrails.md +1 -1
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/index.md +2 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ja/guardrails.md +22 -22
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ja/mcp.md +8 -1
- openai_agents-0.2.0/docs/ja/models/index.md +155 -0
- openai_agents-0.2.0/docs/mcp.md +187 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/models/index.md +16 -0
- openai_agents-0.2.0/docs/ref/memory.md +8 -0
- openai_agents-0.2.0/docs/release.md +28 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/running_agents.md +36 -1
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/scripts/translate_docs.py +43 -18
- openai_agents-0.2.0/docs/sessions.md +319 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/tools.md +1 -1
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/agent_patterns/llm_as_a_judge.py +1 -1
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/basic/agent_lifecycle_example.py +2 -4
- openai_agents-0.2.0/examples/basic/hello_world_jupyter.ipynb +45 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/basic/lifecycle_example.py +6 -8
- openai_agents-0.2.0/examples/basic/session_example.py +77 -0
- openai_agents-0.2.0/examples/mcp/prompt_server/README.md +29 -0
- openai_agents-0.2.0/examples/mcp/prompt_server/main.py +110 -0
- openai_agents-0.2.0/examples/mcp/prompt_server/server.py +37 -0
- openai_agents-0.2.0/examples/realtime/demo.py +115 -0
- openai_agents-0.2.0/examples/realtime/ui.py +268 -0
- openai_agents-0.2.0/examples/reasoning_content/__init__.py +3 -0
- openai_agents-0.2.0/examples/reasoning_content/main.py +124 -0
- openai_agents-0.2.0/examples/reasoning_content/runner_example.py +88 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/mkdocs.yml +4 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/pyproject.toml +5 -4
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/__init__.py +5 -2
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/_run_impl.py +35 -1
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/agent.py +65 -29
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/extensions/models/litellm_model.py +7 -3
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/function_schema.py +11 -1
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/guardrail.py +5 -1
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/handoffs.py +14 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/lifecycle.py +26 -17
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/mcp/__init__.py +13 -1
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/mcp/server.py +173 -16
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/mcp/util.py +89 -6
- openai_agents-0.2.0/src/agents/memory/__init__.py +3 -0
- openai_agents-0.2.0/src/agents/memory/session.py +369 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/model_settings.py +60 -6
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/models/chatcmpl_converter.py +31 -2
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/models/chatcmpl_stream_handler.py +128 -16
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/models/openai_chatcompletions.py +12 -10
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/models/openai_responses.py +25 -8
- openai_agents-0.2.0/src/agents/realtime/README.md +3 -0
- openai_agents-0.2.0/src/agents/realtime/__init__.py +174 -0
- openai_agents-0.2.0/src/agents/realtime/agent.py +80 -0
- openai_agents-0.2.0/src/agents/realtime/config.py +128 -0
- openai_agents-0.2.0/src/agents/realtime/events.py +216 -0
- openai_agents-0.2.0/src/agents/realtime/items.py +91 -0
- openai_agents-0.2.0/src/agents/realtime/model.py +69 -0
- openai_agents-0.2.0/src/agents/realtime/model_events.py +159 -0
- openai_agents-0.2.0/src/agents/realtime/model_inputs.py +100 -0
- openai_agents-0.2.0/src/agents/realtime/openai_realtime.py +584 -0
- openai_agents-0.2.0/src/agents/realtime/runner.py +118 -0
- openai_agents-0.2.0/src/agents/realtime/session.py +502 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/repl.py +1 -4
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/run.py +131 -10
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/tool.py +30 -6
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/tool_context.py +16 -3
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/tracing/__init__.py +1 -2
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/tracing/processor_interface.py +1 -1
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/voice/models/openai_stt.py +1 -1
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/voice/pipeline.py +6 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/voice/workflow.py +8 -0
- openai_agents-0.2.0/tests/mcp/helpers.py +111 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/mcp/test_caching.py +14 -8
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/mcp/test_mcp_util.py +14 -6
- openai_agents-0.2.0/tests/mcp/test_prompt_server.py +301 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/mcp/test_server_errors.py +6 -1
- openai_agents-0.2.0/tests/mcp/test_tool_filtering.py +246 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/model_settings/test_serialization.py +44 -1
- openai_agents-0.2.0/tests/realtime/test_agent.py +25 -0
- openai_agents-0.2.0/tests/realtime/test_item_parsing.py +80 -0
- openai_agents-0.2.0/tests/realtime/test_model_events.py +12 -0
- openai_agents-0.2.0/tests/realtime/test_openai_realtime.py +378 -0
- openai_agents-0.2.0/tests/realtime/test_runner.py +224 -0
- openai_agents-0.2.0/tests/realtime/test_session.py +1210 -0
- openai_agents-0.2.0/tests/realtime/test_tracing.py +264 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_agent_config.py +3 -3
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_computer_action.py +44 -1
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_function_schema.py +218 -1
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_function_tool.py +43 -17
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_function_tool_decorator.py +1 -1
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_handoff_tool.py +93 -7
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_items_helpers.py +11 -2
- openai_agents-0.2.0/tests/test_reasoning_content.py +285 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_run_step_execution.py +1 -1
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_run_step_processing.py +11 -5
- openai_agents-0.2.0/tests/test_session.py +400 -0
- openai_agents-0.2.0/tests/test_session_exceptions.py +300 -0
- openai_agents-0.2.0/tests/voice/__init__.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/voice/test_openai_stt.py +2 -2
- {openai_agents-0.0.19 → openai_agents-0.2.0}/uv.lock +10 -6
- openai_agents-0.0.19/docs/ja/models/index.md +0 -116
- openai_agents-0.0.19/docs/ja/models.md +0 -106
- openai_agents-0.0.19/docs/mcp.md +0 -61
- openai_agents-0.0.19/docs/release.md +0 -18
- openai_agents-0.0.19/examples/basic/hello_world_jupyter.py +0 -11
- openai_agents-0.0.19/tests/mcp/helpers.py +0 -58
- {openai_agents-0.0.19 → openai_agents-0.2.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/.github/ISSUE_TEMPLATE/model_provider.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/.github/ISSUE_TEMPLATE/question.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/.github/workflows/docs.yml +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/.github/workflows/publish.yml +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/.github/workflows/tests.yml +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/.gitignore +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/.prettierrc +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/.vscode/settings.json +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/LICENSE +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/assets/images/favicon-platform.svg +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/assets/images/graph.png +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/assets/images/mcp-tracing.jpg +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/assets/images/orchestration.png +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/assets/logo.svg +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/config.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/handoffs.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ja/agents.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ja/config.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ja/context.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ja/examples.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ja/handoffs.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ja/index.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ja/models/litellm.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ja/multi_agent.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ja/quickstart.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ja/repl.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ja/results.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ja/running_agents.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ja/streaming.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ja/tools.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ja/tracing.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ja/visualization.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ja/voice/pipeline.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ja/voice/quickstart.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ja/voice/tracing.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/models/litellm.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/multi_agent.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/quickstart.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/agent.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/agent_output.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/exceptions.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/extensions/handoff_filters.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/extensions/handoff_prompt.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/extensions/litellm.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/function_schema.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/guardrail.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/handoffs.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/index.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/items.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/lifecycle.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/mcp/server.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/mcp/util.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/model_settings.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/models/interface.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/models/openai_chatcompletions.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/models/openai_responses.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/repl.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/result.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/run.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/run_context.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/stream_events.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/tool.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/tracing/create.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/tracing/index.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/tracing/processor_interface.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/tracing/processors.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/tracing/scope.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/tracing/setup.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/tracing/span_data.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/tracing/spans.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/tracing/traces.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/tracing/util.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/usage.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/voice/events.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/voice/exceptions.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/voice/input.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/voice/model.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/voice/models/openai_provider.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/voice/models/openai_stt.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/voice/models/openai_tts.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/voice/pipeline.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/voice/pipeline_config.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/voice/result.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/voice/utils.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/ref/voice/workflow.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/repl.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/results.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/streaming.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/stylesheets/extra.css +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/tracing.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/visualization.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/voice/pipeline.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/voice/quickstart.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/docs/voice/tracing.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/__init__.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/agent_patterns/README.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/agent_patterns/agents_as_tools.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/agent_patterns/deterministic.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/agent_patterns/forcing_tool_use.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/agent_patterns/input_guardrails.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/agent_patterns/output_guardrails.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/agent_patterns/parallelization.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/agent_patterns/routing.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/agent_patterns/streaming_guardrails.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/basic/dynamic_system_prompt.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/basic/hello_world.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/basic/local_image.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/basic/media/image_bison.jpg +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/basic/non_strict_output_type.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/basic/previous_response_id.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/basic/prompt_template.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/basic/remote_image.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/basic/stream_items.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/basic/stream_text.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/basic/tools.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/customer_service/main.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/financial_research_agent/README.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/financial_research_agent/__init__.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/financial_research_agent/agents/__init__.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/financial_research_agent/agents/financials_agent.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/financial_research_agent/agents/planner_agent.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/financial_research_agent/agents/risk_agent.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/financial_research_agent/agents/search_agent.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/financial_research_agent/agents/verifier_agent.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/financial_research_agent/agents/writer_agent.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/financial_research_agent/main.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/financial_research_agent/manager.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/financial_research_agent/printer.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/handoffs/message_filter.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/handoffs/message_filter_streaming.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/hosted_mcp/__init__.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/hosted_mcp/approvals.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/hosted_mcp/simple.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/mcp/filesystem_example/README.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/mcp/filesystem_example/main.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/mcp/filesystem_example/sample_files/favorite_books.txt +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/mcp/filesystem_example/sample_files/favorite_cities.txt +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/mcp/filesystem_example/sample_files/favorite_songs.txt +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/mcp/git_example/README.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/mcp/git_example/main.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/mcp/sse_example/README.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/mcp/sse_example/main.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/mcp/sse_example/server.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/mcp/streamablehttp_example/README.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/mcp/streamablehttp_example/main.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/mcp/streamablehttp_example/server.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/model_providers/README.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/model_providers/custom_example_agent.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/model_providers/custom_example_global.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/model_providers/custom_example_provider.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/model_providers/litellm_auto.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/model_providers/litellm_provider.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/research_bot/README.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/research_bot/__init__.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/research_bot/agents/__init__.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/research_bot/agents/planner_agent.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/research_bot/agents/search_agent.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/research_bot/agents/writer_agent.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/research_bot/main.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/research_bot/manager.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/research_bot/printer.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/research_bot/sample_outputs/product_recs.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/research_bot/sample_outputs/product_recs.txt +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/research_bot/sample_outputs/vacation.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/research_bot/sample_outputs/vacation.txt +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/tools/code_interpreter.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/tools/computer_use.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/tools/file_search.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/tools/image_generator.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/tools/web_search.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/voice/__init__.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/voice/static/README.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/voice/static/__init__.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/voice/static/main.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/voice/static/util.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/voice/streamed/README.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/voice/streamed/__init__.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/voice/streamed/main.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/examples/voice/streamed/my_workflow.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/_config.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/_debug.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/agent_output.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/computer.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/exceptions.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/extensions/__init__.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/extensions/handoff_filters.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/extensions/handoff_prompt.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/extensions/models/__init__.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/extensions/models/litellm_provider.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/extensions/visualization.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/items.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/logger.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/models/__init__.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/models/_openai_shared.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/models/chatcmpl_helpers.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/models/fake_id.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/models/interface.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/models/multi_provider.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/models/openai_provider.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/prompts.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/py.typed +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/result.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/run_context.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/stream_events.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/strict_schema.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/tracing/create.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/tracing/logger.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/tracing/processors.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/tracing/provider.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/tracing/scope.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/tracing/setup.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/tracing/span_data.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/tracing/spans.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/tracing/traces.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/tracing/util.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/usage.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/util/__init__.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/util/_coro.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/util/_error_tracing.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/util/_json.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/util/_pretty_print.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/util/_transforms.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/util/_types.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/version.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/voice/__init__.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/voice/events.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/voice/exceptions.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/voice/imports.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/voice/input.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/voice/model.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/voice/models/__init__.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/voice/models/openai_model_provider.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/voice/models/openai_tts.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/voice/pipeline_config.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/voice/result.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/src/agents/voice/utils.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/README.md +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/__init__.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/conftest.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/fake_model.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/fastapi/__init__.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/fastapi/streaming_app.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/fastapi/test_streaming_context.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/mcp/__init__.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/mcp/conftest.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/mcp/test_connect_disconnect.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/mcp/test_mcp_tracing.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/mcp/test_runner_calls_mcp.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/models/__init__.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/models/conftest.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/models/test_kwargs_functionality.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/models/test_litellm_chatcompletions_stream.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/models/test_litellm_extra_body.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/models/test_map.py +0 -0
- {openai_agents-0.0.19/tests/voice → openai_agents-0.2.0/tests/realtime}/__init__.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_agent_hooks.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_agent_prompt.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_agent_runner.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_agent_runner_streamed.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_agent_tracing.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_cancel_streaming.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_config.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_doc_parsing.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_extension_filters.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_extra_headers.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_global_hooks.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_guardrails.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_max_turns.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_openai_chatcompletions.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_openai_chatcompletions_converter.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_openai_chatcompletions_stream.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_openai_responses_converter.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_output_tool.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_pretty_print.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_repl.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_responses.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_responses_tracing.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_result_cast.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_run.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_run_config.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_run_error_details.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_strict_schema.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_tool_choice_reset.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_tool_converter.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_tool_use_behavior.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_trace_processor.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_tracing.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_tracing_errors.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_tracing_errors_streamed.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_usage.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/test_visualization.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/testing_processor.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/tracing/test_processor_api_key.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/voice/conftest.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/voice/fake_models.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/voice/helpers.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/voice/test_input.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/voice/test_openai_tts.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/voice/test_pipeline.py +0 -0
- {openai_agents-0.0.19 → openai_agents-0.2.0}/tests/voice/test_workflow.py +0 -0
|
@@ -21,6 +21,7 @@ jobs:
|
|
|
21
21
|
days-before-pr-stale: 10
|
|
22
22
|
days-before-pr-close: 7
|
|
23
23
|
stale-pr-label: "stale"
|
|
24
|
+
exempt-issue-labels: "skip-stale"
|
|
24
25
|
stale-pr-message: "This PR is stale because it has been open for 10 days with no activity."
|
|
25
26
|
close-pr-message: "This PR was closed because it has been inactive for 7 days since being marked as stale."
|
|
26
27
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
// Use IntelliSense to learn about possible attributes.
|
|
3
|
+
// Hover to view descriptions of existing attributes.
|
|
4
|
+
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
|
5
|
+
"version": "0.2.0",
|
|
6
|
+
"configurations": [
|
|
7
|
+
{
|
|
8
|
+
"name": "Python Debugger: Python File",
|
|
9
|
+
"type": "debugpy",
|
|
10
|
+
"request": "launch",
|
|
11
|
+
"program": "${file}"
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
}
|
|
@@ -35,6 +35,8 @@ Welcome to the OpenAI Agents SDK repository. This file contains the main points
|
|
|
35
35
|
|
|
36
36
|
Coverage can be generated with `make coverage`.
|
|
37
37
|
|
|
38
|
+
All python commands should be run via `uv run python ...`
|
|
39
|
+
|
|
38
40
|
## Snapshot tests
|
|
39
41
|
|
|
40
42
|
Some tests rely on inline snapshots. See `tests/README.md` for details on updating them:
|
|
@@ -64,6 +66,6 @@ Commit messages should be concise and written in the imperative mood. Small, foc
|
|
|
64
66
|
## What reviewers look for
|
|
65
67
|
|
|
66
68
|
- Tests covering new behaviour.
|
|
67
|
-
- Consistent style: code formatted with `ruff format`, imports sorted, and type hints passing `mypy
|
|
69
|
+
- Consistent style: code formatted with `uv run ruff format`, imports sorted, and type hints passing `uv run mypy .`.
|
|
68
70
|
- Clear documentation for any public API changes.
|
|
69
71
|
- Clean history and a helpful PR description.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Read the AGENTS.md file for instructions.
|
|
@@ -7,6 +7,10 @@ format:
|
|
|
7
7
|
uv run ruff format
|
|
8
8
|
uv run ruff check --fix
|
|
9
9
|
|
|
10
|
+
.PHONY: format-check
|
|
11
|
+
format-check:
|
|
12
|
+
uv run ruff format --check
|
|
13
|
+
|
|
10
14
|
.PHONY: lint
|
|
11
15
|
lint:
|
|
12
16
|
uv run ruff check
|
|
@@ -55,5 +59,5 @@ serve-docs:
|
|
|
55
59
|
deploy-docs:
|
|
56
60
|
uv run mkdocs gh-deploy --force --verbose
|
|
57
61
|
|
|
58
|
-
|
|
59
|
-
|
|
62
|
+
.PHONY: check
|
|
63
|
+
check: format-check lint mypy tests
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openai-agents
|
|
3
|
-
Version: 0.0
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: OpenAI Agents SDK
|
|
5
|
-
Project-URL: Homepage, https://github.
|
|
5
|
+
Project-URL: Homepage, https://openai.github.io/openai-agents-python/
|
|
6
6
|
Project-URL: Repository, https://github.com/openai/openai-agents-python
|
|
7
7
|
Author-email: OpenAI <support@openai.com>
|
|
8
8
|
License-Expression: MIT
|
|
@@ -15,18 +15,21 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.10
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
19
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
19
20
|
Classifier: Typing :: Typed
|
|
20
21
|
Requires-Python: >=3.9
|
|
21
22
|
Requires-Dist: griffe<2,>=1.5.6
|
|
22
23
|
Requires-Dist: mcp<2,>=1.9.4; python_version >= '3.10'
|
|
23
|
-
Requires-Dist: openai
|
|
24
|
+
Requires-Dist: openai<2,>=1.93.1
|
|
24
25
|
Requires-Dist: pydantic<3,>=2.10
|
|
25
26
|
Requires-Dist: requests<3,>=2.0
|
|
26
27
|
Requires-Dist: types-requests<3,>=2.0
|
|
27
28
|
Requires-Dist: typing-extensions<5,>=4.12.2
|
|
28
29
|
Provides-Extra: litellm
|
|
29
30
|
Requires-Dist: litellm<2,>=1.67.4.post1; extra == 'litellm'
|
|
31
|
+
Provides-Extra: realtime
|
|
32
|
+
Requires-Dist: websockets<16,>=15.0; extra == 'realtime'
|
|
30
33
|
Provides-Extra: viz
|
|
31
34
|
Requires-Dist: graphviz>=0.17; extra == 'viz'
|
|
32
35
|
Provides-Extra: voice
|
|
@@ -48,22 +51,138 @@ The OpenAI Agents SDK is a lightweight yet powerful framework for building multi
|
|
|
48
51
|
1. [**Agents**](https://openai.github.io/openai-agents-python/agents): LLMs configured with instructions, tools, guardrails, and handoffs
|
|
49
52
|
2. [**Handoffs**](https://openai.github.io/openai-agents-python/handoffs/): A specialized tool call used by the Agents SDK for transferring control between agents
|
|
50
53
|
3. [**Guardrails**](https://openai.github.io/openai-agents-python/guardrails/): Configurable safety checks for input and output validation
|
|
51
|
-
4. [**
|
|
54
|
+
4. [**Sessions**](#sessions): Automatic conversation history management across agent runs
|
|
55
|
+
5. [**Tracing**](https://openai.github.io/openai-agents-python/tracing/): Built-in tracking of agent runs, allowing you to view, debug and optimize your workflows
|
|
52
56
|
|
|
53
57
|
Explore the [examples](examples) directory to see the SDK in action, and read our [documentation](https://openai.github.io/openai-agents-python/) for more details.
|
|
54
58
|
|
|
59
|
+
## Sessions
|
|
60
|
+
|
|
61
|
+
The Agents SDK provides built-in session memory to automatically maintain conversation history across multiple agent runs, eliminating the need to manually handle `.to_input_list()` between turns.
|
|
62
|
+
|
|
63
|
+
### Quick start
|
|
64
|
+
|
|
65
|
+
```python
|
|
66
|
+
from agents import Agent, Runner, SQLiteSession
|
|
67
|
+
|
|
68
|
+
# Create agent
|
|
69
|
+
agent = Agent(
|
|
70
|
+
name="Assistant",
|
|
71
|
+
instructions="Reply very concisely.",
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
# Create a session instance
|
|
75
|
+
session = SQLiteSession("conversation_123")
|
|
76
|
+
|
|
77
|
+
# First turn
|
|
78
|
+
result = await Runner.run(
|
|
79
|
+
agent,
|
|
80
|
+
"What city is the Golden Gate Bridge in?",
|
|
81
|
+
session=session
|
|
82
|
+
)
|
|
83
|
+
print(result.final_output) # "San Francisco"
|
|
84
|
+
|
|
85
|
+
# Second turn - agent automatically remembers previous context
|
|
86
|
+
result = await Runner.run(
|
|
87
|
+
agent,
|
|
88
|
+
"What state is it in?",
|
|
89
|
+
session=session
|
|
90
|
+
)
|
|
91
|
+
print(result.final_output) # "California"
|
|
92
|
+
|
|
93
|
+
# Also works with synchronous runner
|
|
94
|
+
result = Runner.run_sync(
|
|
95
|
+
agent,
|
|
96
|
+
"What's the population?",
|
|
97
|
+
session=session
|
|
98
|
+
)
|
|
99
|
+
print(result.final_output) # "Approximately 39 million"
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Session options
|
|
103
|
+
|
|
104
|
+
- **No memory** (default): No session memory when session parameter is omitted
|
|
105
|
+
- **`session: Session = DatabaseSession(...)`**: Use a Session instance to manage conversation history
|
|
106
|
+
|
|
107
|
+
```python
|
|
108
|
+
from agents import Agent, Runner, SQLiteSession
|
|
109
|
+
|
|
110
|
+
# Custom SQLite database file
|
|
111
|
+
session = SQLiteSession("user_123", "conversations.db")
|
|
112
|
+
agent = Agent(name="Assistant")
|
|
113
|
+
|
|
114
|
+
# Different session IDs maintain separate conversation histories
|
|
115
|
+
result1 = await Runner.run(
|
|
116
|
+
agent,
|
|
117
|
+
"Hello",
|
|
118
|
+
session=session
|
|
119
|
+
)
|
|
120
|
+
result2 = await Runner.run(
|
|
121
|
+
agent,
|
|
122
|
+
"Hello",
|
|
123
|
+
session=SQLiteSession("user_456", "conversations.db")
|
|
124
|
+
)
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Custom session implementations
|
|
128
|
+
|
|
129
|
+
You can implement your own session memory by creating a class that follows the `Session` protocol:
|
|
130
|
+
|
|
131
|
+
```python
|
|
132
|
+
from agents.memory import Session
|
|
133
|
+
from typing import List
|
|
134
|
+
|
|
135
|
+
class MyCustomSession:
|
|
136
|
+
"""Custom session implementation following the Session protocol."""
|
|
137
|
+
|
|
138
|
+
def __init__(self, session_id: str):
|
|
139
|
+
self.session_id = session_id
|
|
140
|
+
# Your initialization here
|
|
141
|
+
|
|
142
|
+
async def get_items(self, limit: int | None = None) -> List[dict]:
|
|
143
|
+
# Retrieve conversation history for the session
|
|
144
|
+
pass
|
|
145
|
+
|
|
146
|
+
async def add_items(self, items: List[dict]) -> None:
|
|
147
|
+
# Store new items for the session
|
|
148
|
+
pass
|
|
149
|
+
|
|
150
|
+
async def pop_item(self) -> dict | None:
|
|
151
|
+
# Remove and return the most recent item from the session
|
|
152
|
+
pass
|
|
153
|
+
|
|
154
|
+
async def clear_session(self) -> None:
|
|
155
|
+
# Clear all items for the session
|
|
156
|
+
pass
|
|
157
|
+
|
|
158
|
+
# Use your custom session
|
|
159
|
+
agent = Agent(name="Assistant")
|
|
160
|
+
result = await Runner.run(
|
|
161
|
+
agent,
|
|
162
|
+
"Hello",
|
|
163
|
+
session=MyCustomSession("my_session")
|
|
164
|
+
)
|
|
165
|
+
```
|
|
166
|
+
|
|
55
167
|
## Get started
|
|
56
168
|
|
|
57
169
|
1. Set up your Python environment
|
|
58
170
|
|
|
59
|
-
|
|
171
|
+
- Option A: Using venv (traditional method)
|
|
172
|
+
```bash
|
|
60
173
|
python -m venv env
|
|
61
|
-
source env/bin/activate
|
|
174
|
+
source env/bin/activate # On Windows: env\Scripts\activate
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
- Option B: Using uv (recommended)
|
|
178
|
+
```bash
|
|
179
|
+
uv venv
|
|
180
|
+
source .venv/bin/activate # On Windows: .venv\Scripts\activate
|
|
62
181
|
```
|
|
63
182
|
|
|
64
183
|
2. Install Agents SDK
|
|
65
184
|
|
|
66
|
-
```
|
|
185
|
+
```bash
|
|
67
186
|
pip install openai-agents
|
|
68
187
|
```
|
|
69
188
|
|
|
@@ -86,7 +205,7 @@ print(result.final_output)
|
|
|
86
205
|
|
|
87
206
|
(_If running this, ensure you set the `OPENAI_API_KEY` environment variable_)
|
|
88
207
|
|
|
89
|
-
(_For Jupyter notebook users, see [hello_world_jupyter.
|
|
208
|
+
(_For Jupyter notebook users, see [hello_world_jupyter.ipynb](examples/basic/hello_world_jupyter.ipynb)_)
|
|
90
209
|
|
|
91
210
|
## Handoffs example
|
|
92
211
|
|
|
@@ -199,10 +318,16 @@ make sync
|
|
|
199
318
|
|
|
200
319
|
2. (After making changes) lint/test
|
|
201
320
|
|
|
321
|
+
```
|
|
322
|
+
make check # run tests linter and typechecker
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
Or to run them individually:
|
|
202
326
|
```
|
|
203
327
|
make tests # run tests
|
|
204
328
|
make mypy # run typechecker
|
|
205
329
|
make lint # run linter
|
|
330
|
+
make format-check # run style checker
|
|
206
331
|
```
|
|
207
332
|
|
|
208
333
|
## Acknowledgements
|
|
@@ -12,22 +12,138 @@ The OpenAI Agents SDK is a lightweight yet powerful framework for building multi
|
|
|
12
12
|
1. [**Agents**](https://openai.github.io/openai-agents-python/agents): LLMs configured with instructions, tools, guardrails, and handoffs
|
|
13
13
|
2. [**Handoffs**](https://openai.github.io/openai-agents-python/handoffs/): A specialized tool call used by the Agents SDK for transferring control between agents
|
|
14
14
|
3. [**Guardrails**](https://openai.github.io/openai-agents-python/guardrails/): Configurable safety checks for input and output validation
|
|
15
|
-
4. [**
|
|
15
|
+
4. [**Sessions**](#sessions): Automatic conversation history management across agent runs
|
|
16
|
+
5. [**Tracing**](https://openai.github.io/openai-agents-python/tracing/): Built-in tracking of agent runs, allowing you to view, debug and optimize your workflows
|
|
16
17
|
|
|
17
18
|
Explore the [examples](examples) directory to see the SDK in action, and read our [documentation](https://openai.github.io/openai-agents-python/) for more details.
|
|
18
19
|
|
|
20
|
+
## Sessions
|
|
21
|
+
|
|
22
|
+
The Agents SDK provides built-in session memory to automatically maintain conversation history across multiple agent runs, eliminating the need to manually handle `.to_input_list()` between turns.
|
|
23
|
+
|
|
24
|
+
### Quick start
|
|
25
|
+
|
|
26
|
+
```python
|
|
27
|
+
from agents import Agent, Runner, SQLiteSession
|
|
28
|
+
|
|
29
|
+
# Create agent
|
|
30
|
+
agent = Agent(
|
|
31
|
+
name="Assistant",
|
|
32
|
+
instructions="Reply very concisely.",
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
# Create a session instance
|
|
36
|
+
session = SQLiteSession("conversation_123")
|
|
37
|
+
|
|
38
|
+
# First turn
|
|
39
|
+
result = await Runner.run(
|
|
40
|
+
agent,
|
|
41
|
+
"What city is the Golden Gate Bridge in?",
|
|
42
|
+
session=session
|
|
43
|
+
)
|
|
44
|
+
print(result.final_output) # "San Francisco"
|
|
45
|
+
|
|
46
|
+
# Second turn - agent automatically remembers previous context
|
|
47
|
+
result = await Runner.run(
|
|
48
|
+
agent,
|
|
49
|
+
"What state is it in?",
|
|
50
|
+
session=session
|
|
51
|
+
)
|
|
52
|
+
print(result.final_output) # "California"
|
|
53
|
+
|
|
54
|
+
# Also works with synchronous runner
|
|
55
|
+
result = Runner.run_sync(
|
|
56
|
+
agent,
|
|
57
|
+
"What's the population?",
|
|
58
|
+
session=session
|
|
59
|
+
)
|
|
60
|
+
print(result.final_output) # "Approximately 39 million"
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Session options
|
|
64
|
+
|
|
65
|
+
- **No memory** (default): No session memory when session parameter is omitted
|
|
66
|
+
- **`session: Session = DatabaseSession(...)`**: Use a Session instance to manage conversation history
|
|
67
|
+
|
|
68
|
+
```python
|
|
69
|
+
from agents import Agent, Runner, SQLiteSession
|
|
70
|
+
|
|
71
|
+
# Custom SQLite database file
|
|
72
|
+
session = SQLiteSession("user_123", "conversations.db")
|
|
73
|
+
agent = Agent(name="Assistant")
|
|
74
|
+
|
|
75
|
+
# Different session IDs maintain separate conversation histories
|
|
76
|
+
result1 = await Runner.run(
|
|
77
|
+
agent,
|
|
78
|
+
"Hello",
|
|
79
|
+
session=session
|
|
80
|
+
)
|
|
81
|
+
result2 = await Runner.run(
|
|
82
|
+
agent,
|
|
83
|
+
"Hello",
|
|
84
|
+
session=SQLiteSession("user_456", "conversations.db")
|
|
85
|
+
)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Custom session implementations
|
|
89
|
+
|
|
90
|
+
You can implement your own session memory by creating a class that follows the `Session` protocol:
|
|
91
|
+
|
|
92
|
+
```python
|
|
93
|
+
from agents.memory import Session
|
|
94
|
+
from typing import List
|
|
95
|
+
|
|
96
|
+
class MyCustomSession:
|
|
97
|
+
"""Custom session implementation following the Session protocol."""
|
|
98
|
+
|
|
99
|
+
def __init__(self, session_id: str):
|
|
100
|
+
self.session_id = session_id
|
|
101
|
+
# Your initialization here
|
|
102
|
+
|
|
103
|
+
async def get_items(self, limit: int | None = None) -> List[dict]:
|
|
104
|
+
# Retrieve conversation history for the session
|
|
105
|
+
pass
|
|
106
|
+
|
|
107
|
+
async def add_items(self, items: List[dict]) -> None:
|
|
108
|
+
# Store new items for the session
|
|
109
|
+
pass
|
|
110
|
+
|
|
111
|
+
async def pop_item(self) -> dict | None:
|
|
112
|
+
# Remove and return the most recent item from the session
|
|
113
|
+
pass
|
|
114
|
+
|
|
115
|
+
async def clear_session(self) -> None:
|
|
116
|
+
# Clear all items for the session
|
|
117
|
+
pass
|
|
118
|
+
|
|
119
|
+
# Use your custom session
|
|
120
|
+
agent = Agent(name="Assistant")
|
|
121
|
+
result = await Runner.run(
|
|
122
|
+
agent,
|
|
123
|
+
"Hello",
|
|
124
|
+
session=MyCustomSession("my_session")
|
|
125
|
+
)
|
|
126
|
+
```
|
|
127
|
+
|
|
19
128
|
## Get started
|
|
20
129
|
|
|
21
130
|
1. Set up your Python environment
|
|
22
131
|
|
|
23
|
-
|
|
132
|
+
- Option A: Using venv (traditional method)
|
|
133
|
+
```bash
|
|
24
134
|
python -m venv env
|
|
25
|
-
source env/bin/activate
|
|
135
|
+
source env/bin/activate # On Windows: env\Scripts\activate
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
- Option B: Using uv (recommended)
|
|
139
|
+
```bash
|
|
140
|
+
uv venv
|
|
141
|
+
source .venv/bin/activate # On Windows: .venv\Scripts\activate
|
|
26
142
|
```
|
|
27
143
|
|
|
28
144
|
2. Install Agents SDK
|
|
29
145
|
|
|
30
|
-
```
|
|
146
|
+
```bash
|
|
31
147
|
pip install openai-agents
|
|
32
148
|
```
|
|
33
149
|
|
|
@@ -50,7 +166,7 @@ print(result.final_output)
|
|
|
50
166
|
|
|
51
167
|
(_If running this, ensure you set the `OPENAI_API_KEY` environment variable_)
|
|
52
168
|
|
|
53
|
-
(_For Jupyter notebook users, see [hello_world_jupyter.
|
|
169
|
+
(_For Jupyter notebook users, see [hello_world_jupyter.ipynb](examples/basic/hello_world_jupyter.ipynb)_)
|
|
54
170
|
|
|
55
171
|
## Handoffs example
|
|
56
172
|
|
|
@@ -163,10 +279,16 @@ make sync
|
|
|
163
279
|
|
|
164
280
|
2. (After making changes) lint/test
|
|
165
281
|
|
|
282
|
+
```
|
|
283
|
+
make check # run tests linter and typechecker
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
Or to run them individually:
|
|
166
287
|
```
|
|
167
288
|
make tests # run tests
|
|
168
289
|
make mypy # run typechecker
|
|
169
290
|
make lint # run linter
|
|
291
|
+
make format-check # run style checker
|
|
170
292
|
```
|
|
171
293
|
|
|
172
294
|
## Acknowledgements
|
|
@@ -6,6 +6,7 @@ Agents are the core building block in your apps. An agent is a large language mo
|
|
|
6
6
|
|
|
7
7
|
The most common properties of an agent you'll configure are:
|
|
8
8
|
|
|
9
|
+
- `name`: A required string that identifies your agent.
|
|
9
10
|
- `instructions`: also known as a developer message or system prompt.
|
|
10
11
|
- `model`: which LLM to use, and optional `model_settings` to configure model tuning parameters like temperature, top_p, etc.
|
|
11
12
|
- `tools`: Tools that the agent can use to achieve its tasks.
|
|
@@ -38,7 +38,8 @@ class UserInfo: # (1)!
|
|
|
38
38
|
|
|
39
39
|
@function_tool
|
|
40
40
|
async def fetch_user_age(wrapper: RunContextWrapper[UserInfo]) -> str: # (2)!
|
|
41
|
-
|
|
41
|
+
"""Fetch the age of the user. Call this function to get user's age information."""
|
|
42
|
+
return f"The user {wrapper.context.name} is 47 years old"
|
|
42
43
|
|
|
43
44
|
async def main():
|
|
44
45
|
user_info = UserInfo(name="John", uid=123)
|
|
@@ -40,3 +40,6 @@ Check out a variety of sample implementations of the SDK in the examples section
|
|
|
40
40
|
|
|
41
41
|
- **[voice](https://github.com/openai/openai-agents-python/tree/main/examples/voice):**
|
|
42
42
|
See examples of voice agents, using our TTS and STT models.
|
|
43
|
+
|
|
44
|
+
- **[realtime](https://github.com/openai/openai-agents-python/tree/main/examples/realtime):**
|
|
45
|
+
Examples showing how to build realtime experiences using the SDK.
|
|
@@ -23,7 +23,7 @@ Input guardrails run in 3 steps:
|
|
|
23
23
|
|
|
24
24
|
Output guardrails run in 3 steps:
|
|
25
25
|
|
|
26
|
-
1. First, the guardrail receives the
|
|
26
|
+
1. First, the guardrail receives the output produced by the agent.
|
|
27
27
|
2. Next, the guardrail function runs to produce a [`GuardrailFunctionOutput`][agents.guardrail.GuardrailFunctionOutput], which is then wrapped in an [`OutputGuardrailResult`][agents.guardrail.OutputGuardrailResult]
|
|
28
28
|
3. Finally, we check if [`.tripwire_triggered`][agents.guardrail.GuardrailFunctionOutput.tripwire_triggered] is true. If true, an [`OutputGuardrailTripwireTriggered`][agents.exceptions.OutputGuardrailTripwireTriggered] exception is raised, so you can appropriately respond to the user or handle the exception.
|
|
29
29
|
|
|
@@ -5,6 +5,7 @@ The [OpenAI Agents SDK](https://github.com/openai/openai-agents-python) enables
|
|
|
5
5
|
- **Agents**, which are LLMs equipped with instructions and tools
|
|
6
6
|
- **Handoffs**, which allow agents to delegate to other agents for specific tasks
|
|
7
7
|
- **Guardrails**, which enable the inputs to agents to be validated
|
|
8
|
+
- **Sessions**, which automatically maintains conversation history across agent runs
|
|
8
9
|
|
|
9
10
|
In combination with Python, these primitives are powerful enough to express complex relationships between tools and agents, and allow you to build real-world applications without a steep learning curve. In addition, the SDK comes with built-in **tracing** that lets you visualize and debug your agentic flows, as well as evaluate them and even fine-tune models for your application.
|
|
10
11
|
|
|
@@ -21,6 +22,7 @@ Here are the main features of the SDK:
|
|
|
21
22
|
- Python-first: Use built-in language features to orchestrate and chain agents, rather than needing to learn new abstractions.
|
|
22
23
|
- Handoffs: A powerful feature to coordinate and delegate between multiple agents.
|
|
23
24
|
- Guardrails: Run input validations and checks in parallel to your agents, breaking early if the checks fail.
|
|
25
|
+
- Sessions: Automatic conversation history management across agent runs, eliminating manual state handling.
|
|
24
26
|
- Function tools: Turn any Python function into a tool, with automatic schema generation and Pydantic-powered validation.
|
|
25
27
|
- Tracing: Built-in tracing that lets you visualize, debug and monitor your workflows, as well as use the OpenAI suite of evaluation, fine-tuning and distillation tools.
|
|
26
28
|
|
|
@@ -4,44 +4,44 @@ search:
|
|
|
4
4
|
---
|
|
5
5
|
# ガードレール
|
|
6
6
|
|
|
7
|
-
ガードレールは エージェント と _
|
|
7
|
+
ガードレールは エージェント と _並行して_ 実行され、ユーザー入力のチェックとバリデーションを行えます。例えば、とても賢い(つまり遅く/高価な)モデルを使用してカスタマーリクエストを処理するエージェントがあるとします。悪意のある ユーザー がモデルに数学の宿題を手伝わせようとするのは避けたいでしょう。そこで、速く/安価なモデルで動くガードレールを実行できます。ガードレールが悪意のある利用を検知すると、直ちにエラーを送出して高価なモデルの実行を停止し、時間とコストを節約できます。
|
|
8
8
|
|
|
9
|
-
ガードレールには 2
|
|
9
|
+
ガードレールには 2 種類あります:
|
|
10
10
|
|
|
11
|
-
1.
|
|
12
|
-
2.
|
|
11
|
+
1. 入力ガードレール は初期 ユーザー 入力に対して実行されます
|
|
12
|
+
2. 出力ガードレール は最終的なエージェント出力に対して実行されます
|
|
13
13
|
|
|
14
|
-
##
|
|
14
|
+
## 入力ガードレール
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
入力ガードレールは 3 ステップで実行されます:
|
|
17
17
|
|
|
18
18
|
1. まず、ガードレールはエージェントに渡されたものと同じ入力を受け取ります。
|
|
19
|
-
2. 次に、ガードレール関数が実行され [`GuardrailFunctionOutput`][agents.guardrail.GuardrailFunctionOutput] を生成し、それが [`InputGuardrailResult`][agents.guardrail.InputGuardrailResult]
|
|
20
|
-
3. 最後に [
|
|
19
|
+
2. 次に、ガードレール関数が実行され [`GuardrailFunctionOutput`][agents.guardrail.GuardrailFunctionOutput] を生成し、それが [`InputGuardrailResult`][agents.guardrail.InputGuardrailResult] にラップされます。
|
|
20
|
+
3. 最後に [.tripwire_triggered][agents.guardrail.GuardrailFunctionOutput.tripwire_triggered] が true かどうかを確認します。true の場合、[`InputGuardrailTripwireTriggered`][agents.exceptions.InputGuardrailTripwireTriggered] 例外が送出されるので、適切に ユーザー に応答したり例外を処理できます。
|
|
21
21
|
|
|
22
22
|
!!! Note
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
入力ガードレールは ユーザー 入力に対して実行されることを意図しているため、ガードレールは *最初* のエージェントでのみ実行されます。「なぜ `guardrails` プロパティがエージェントにあり、`Runner.run` に渡さないのか」と疑問に思うかもしれません。これは、ガードレールが実際の エージェント と密接に関連していることが多いからです。異なるエージェントには異なるガードレールを実行するため、コードを同じ場所に置くことで可読性が向上します。
|
|
25
25
|
|
|
26
|
-
##
|
|
26
|
+
## 出力ガードレール
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
出力ガードレールは 3 ステップで実行されます:
|
|
29
29
|
|
|
30
|
-
1.
|
|
31
|
-
2. 次に、ガードレール関数が実行され [`GuardrailFunctionOutput`][agents.guardrail.GuardrailFunctionOutput] を生成し、それが [`OutputGuardrailResult`][agents.guardrail.OutputGuardrailResult]
|
|
32
|
-
3. 最後に [
|
|
30
|
+
1. まず、ガードレールはエージェントが生成した出力を受け取ります。
|
|
31
|
+
2. 次に、ガードレール関数が実行され [`GuardrailFunctionOutput`][agents.guardrail.GuardrailFunctionOutput] を生成し、それが [`OutputGuardrailResult`][agents.guardrail.OutputGuardrailResult] にラップされます。
|
|
32
|
+
3. 最後に [.tripwire_triggered][agents.guardrail.GuardrailFunctionOutput.tripwire_triggered] が true かどうかを確認します。true の場合、[`OutputGuardrailTripwireTriggered`][agents.exceptions.OutputGuardrailTripwireTriggered] 例外が送出されるので、適切に ユーザー に応答したり例外を処理できます。
|
|
33
33
|
|
|
34
34
|
!!! Note
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
出力ガードレールは最終的なエージェント出力に対して実行されることを意図しているため、ガードレールは *最後* のエージェントでのみ実行されます。入力ガードレールの場合と同様、ガードレールが実際の エージェント と密接に関連していることが多いため、コードを同じ場所に置くことで可読性が向上します。
|
|
37
37
|
|
|
38
|
-
##
|
|
38
|
+
## トリップワイヤー
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
入力または出力がガードレールを通過できなかった場合、ガードレールはトリップワイヤーでそれを示すことができます。トリップワイヤーがトリガーされたガードレールを検知した時点で、直ちに `{Input,Output}GuardrailTripwireTriggered` 例外を送出し、エージェントの実行を停止します。
|
|
41
41
|
|
|
42
42
|
## ガードレールの実装
|
|
43
43
|
|
|
44
|
-
入力を受け取り、[`GuardrailFunctionOutput`][agents.guardrail.GuardrailFunctionOutput]
|
|
44
|
+
入力を受け取り、[`GuardrailFunctionOutput`][agents.guardrail.GuardrailFunctionOutput] を返す関数を提供する必要があります。この例では、内部で エージェント を実行してこれを行います。
|
|
45
45
|
|
|
46
46
|
```python
|
|
47
47
|
from pydantic import BaseModel
|
|
@@ -94,12 +94,12 @@ async def main():
|
|
|
94
94
|
print("Math homework guardrail tripped")
|
|
95
95
|
```
|
|
96
96
|
|
|
97
|
-
1.
|
|
98
|
-
2.
|
|
97
|
+
1. このエージェントをガードレール関数内で使用します。
|
|
98
|
+
2. これはエージェントの入力/コンテキストを受け取り、結果を返すガードレール関数です。
|
|
99
99
|
3. ガードレール結果に追加情報を含めることができます。
|
|
100
100
|
4. これはワークフローを定義する実際のエージェントです。
|
|
101
101
|
|
|
102
|
-
|
|
102
|
+
出力ガードレールも同様です。
|
|
103
103
|
|
|
104
104
|
```python
|
|
105
105
|
from pydantic import BaseModel
|
|
@@ -155,4 +155,4 @@ async def main():
|
|
|
155
155
|
1. これは実際のエージェントの出力型です。
|
|
156
156
|
2. これはガードレールの出力型です。
|
|
157
157
|
3. これはエージェントの出力を受け取り、結果を返すガードレール関数です。
|
|
158
|
-
4. これはワークフローを定義する実際のエージェントです。
|
|
158
|
+
4. これはワークフローを定義する実際のエージェントです。
|
|
@@ -23,13 +23,20 @@ Agents SDK は MCP をサポートしており、これにより幅広い MCP
|
|
|
23
23
|
たとえば、[公式 MCP filesystem サーバー](https://www.npmjs.com/package/@modelcontextprotocol/server-filesystem)を利用する場合は次のようになります。
|
|
24
24
|
|
|
25
25
|
```python
|
|
26
|
+
from agents.run_context import RunContextWrapper
|
|
27
|
+
|
|
26
28
|
async with MCPServerStdio(
|
|
27
29
|
params={
|
|
28
30
|
"command": "npx",
|
|
29
31
|
"args": ["-y", "@modelcontextprotocol/server-filesystem", samples_dir],
|
|
30
32
|
}
|
|
31
33
|
) as server:
|
|
32
|
-
|
|
34
|
+
# 注意:実際には通常は MCP サーバーをエージェントに追加し、
|
|
35
|
+
# フレームワークがツール一覧の取得を自動的に処理するようにします。
|
|
36
|
+
# list_tools() への直接呼び出しには run_context と agent パラメータが必要です。
|
|
37
|
+
run_context = RunContextWrapper(context=None)
|
|
38
|
+
agent = Agent(name="test", instructions="test")
|
|
39
|
+
tools = await server.list_tools(run_context, agent)
|
|
33
40
|
```
|
|
34
41
|
|
|
35
42
|
## MCP サーバーの利用
|