openai-agents 0.2.5__tar.gz → 0.2.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of openai-agents might be problematic. Click here for more details.
- {openai_agents-0.2.5 → openai_agents-0.2.7}/PKG-INFO +2 -2
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/handoffs.md +1 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/index.md +1 -1
- openai_agents-0.2.7/docs/ja/agents.md +248 -0
- openai_agents-0.2.7/docs/ja/config.md +98 -0
- openai_agents-0.2.7/docs/ja/context.md +82 -0
- openai_agents-0.2.7/docs/ja/examples.md +47 -0
- openai_agents-0.2.7/docs/ja/guardrails.md +158 -0
- openai_agents-0.2.7/docs/ja/handoffs.md +118 -0
- openai_agents-0.2.7/docs/ja/index.md +58 -0
- openai_agents-0.2.7/docs/ja/mcp.md +191 -0
- openai_agents-0.2.7/docs/ja/models/index.md +151 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ja/models/litellm.md +11 -11
- openai_agents-0.2.7/docs/ja/multi_agent.md +41 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ja/quickstart.md +22 -22
- openai_agents-0.2.7/docs/ja/realtime/guide.md +176 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ja/realtime/quickstart.md +22 -22
- openai_agents-0.2.7/docs/ja/release.md +32 -0
- openai_agents-0.2.7/docs/ja/repl.md +23 -0
- openai_agents-0.2.7/docs/ja/results.md +56 -0
- openai_agents-0.2.7/docs/ja/running_agents.md +141 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ja/sessions.md +24 -24
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ja/streaming.md +8 -8
- openai_agents-0.2.7/docs/ja/tools.md +347 -0
- openai_agents-0.2.7/docs/ja/tracing.md +150 -0
- openai_agents-0.2.7/docs/ja/visualization.md +105 -0
- openai_agents-0.2.7/docs/ja/voice/pipeline.md +79 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ja/voice/quickstart.md +10 -10
- openai_agents-0.2.7/docs/ja/voice/tracing.md +18 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/realtime/guide.md +18 -0
- openai_agents-0.2.7/docs/ref/memory/session.md +3 -0
- openai_agents-0.2.7/docs/ref/realtime/handoffs.md +3 -0
- openai_agents-0.2.7/docs/ref/realtime/items.md +3 -0
- openai_agents-0.2.7/docs/ref/realtime/model_events.md +3 -0
- openai_agents-0.2.7/docs/ref/realtime/model_inputs.md +3 -0
- openai_agents-0.2.7/docs/ref/realtime/openai_realtime.md +3 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/scripts/translate_docs.py +13 -3
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/tools.md +21 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/basic/agent_lifecycle_example.py +10 -5
- openai_agents-0.2.7/examples/basic/hello_world_gpt_oss.py +38 -0
- openai_agents-0.2.7/examples/basic/simple_gpt_5.py +30 -0
- openai_agents-0.2.7/examples/basic/stream_function_call_args.py +86 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/customer_service/main.py +5 -4
- openai_agents-0.2.7/examples/realtime/app/agent.py +93 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/pyproject.toml +2 -2
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/agent.py +130 -2
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/extensions/models/litellm_model.py +12 -6
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/lifecycle.py +2 -2
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/model_settings.py +12 -2
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/models/chatcmpl_converter.py +14 -11
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/models/openai_chatcompletions.py +2 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/models/openai_responses.py +16 -4
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/realtime/agent.py +6 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/realtime/session.py +25 -10
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/model_settings/test_serialization.py +3 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/realtime/test_session.py +118 -3
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_agent_config.py +57 -0
- openai_agents-0.2.7/tests/test_agent_instructions_signature.py +113 -0
- openai_agents-0.2.7/tests/test_logprobs.py +50 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_openai_chatcompletions.py +3 -3
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_openai_chatcompletions_converter.py +5 -5
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_session.py +88 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/uv.lock +5 -5
- openai_agents-0.2.5/docs/ja/agents.md +0 -248
- openai_agents-0.2.5/docs/ja/config.md +0 -98
- openai_agents-0.2.5/docs/ja/context.md +0 -82
- openai_agents-0.2.5/docs/ja/examples.md +0 -45
- openai_agents-0.2.5/docs/ja/guardrails.md +0 -161
- openai_agents-0.2.5/docs/ja/handoffs.md +0 -117
- openai_agents-0.2.5/docs/ja/index.md +0 -58
- openai_agents-0.2.5/docs/ja/mcp.md +0 -191
- openai_agents-0.2.5/docs/ja/models/index.md +0 -155
- openai_agents-0.2.5/docs/ja/multi_agent.md +0 -41
- openai_agents-0.2.5/docs/ja/realtime/guide.md +0 -158
- openai_agents-0.2.5/docs/ja/release.md +0 -32
- openai_agents-0.2.5/docs/ja/repl.md +0 -23
- openai_agents-0.2.5/docs/ja/results.md +0 -56
- openai_agents-0.2.5/docs/ja/running_agents.md +0 -144
- openai_agents-0.2.5/docs/ja/tools.md +0 -326
- openai_agents-0.2.5/docs/ja/tracing.md +0 -150
- openai_agents-0.2.5/docs/ja/visualization.md +0 -104
- openai_agents-0.2.5/docs/ja/voice/pipeline.md +0 -84
- openai_agents-0.2.5/docs/ja/voice/tracing.md +0 -18
- openai_agents-0.2.5/examples/realtime/app/agent.py +0 -36
- {openai_agents-0.2.5 → openai_agents-0.2.7}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/.github/ISSUE_TEMPLATE/model_provider.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/.github/ISSUE_TEMPLATE/question.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/.github/codex/home/config.toml +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/.github/codex/labels/codex-attempt.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/.github/codex/labels/codex-review.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/.github/codex/labels/codex-triage.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/.github/workflows/codex.yml +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/.github/workflows/docs.yml +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/.github/workflows/issues.yml +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/.github/workflows/publish.yml +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/.github/workflows/tests.yml +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/.github/workflows/update-docs.yml +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/.gitignore +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/.prettierrc +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/.vscode/launch.json +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/.vscode/settings.json +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/AGENTS.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/CLAUDE.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/LICENSE +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/Makefile +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/agents.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/assets/images/favicon-platform.svg +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/assets/images/graph.png +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/assets/images/mcp-tracing.jpg +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/assets/images/orchestration.png +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/assets/logo.svg +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/config.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/context.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/examples.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/guardrails.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/mcp.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/models/index.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/models/litellm.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/multi_agent.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/quickstart.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/realtime/quickstart.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/agent.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/agent_output.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/computer.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/exceptions.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/extensions/handoff_filters.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/extensions/handoff_prompt.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/extensions/litellm.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/extensions/models/litellm_model.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/extensions/models/litellm_provider.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/extensions/visualization.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/function_schema.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/guardrail.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/handoffs.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/index.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/items.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/lifecycle.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/logger.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/mcp/server.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/mcp/util.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/memory.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/model_settings.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/models/chatcmpl_converter.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/models/chatcmpl_helpers.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/models/chatcmpl_stream_handler.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/models/fake_id.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/models/interface.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/models/multi_provider.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/models/openai_chatcompletions.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/models/openai_provider.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/models/openai_responses.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/prompts.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/realtime/agent.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/realtime/config.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/realtime/events.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/realtime/model.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/realtime/runner.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/realtime/session.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/repl.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/result.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/run.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/run_context.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/stream_events.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/strict_schema.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/tool.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/tool_context.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/tracing/create.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/tracing/index.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/tracing/logger.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/tracing/processor_interface.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/tracing/processors.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/tracing/provider.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/tracing/scope.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/tracing/setup.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/tracing/span_data.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/tracing/spans.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/tracing/traces.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/tracing/util.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/usage.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/version.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/voice/events.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/voice/exceptions.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/voice/imports.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/voice/input.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/voice/model.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/voice/models/openai_model_provider.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/voice/models/openai_provider.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/voice/models/openai_stt.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/voice/models/openai_tts.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/voice/pipeline.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/voice/pipeline_config.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/voice/result.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/voice/utils.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/ref/voice/workflow.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/release.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/repl.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/results.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/running_agents.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/scripts/generate_ref_files.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/sessions.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/streaming.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/stylesheets/extra.css +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/tracing.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/visualization.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/voice/pipeline.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/voice/quickstart.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/docs/voice/tracing.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/agent_patterns/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/agent_patterns/agents_as_tools.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/agent_patterns/deterministic.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/agent_patterns/forcing_tool_use.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/agent_patterns/input_guardrails.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/agent_patterns/llm_as_a_judge.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/agent_patterns/output_guardrails.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/agent_patterns/parallelization.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/agent_patterns/routing.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/agent_patterns/streaming_guardrails.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/basic/dynamic_system_prompt.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/basic/hello_world.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/basic/hello_world_jupyter.ipynb +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/basic/lifecycle_example.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/basic/local_image.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/basic/media/image_bison.jpg +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/basic/non_strict_output_type.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/basic/previous_response_id.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/basic/prompt_template.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/basic/remote_image.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/basic/remote_pdf.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/basic/session_example.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/basic/stream_items.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/basic/stream_text.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/basic/tools.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/financial_research_agent/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/financial_research_agent/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/financial_research_agent/agents/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/financial_research_agent/agents/financials_agent.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/financial_research_agent/agents/planner_agent.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/financial_research_agent/agents/risk_agent.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/financial_research_agent/agents/search_agent.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/financial_research_agent/agents/verifier_agent.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/financial_research_agent/agents/writer_agent.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/financial_research_agent/main.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/financial_research_agent/manager.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/financial_research_agent/printer.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/handoffs/message_filter.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/handoffs/message_filter_streaming.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/hosted_mcp/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/hosted_mcp/approvals.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/hosted_mcp/simple.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/mcp/filesystem_example/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/mcp/filesystem_example/main.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/mcp/filesystem_example/sample_files/favorite_books.txt +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/mcp/filesystem_example/sample_files/favorite_cities.txt +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/mcp/filesystem_example/sample_files/favorite_songs.txt +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/mcp/git_example/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/mcp/git_example/main.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/mcp/prompt_server/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/mcp/prompt_server/main.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/mcp/prompt_server/server.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/mcp/sse_example/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/mcp/sse_example/main.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/mcp/sse_example/server.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/mcp/streamablehttp_example/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/mcp/streamablehttp_example/main.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/mcp/streamablehttp_example/server.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/model_providers/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/model_providers/custom_example_agent.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/model_providers/custom_example_global.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/model_providers/custom_example_provider.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/model_providers/litellm_auto.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/model_providers/litellm_provider.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/realtime/app/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/realtime/app/server.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/realtime/app/static/app.js +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/realtime/app/static/index.html +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/realtime/cli/demo.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/realtime/cli/ui.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/realtime/twilio/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/realtime/twilio/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/realtime/twilio/requirements.txt +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/realtime/twilio/server.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/realtime/twilio/twilio_handler.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/reasoning_content/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/reasoning_content/main.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/reasoning_content/runner_example.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/research_bot/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/research_bot/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/research_bot/agents/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/research_bot/agents/planner_agent.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/research_bot/agents/search_agent.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/research_bot/agents/writer_agent.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/research_bot/main.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/research_bot/manager.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/research_bot/printer.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/research_bot/sample_outputs/product_recs.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/research_bot/sample_outputs/product_recs.txt +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/research_bot/sample_outputs/vacation.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/research_bot/sample_outputs/vacation.txt +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/tools/code_interpreter.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/tools/computer_use.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/tools/file_search.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/tools/image_generator.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/tools/web_search.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/voice/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/voice/static/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/voice/static/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/voice/static/main.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/voice/static/util.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/voice/streamed/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/voice/streamed/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/voice/streamed/main.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/examples/voice/streamed/my_workflow.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/mkdocs.yml +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/_config.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/_debug.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/_run_impl.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/agent_output.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/computer.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/exceptions.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/extensions/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/extensions/handoff_filters.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/extensions/handoff_prompt.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/extensions/models/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/extensions/models/litellm_provider.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/extensions/visualization.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/function_schema.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/guardrail.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/handoffs.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/items.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/logger.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/mcp/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/mcp/server.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/mcp/util.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/memory/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/memory/session.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/models/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/models/_openai_shared.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/models/chatcmpl_helpers.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/models/chatcmpl_stream_handler.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/models/fake_id.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/models/interface.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/models/multi_provider.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/models/openai_provider.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/prompts.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/py.typed +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/realtime/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/realtime/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/realtime/_default_tracker.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/realtime/_util.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/realtime/config.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/realtime/events.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/realtime/handoffs.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/realtime/items.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/realtime/model.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/realtime/model_events.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/realtime/model_inputs.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/realtime/openai_realtime.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/realtime/runner.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/repl.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/result.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/run.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/run_context.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/stream_events.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/strict_schema.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/tool.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/tool_context.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/tracing/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/tracing/create.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/tracing/logger.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/tracing/processor_interface.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/tracing/processors.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/tracing/provider.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/tracing/scope.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/tracing/setup.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/tracing/span_data.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/tracing/spans.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/tracing/traces.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/tracing/util.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/usage.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/util/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/util/_coro.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/util/_error_tracing.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/util/_json.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/util/_pretty_print.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/util/_transforms.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/util/_types.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/version.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/voice/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/voice/events.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/voice/exceptions.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/voice/imports.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/voice/input.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/voice/model.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/voice/models/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/voice/models/openai_model_provider.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/voice/models/openai_stt.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/voice/models/openai_tts.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/voice/pipeline.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/voice/pipeline_config.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/voice/result.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/voice/utils.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/src/agents/voice/workflow.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/conftest.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/fake_model.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/fastapi/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/fastapi/streaming_app.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/fastapi/test_streaming_context.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/mcp/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/mcp/conftest.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/mcp/helpers.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/mcp/test_caching.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/mcp/test_connect_disconnect.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/mcp/test_mcp_tracing.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/mcp/test_mcp_util.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/mcp/test_prompt_server.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/mcp/test_runner_calls_mcp.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/mcp/test_server_errors.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/mcp/test_tool_filtering.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/models/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/models/conftest.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/models/test_kwargs_functionality.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/models/test_litellm_chatcompletions_stream.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/models/test_litellm_extra_body.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/models/test_map.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/realtime/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/realtime/test_agent.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/realtime/test_conversion_helpers.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/realtime/test_item_parsing.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/realtime/test_model_events.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/realtime/test_openai_realtime.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/realtime/test_playback_tracker.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/realtime/test_realtime_handoffs.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/realtime/test_runner.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/realtime/test_tracing.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_agent_clone_shallow_copy.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_agent_hooks.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_agent_prompt.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_agent_runner.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_agent_runner_streamed.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_agent_tracing.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_cancel_streaming.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_computer_action.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_config.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_doc_parsing.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_extension_filters.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_extra_headers.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_function_schema.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_function_tool.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_function_tool_decorator.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_global_hooks.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_guardrails.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_handoff_tool.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_items_helpers.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_max_turns.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_openai_chatcompletions_stream.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_openai_responses_converter.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_output_tool.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_pretty_print.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_reasoning_content.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_repl.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_responses.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_responses_tracing.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_result_cast.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_run.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_run_config.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_run_error_details.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_run_step_execution.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_run_step_processing.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_session_exceptions.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_stream_events.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_strict_schema.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_tool_choice_reset.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_tool_converter.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_tool_use_behavior.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_trace_processor.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_tracing.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_tracing_errors.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_tracing_errors_streamed.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_usage.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/test_visualization.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/testing_processor.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/tracing/test_processor_api_key.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/tracing/test_set_api_key_fix.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/voice/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/voice/conftest.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/voice/fake_models.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/voice/helpers.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/voice/test_input.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/voice/test_openai_stt.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/voice/test_openai_tts.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/voice/test_pipeline.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.7}/tests/voice/test_workflow.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openai-agents
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.7
|
|
4
4
|
Summary: OpenAI Agents SDK
|
|
5
5
|
Project-URL: Homepage, https://openai.github.io/openai-agents-python/
|
|
6
6
|
Project-URL: Repository, https://github.com/openai/openai-agents-python
|
|
@@ -21,7 +21,7 @@ Classifier: Typing :: Typed
|
|
|
21
21
|
Requires-Python: >=3.9
|
|
22
22
|
Requires-Dist: griffe<2,>=1.5.6
|
|
23
23
|
Requires-Dist: mcp<2,>=1.11.0; python_version >= '3.10'
|
|
24
|
-
Requires-Dist: openai<2,>=1.
|
|
24
|
+
Requires-Dist: openai<2,>=1.99.6
|
|
25
25
|
Requires-Dist: pydantic<3,>=2.10
|
|
26
26
|
Requires-Dist: requests<3,>=2.0
|
|
27
27
|
Requires-Dist: types-requests<3,>=2.0
|
|
@@ -36,6 +36,7 @@ The [`handoff()`][agents.handoffs.handoff] function lets you customize things.
|
|
|
36
36
|
- `on_handoff`: A callback function executed when the handoff is invoked. This is useful for things like kicking off some data fetching as soon as you know a handoff is being invoked. This function receives the agent context, and can optionally also receive LLM generated input. The input data is controlled by the `input_type` param.
|
|
37
37
|
- `input_type`: The type of input expected by the handoff (optional).
|
|
38
38
|
- `input_filter`: This lets you filter the input received by the next agent. See below for more.
|
|
39
|
+
- `is_enabled`: Whether the handoff is enabled. This can be a boolean or a function that returns a boolean, allowing you to dynamically enable or disable the handoff at runtime.
|
|
39
40
|
|
|
40
41
|
```python
|
|
41
42
|
from agents import Agent, handoff, RunContextWrapper
|
|
@@ -4,7 +4,7 @@ The [OpenAI Agents SDK](https://github.com/openai/openai-agents-python) enables
|
|
|
4
4
|
|
|
5
5
|
- **Agents**, which are LLMs equipped with instructions and tools
|
|
6
6
|
- **Handoffs**, which allow agents to delegate to other agents for specific tasks
|
|
7
|
-
- **Guardrails**, which enable
|
|
7
|
+
- **Guardrails**, which enable validation of agent inputs and outputs
|
|
8
8
|
- **Sessions**, which automatically maintains conversation history across agent runs
|
|
9
9
|
|
|
10
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.
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
---
|
|
2
|
+
search:
|
|
3
|
+
exclude: true
|
|
4
|
+
---
|
|
5
|
+
# エージェント
|
|
6
|
+
|
|
7
|
+
エージェントは、アプリの中核となる構成要素です。エージェントは、instructions とツールを設定した大規模言語モデル ( LLM ) です。
|
|
8
|
+
|
|
9
|
+
## 基本設定
|
|
10
|
+
|
|
11
|
+
エージェントで最も一般的に設定するプロパティは次のとおりです。
|
|
12
|
+
|
|
13
|
+
- `name`: エージェントを識別する必須の文字列。
|
|
14
|
+
- `instructions`: developer message または システムプロンプト とも呼ばれます。
|
|
15
|
+
- `model`: どの LLM を使用するか、またオプションの `model_settings` で temperature、top_p などのモデル調整パラメーターを設定します。
|
|
16
|
+
- `tools`: エージェントがタスクを達成するために使用できるツール。
|
|
17
|
+
|
|
18
|
+
```python
|
|
19
|
+
from agents import Agent, ModelSettings, function_tool
|
|
20
|
+
|
|
21
|
+
@function_tool
|
|
22
|
+
def get_weather(city: str) -> str:
|
|
23
|
+
"""returns weather info for the specified city."""
|
|
24
|
+
return f"The weather in {city} is sunny"
|
|
25
|
+
|
|
26
|
+
agent = Agent(
|
|
27
|
+
name="Haiku agent",
|
|
28
|
+
instructions="Always respond in haiku form",
|
|
29
|
+
model="o3-mini",
|
|
30
|
+
tools=[get_weather],
|
|
31
|
+
)
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## コンテキスト
|
|
35
|
+
|
|
36
|
+
エージェントは `context` 型に対して汎用的です。コンテキストは依存性注入のツールで、あなたが作成して `Runner.run()` に渡すオブジェクトです。これはすべてのエージェント、ツール、ハンドオフなどに渡され、エージェントの実行に必要な依存関係や状態をまとめて保持します。コンテキストには任意の Python オブジェクトを渡せます。
|
|
37
|
+
|
|
38
|
+
```python
|
|
39
|
+
@dataclass
|
|
40
|
+
class UserContext:
|
|
41
|
+
name: str
|
|
42
|
+
uid: str
|
|
43
|
+
is_pro_user: bool
|
|
44
|
+
|
|
45
|
+
async def fetch_purchases() -> list[Purchase]:
|
|
46
|
+
return ...
|
|
47
|
+
|
|
48
|
+
agent = Agent[UserContext](
|
|
49
|
+
...,
|
|
50
|
+
)
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## 出力タイプ
|
|
54
|
+
|
|
55
|
+
デフォルトでは、エージェントはプレーンテキスト (すなわち `str`) を出力します。特定のタイプの出力を生成させたい場合は、`output_type` パラメーターを使用できます。一般的な選択は [Pydantic](https://docs.pydantic.dev/) オブジェクトですが、Pydantic の [TypeAdapter](https://docs.pydantic.dev/latest/api/type_adapter/) でラップできる任意の型 (dataclasses、リスト、TypedDict など) をサポートします。
|
|
56
|
+
|
|
57
|
+
```python
|
|
58
|
+
from pydantic import BaseModel
|
|
59
|
+
from agents import Agent
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
class CalendarEvent(BaseModel):
|
|
63
|
+
name: str
|
|
64
|
+
date: str
|
|
65
|
+
participants: list[str]
|
|
66
|
+
|
|
67
|
+
agent = Agent(
|
|
68
|
+
name="Calendar extractor",
|
|
69
|
+
instructions="Extract calendar events from text",
|
|
70
|
+
output_type=CalendarEvent,
|
|
71
|
+
)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
!!! note
|
|
75
|
+
|
|
76
|
+
`output_type` を指定すると、モデルは通常のプレーンテキスト応答ではなく [structured outputs](https://platform.openai.com/docs/guides/structured-outputs) を使用します。
|
|
77
|
+
|
|
78
|
+
## ハンドオフ
|
|
79
|
+
|
|
80
|
+
ハンドオフは、エージェントが委譲できるサブエージェントです。ハンドオフのリストを提供すると、エージェントは関連性がある場合にそれらへ委譲できます。これは、単一のタスクに特化したモジュール式のエージェントをオーケストレーションする強力なパターンです。詳しくは [handoffs](handoffs.md) ドキュメントをご覧ください。
|
|
81
|
+
|
|
82
|
+
```python
|
|
83
|
+
from agents import Agent
|
|
84
|
+
|
|
85
|
+
booking_agent = Agent(...)
|
|
86
|
+
refund_agent = Agent(...)
|
|
87
|
+
|
|
88
|
+
triage_agent = Agent(
|
|
89
|
+
name="Triage agent",
|
|
90
|
+
instructions=(
|
|
91
|
+
"Help the user with their questions."
|
|
92
|
+
"If they ask about booking, handoff to the booking agent."
|
|
93
|
+
"If they ask about refunds, handoff to the refund agent."
|
|
94
|
+
),
|
|
95
|
+
handoffs=[booking_agent, refund_agent],
|
|
96
|
+
)
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## 動的 instructions
|
|
100
|
+
|
|
101
|
+
多くの場合、エージェントの作成時に instructions を指定できますが、関数を使って動的に instructions を提供することもできます。この関数はエージェントとコンテキストを受け取り、プロンプトを返す必要があります。通常の関数と `async` 関数の両方が使用できます。
|
|
102
|
+
|
|
103
|
+
```python
|
|
104
|
+
def dynamic_instructions(
|
|
105
|
+
context: RunContextWrapper[UserContext], agent: Agent[UserContext]
|
|
106
|
+
) -> str:
|
|
107
|
+
return f"The user's name is {context.context.name}. Help them with their questions."
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
agent = Agent[UserContext](
|
|
111
|
+
name="Triage agent",
|
|
112
|
+
instructions=dynamic_instructions,
|
|
113
|
+
)
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## ライフサイクルイベント (フック)
|
|
117
|
+
|
|
118
|
+
エージェントのライフサイクルを観測したい場合があります。例えば、イベントをログに記録したり、特定のイベントが発生したときにデータを事前取得したりする場合です。`hooks` プロパティでエージェントのライフサイクルにフックできます。[`AgentHooks`][agents.lifecycle.AgentHooks] クラスをサブクラス化し、関心のあるメソッドをオーバーライドしてください。
|
|
119
|
+
|
|
120
|
+
## ガードレール
|
|
121
|
+
|
|
122
|
+
ガードレールにより、エージェントの実行と並行して ユーザー 入力に対するチェック/バリデーションを実行できます。例えば、ユーザー の入力の関連性をスクリーニングできます。詳しくは [guardrails](guardrails.md) ドキュメントをご覧ください。
|
|
123
|
+
|
|
124
|
+
## エージェントのクローン/コピー
|
|
125
|
+
|
|
126
|
+
エージェントの `clone()` メソッドを使うと、エージェントを複製し、必要に応じて任意のプロパティを変更できます。
|
|
127
|
+
|
|
128
|
+
```python
|
|
129
|
+
pirate_agent = Agent(
|
|
130
|
+
name="Pirate",
|
|
131
|
+
instructions="Write like a pirate",
|
|
132
|
+
model="o3-mini",
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
robot_agent = pirate_agent.clone(
|
|
136
|
+
name="Robot",
|
|
137
|
+
instructions="Write like a robot",
|
|
138
|
+
)
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## ツール使用の強制
|
|
142
|
+
|
|
143
|
+
ツールのリストを指定しても、LLM が必ずツールを使用するとは限りません。[`ModelSettings.tool_choice`][agents.model_settings.ModelSettings.tool_choice] を設定してツール使用を強制できます。有効な値は次のとおりです。
|
|
144
|
+
|
|
145
|
+
1. `auto`: ツールを使用するかどうかを LLM が判断します。
|
|
146
|
+
2. `required`: LLM にツールの使用を要求します (ただし、どのツールを使うかは賢く判断します)。
|
|
147
|
+
3. `none`: LLM にツールを使用「しない」ことを要求します。
|
|
148
|
+
4. 特定の文字列 (例: `my_tool`) を設定: LLM にその特定のツールを使用させます。
|
|
149
|
+
|
|
150
|
+
```python
|
|
151
|
+
from agents import Agent, Runner, function_tool, ModelSettings
|
|
152
|
+
|
|
153
|
+
@function_tool
|
|
154
|
+
def get_weather(city: str) -> str:
|
|
155
|
+
"""Returns weather info for the specified city."""
|
|
156
|
+
return f"The weather in {city} is sunny"
|
|
157
|
+
|
|
158
|
+
agent = Agent(
|
|
159
|
+
name="Weather Agent",
|
|
160
|
+
instructions="Retrieve weather details.",
|
|
161
|
+
tools=[get_weather],
|
|
162
|
+
model_settings=ModelSettings(tool_choice="get_weather")
|
|
163
|
+
)
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## ツール使用の挙動
|
|
167
|
+
|
|
168
|
+
`Agent` 設定の `tool_use_behavior` パラメーターは、ツール出力の扱い方を制御します。
|
|
169
|
+
- `"run_llm_again"`: デフォルト。ツールを実行し、その結果を LLM が処理して最終応答を生成します。
|
|
170
|
+
- `"stop_on_first_tool"`: 最初のツール呼び出しの出力を最終応答として使用し、以降の LLM 処理は行いません。
|
|
171
|
+
|
|
172
|
+
```python
|
|
173
|
+
from agents import Agent, Runner, function_tool, ModelSettings
|
|
174
|
+
|
|
175
|
+
@function_tool
|
|
176
|
+
def get_weather(city: str) -> str:
|
|
177
|
+
"""Returns weather info for the specified city."""
|
|
178
|
+
return f"The weather in {city} is sunny"
|
|
179
|
+
|
|
180
|
+
agent = Agent(
|
|
181
|
+
name="Weather Agent",
|
|
182
|
+
instructions="Retrieve weather details.",
|
|
183
|
+
tools=[get_weather],
|
|
184
|
+
tool_use_behavior="stop_on_first_tool"
|
|
185
|
+
)
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
- `StopAtTools(stop_at_tool_names=[...])`: 指定したいずれかのツールが呼び出されたら停止し、その出力を最終応答として使用します。
|
|
189
|
+
```python
|
|
190
|
+
from agents import Agent, Runner, function_tool
|
|
191
|
+
from agents.agent import StopAtTools
|
|
192
|
+
|
|
193
|
+
@function_tool
|
|
194
|
+
def get_weather(city: str) -> str:
|
|
195
|
+
"""Returns weather info for the specified city."""
|
|
196
|
+
return f"The weather in {city} is sunny"
|
|
197
|
+
|
|
198
|
+
@function_tool
|
|
199
|
+
def sum_numbers(a: int, b: int) -> int:
|
|
200
|
+
"""Adds two numbers."""
|
|
201
|
+
return a + b
|
|
202
|
+
|
|
203
|
+
agent = Agent(
|
|
204
|
+
name="Stop At Stock Agent",
|
|
205
|
+
instructions="Get weather or sum numbers.",
|
|
206
|
+
tools=[get_weather, sum_numbers],
|
|
207
|
+
tool_use_behavior=StopAtTools(stop_at_tool_names=["get_weather"])
|
|
208
|
+
)
|
|
209
|
+
```
|
|
210
|
+
- `ToolsToFinalOutputFunction`: ツール結果を処理し、停止するか LLM を続行するかを判断するカスタム関数。
|
|
211
|
+
|
|
212
|
+
```python
|
|
213
|
+
from agents import Agent, Runner, function_tool, FunctionToolResult, RunContextWrapper
|
|
214
|
+
from agents.agent import ToolsToFinalOutputResult
|
|
215
|
+
from typing import List, Any
|
|
216
|
+
|
|
217
|
+
@function_tool
|
|
218
|
+
def get_weather(city: str) -> str:
|
|
219
|
+
"""Returns weather info for the specified city."""
|
|
220
|
+
return f"The weather in {city} is sunny"
|
|
221
|
+
|
|
222
|
+
def custom_tool_handler(
|
|
223
|
+
context: RunContextWrapper[Any],
|
|
224
|
+
tool_results: List[FunctionToolResult]
|
|
225
|
+
) -> ToolsToFinalOutputResult:
|
|
226
|
+
"""Processes tool results to decide final output."""
|
|
227
|
+
for result in tool_results:
|
|
228
|
+
if result.output and "sunny" in result.output:
|
|
229
|
+
return ToolsToFinalOutputResult(
|
|
230
|
+
is_final_output=True,
|
|
231
|
+
final_output=f"Final weather: {result.output}"
|
|
232
|
+
)
|
|
233
|
+
return ToolsToFinalOutputResult(
|
|
234
|
+
is_final_output=False,
|
|
235
|
+
final_output=None
|
|
236
|
+
)
|
|
237
|
+
|
|
238
|
+
agent = Agent(
|
|
239
|
+
name="Weather Agent",
|
|
240
|
+
instructions="Retrieve weather details.",
|
|
241
|
+
tools=[get_weather],
|
|
242
|
+
tool_use_behavior=custom_tool_handler
|
|
243
|
+
)
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
!!! note
|
|
247
|
+
|
|
248
|
+
無限ループを防ぐため、フレームワークはツール呼び出し後に `tool_choice` を自動的に "auto" にリセットします。この挙動は [`agent.reset_tool_choice`][agents.agent.Agent.reset_tool_choice] で設定可能です。無限ループは、ツール結果が LLM に送られ、`tool_choice` のために LLM がさらに別のツール呼び出しを生成し続けることで発生します。
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
search:
|
|
3
|
+
exclude: true
|
|
4
|
+
---
|
|
5
|
+
# SDK の設定
|
|
6
|
+
|
|
7
|
+
## API キーとクライアント
|
|
8
|
+
|
|
9
|
+
デフォルトでは、SDK はインポートされた時点で、LLM リクエストおよび トレーシング 用に `OPENAI_API_KEY` 環境変数を探します。アプリ起動前にその環境変数を設定できない場合は、[set_default_openai_key()][agents.set_default_openai_key] 関数を使ってキーを設定できます。
|
|
10
|
+
|
|
11
|
+
```python
|
|
12
|
+
from agents import set_default_openai_key
|
|
13
|
+
|
|
14
|
+
set_default_openai_key("sk-...")
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
また、使用する OpenAI クライアントを設定することもできます。デフォルトでは、SDK は環境変数または上記で設定したデフォルトキーを使って `AsyncOpenAI` インスタンスを作成します。これを変更するには、[set_default_openai_client()][agents.set_default_openai_client] 関数を使用します。
|
|
18
|
+
|
|
19
|
+
```python
|
|
20
|
+
from openai import AsyncOpenAI
|
|
21
|
+
from agents import set_default_openai_client
|
|
22
|
+
|
|
23
|
+
custom_client = AsyncOpenAI(base_url="...", api_key="...")
|
|
24
|
+
set_default_openai_client(custom_client)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
最後に、使用する OpenAI API をカスタマイズすることもできます。デフォルトでは OpenAI Responses API を使用します。これを上書きして Chat Completions API を使うには、[set_default_openai_api()][agents.set_default_openai_api] 関数を使用します。
|
|
28
|
+
|
|
29
|
+
```python
|
|
30
|
+
from agents import set_default_openai_api
|
|
31
|
+
|
|
32
|
+
set_default_openai_api("chat_completions")
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## トレーシング
|
|
36
|
+
|
|
37
|
+
トレーシング はデフォルトで有効です。デフォルトでは、上記の OpenAI API キー(つまり、環境変数または設定したデフォルトキー)を使用します。トレーシング に使用する API キーを個別に設定するには、[`set_tracing_export_api_key`][agents.set_tracing_export_api_key] 関数を使用します。
|
|
38
|
+
|
|
39
|
+
```python
|
|
40
|
+
from agents import set_tracing_export_api_key
|
|
41
|
+
|
|
42
|
+
set_tracing_export_api_key("sk-...")
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
[`set_tracing_disabled()`][agents.set_tracing_disabled] 関数を使って、トレーシング を完全に無効化することもできます。
|
|
46
|
+
|
|
47
|
+
```python
|
|
48
|
+
from agents import set_tracing_disabled
|
|
49
|
+
|
|
50
|
+
set_tracing_disabled(True)
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## デバッグログ
|
|
54
|
+
|
|
55
|
+
SDK には、ハンドラーが設定されていない 2 つの Python ロガーがあります。デフォルトでは、警告とエラーは `stdout` に送られますが、その他のログは抑制されます。
|
|
56
|
+
|
|
57
|
+
冗長なログを有効にするには、[`enable_verbose_stdout_logging()`][agents.enable_verbose_stdout_logging] 関数を使用します。
|
|
58
|
+
|
|
59
|
+
```python
|
|
60
|
+
from agents import enable_verbose_stdout_logging
|
|
61
|
+
|
|
62
|
+
enable_verbose_stdout_logging()
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
また、ハンドラー、フィルター、フォーマッターなどを追加してログをカスタマイズできます。詳細は [Python logging guide](https://docs.python.org/3/howto/logging.html) をご覧ください。
|
|
66
|
+
|
|
67
|
+
```python
|
|
68
|
+
import logging
|
|
69
|
+
|
|
70
|
+
logger = logging.getLogger("openai.agents") # or openai.agents.tracing for the Tracing logger
|
|
71
|
+
|
|
72
|
+
# To make all logs show up
|
|
73
|
+
logger.setLevel(logging.DEBUG)
|
|
74
|
+
# To make info and above show up
|
|
75
|
+
logger.setLevel(logging.INFO)
|
|
76
|
+
# To make warning and above show up
|
|
77
|
+
logger.setLevel(logging.WARNING)
|
|
78
|
+
# etc
|
|
79
|
+
|
|
80
|
+
# You can customize this as needed, but this will output to `stderr` by default
|
|
81
|
+
logger.addHandler(logging.StreamHandler())
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### ログ中の機微情報
|
|
85
|
+
|
|
86
|
+
一部のログには機微情報(例: ユーザー データ)が含まれる場合があります。これらのデータがログに出力されないようにするには、次の環境変数を設定します。
|
|
87
|
+
|
|
88
|
+
LLM の入力と出力のロギングを無効化するには:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
export OPENAI_AGENTS_DONT_LOG_MODEL_DATA=1
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
ツールの入力と出力のロギングを無効化するには:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
export OPENAI_AGENTS_DONT_LOG_TOOL_DATA=1
|
|
98
|
+
```
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
search:
|
|
3
|
+
exclude: true
|
|
4
|
+
---
|
|
5
|
+
# コンテキスト管理
|
|
6
|
+
|
|
7
|
+
コンテキストは多義的な用語です。ここで扱う主なコンテキストは 2 つあります。
|
|
8
|
+
|
|
9
|
+
1. コードでローカルに利用可能なコンテキスト: ツール関数の実行時、`on_handoff` のようなコールバック、ライフサイクルフックなどで必要となるデータや依存関係です。
|
|
10
|
+
2. LLM に対して利用可能なコンテキスト: 応答生成時に LLM が参照できるデータです。
|
|
11
|
+
|
|
12
|
+
## ローカルコンテキスト
|
|
13
|
+
|
|
14
|
+
これは [`RunContextWrapper`][agents.run_context.RunContextWrapper] クラスと、その内部の [`context`][agents.run_context.RunContextWrapper.context] プロパティで表現されます。動作は次のとおりです。
|
|
15
|
+
|
|
16
|
+
1. 任意の Python オブジェクトを作成します。一般的には dataclass や Pydantic オブジェクトを使います。
|
|
17
|
+
2. そのオブジェクトを各種の実行メソッド(例: `Runner.run(..., **context=whatever**)`)に渡します。
|
|
18
|
+
3. すべてのツール呼び出しやライフサイクルフックなどに、`RunContextWrapper[T]` というラッパーオブジェクトが渡されます。ここで `T` はコンテキストオブジェクトの型を表し、`wrapper.context` からアクセスできます。
|
|
19
|
+
|
|
20
|
+
**最も重要な点** は、特定のエージェント実行において、あらゆるエージェント、ツール関数、ライフサイクルなどが同一のコンテキストの型を使用しなければならないことです。
|
|
21
|
+
|
|
22
|
+
コンテキストは次のような用途に使えます。
|
|
23
|
+
|
|
24
|
+
- 実行のための文脈データ(例: ユーザー名 / uid などの ユーザー に関する情報)
|
|
25
|
+
- 依存関係(例: ロガーオブジェクト、データフェッチャーなど)
|
|
26
|
+
- ヘルパー関数
|
|
27
|
+
|
|
28
|
+
!!! danger "Note"
|
|
29
|
+
|
|
30
|
+
コンテキストオブジェクトは LLM に送信されません。これは純粋にローカルなオブジェクトであり、読み書きやメソッド呼び出しができます。
|
|
31
|
+
|
|
32
|
+
```python
|
|
33
|
+
import asyncio
|
|
34
|
+
from dataclasses import dataclass
|
|
35
|
+
|
|
36
|
+
from agents import Agent, RunContextWrapper, Runner, function_tool
|
|
37
|
+
|
|
38
|
+
@dataclass
|
|
39
|
+
class UserInfo: # (1)!
|
|
40
|
+
name: str
|
|
41
|
+
uid: int
|
|
42
|
+
|
|
43
|
+
@function_tool
|
|
44
|
+
async def fetch_user_age(wrapper: RunContextWrapper[UserInfo]) -> str: # (2)!
|
|
45
|
+
"""Fetch the age of the user. Call this function to get user's age information."""
|
|
46
|
+
return f"The user {wrapper.context.name} is 47 years old"
|
|
47
|
+
|
|
48
|
+
async def main():
|
|
49
|
+
user_info = UserInfo(name="John", uid=123)
|
|
50
|
+
|
|
51
|
+
agent = Agent[UserInfo]( # (3)!
|
|
52
|
+
name="Assistant",
|
|
53
|
+
tools=[fetch_user_age],
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
result = await Runner.run( # (4)!
|
|
57
|
+
starting_agent=agent,
|
|
58
|
+
input="What is the age of the user?",
|
|
59
|
+
context=user_info,
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
print(result.final_output) # (5)!
|
|
63
|
+
# The user John is 47 years old.
|
|
64
|
+
|
|
65
|
+
if __name__ == "__main__":
|
|
66
|
+
asyncio.run(main())
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
1. これはコンテキストオブジェクトです。ここでは dataclass を使用していますが、任意の型を使えます。
|
|
70
|
+
2. これはツールです。`RunContextWrapper[UserInfo]` を受け取り、ツール実装はコンテキストから読み取ります。
|
|
71
|
+
3. エージェントにジェネリックな `UserInfo` を付与して、型チェッカーがエラーを検出できるようにします(例えば、異なるコンテキスト型を受け取るツールを渡そうとした場合)。
|
|
72
|
+
4. コンテキストは `run` 関数に渡されます。
|
|
73
|
+
5. エージェントはツールを正しく呼び出し、年齢を取得します。
|
|
74
|
+
|
|
75
|
+
## エージェント / LLM コンテキスト
|
|
76
|
+
|
|
77
|
+
LLM が呼び出される際、参照できるデータは会話履歴に含まれるもの だけ です。そのため、LLM に新しいデータを利用可能にしたい場合は、その履歴で参照できる形で提供する必要があります。方法はいくつかあります。
|
|
78
|
+
|
|
79
|
+
1. Agent の `instructions` に追加します。これは「システムプロンプト」または「開発者メッセージ」とも呼ばれます。システムプロンプトは静的な文字列でも、コンテキストを受け取って文字列を出力する動的関数でもかまいません。常に有用な情報(例: ユーザー名や現在の日付)に適した一般的な手法です。
|
|
80
|
+
2. `Runner.run` 関数を呼び出すときに `input` に追加します。これは `instructions` の手法に似ていますが、[指揮系統](https://cdn.openai.com/spec/model-spec-2024-05-08.html#follow-the-chain-of-command) の下位に配置されるメッセージを使えます。
|
|
81
|
+
3. 関数ツール を介して公開します。これはオンデマンドのコンテキストに有用で、LLM が必要に応じてツールを呼び出し、そのデータを取得できます。
|
|
82
|
+
4. リトリーバルや Web 検索 を使用します。これらは、ファイルやデータベースから関連データを取得(リトリーバル)したり、Web から取得(Web 検索)したりできる特別なツールです。関連する文脈データに基づいて応答をグラウンディングするのに役立ちます。
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
search:
|
|
3
|
+
exclude: true
|
|
4
|
+
---
|
|
5
|
+
# コード例
|
|
6
|
+
|
|
7
|
+
[repo](https://github.com/openai/openai-agents-python/tree/main/examples) の examples セクションで、SDK のさまざまなサンプル実装をご覧ください。これらの例は、異なるパターンや機能を示すいくつかのカテゴリーに整理されています。
|
|
8
|
+
|
|
9
|
+
## カテゴリー
|
|
10
|
+
|
|
11
|
+
- **[agent_patterns](https://github.com/openai/openai-agents-python/tree/main/examples/agent_patterns):**
|
|
12
|
+
このカテゴリーの例は、一般的な エージェント の設計パターンを示します。例えば
|
|
13
|
+
|
|
14
|
+
- 決定的なワークフロー
|
|
15
|
+
- ツールとしての エージェント
|
|
16
|
+
- エージェント の並列実行
|
|
17
|
+
|
|
18
|
+
- **[basic](https://github.com/openai/openai-agents-python/tree/main/examples/basic):**
|
|
19
|
+
これらの例は、SDK の基礎的な機能を紹介します。例えば
|
|
20
|
+
|
|
21
|
+
- 動的な システムプロンプト
|
|
22
|
+
- ストリーミング出力
|
|
23
|
+
- ライフサイクルイベント
|
|
24
|
+
|
|
25
|
+
- **[tool examples](https://github.com/openai/openai-agents-python/tree/main/examples/tools):**
|
|
26
|
+
Web 検索 や ファイル検索 などの OpenAI がホストするツール の実装方法と、それらを エージェント に統合する方法を学びます。
|
|
27
|
+
|
|
28
|
+
- **[model_providers](https://github.com/openai/openai-agents-python/tree/main/examples/model_providers):**
|
|
29
|
+
OpenAI 以外のモデルを SDK で使う方法を探ります。
|
|
30
|
+
|
|
31
|
+
- **[handoffs](https://github.com/openai/openai-agents-python/tree/main/examples/handoffs):**
|
|
32
|
+
エージェント の ハンドオフ の実用的な例をご覧ください。
|
|
33
|
+
|
|
34
|
+
- **[mcp](https://github.com/openai/openai-agents-python/tree/main/examples/mcp):**
|
|
35
|
+
MCP で エージェント を構築する方法を学びます。
|
|
36
|
+
|
|
37
|
+
- **[customer_service](https://github.com/openai/openai-agents-python/tree/main/examples/customer_service)** と **[research_bot](https://github.com/openai/openai-agents-python/tree/main/examples/research_bot):**
|
|
38
|
+
実世界のアプリケーションを示す、さらに作り込まれた 2 つの例
|
|
39
|
+
|
|
40
|
+
- **customer_service**: 航空会社向けのカスタマーサービス システムの例。
|
|
41
|
+
- **research_bot**: シンプルな ディープリサーチ のクローン。
|
|
42
|
+
|
|
43
|
+
- **[voice](https://github.com/openai/openai-agents-python/tree/main/examples/voice):**
|
|
44
|
+
TTS と STT モデルを用いた音声 エージェント の例。
|
|
45
|
+
|
|
46
|
+
- **[realtime](https://github.com/openai/openai-agents-python/tree/main/examples/realtime):**
|
|
47
|
+
SDK を用いて リアルタイム 体験を構築する方法の例。
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
---
|
|
2
|
+
search:
|
|
3
|
+
exclude: true
|
|
4
|
+
---
|
|
5
|
+
# ガードレール
|
|
6
|
+
|
|
7
|
+
ガードレールはエージェントと _並行して_ 動作し、ユーザー入力のチェックと検証を可能にします。たとえば、カスタマーリクエストに対応するために非常に賢い(つまり遅く/高価な)モデルを使うエージェントを想像してください。悪意のあるユーザーがそのモデルに宿題の手伝いをさせるのは避けたいはずです。そこで、速く/安価なモデルでガードレールを走らせることができます。ガードレールが悪意のある利用を検知した場合、即座にエラーを発生させ、高価なモデルの実行を止めることで時間やコストを節約できます。
|
|
8
|
+
|
|
9
|
+
ガードレールには 2 つの種類があります。
|
|
10
|
+
|
|
11
|
+
1. 入力ガードレールは初期のユーザー入力に対して実行されます
|
|
12
|
+
2. 出力ガードレールは最終的なエージェント出力に対して実行されます
|
|
13
|
+
|
|
14
|
+
## 入力ガードレール
|
|
15
|
+
|
|
16
|
+
入力ガードレールは 3 ステップで動作します。
|
|
17
|
+
|
|
18
|
+
1. まず、ガードレールはエージェントに渡されたものと同じ入力を受け取ります。
|
|
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
|
+
|
|
22
|
+
!!! Note
|
|
23
|
+
|
|
24
|
+
入力ガードレールはユーザー入力に対して実行されることを想定しているため、エージェントのガードレールはそのエージェントが _最初の_ エージェントである場合にのみ実行されます。「なぜ `guardrails` プロパティはエージェント側にあり、`Runner.run` へ渡さないのか」と疑問に思うかもしれません。これは、ガードレールは実際のエージェントに密接に関係する傾向があるためです。エージェントごとに異なるガードレールを実行するため、コードを同じ場所に置くことで可読性が向上します。
|
|
25
|
+
|
|
26
|
+
## 出力ガードレール
|
|
27
|
+
|
|
28
|
+
出力ガードレールは 3 ステップで動作します。
|
|
29
|
+
|
|
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
|
+
|
|
34
|
+
!!! Note
|
|
35
|
+
|
|
36
|
+
出力ガードレールは最終的なエージェント出力に対して実行されることを想定しているため、エージェントのガードレールはそのエージェントが _最後の_ エージェントである場合にのみ実行されます。入力ガードレールと同様に、ガードレールは実際のエージェントに密接に関係する傾向があるため、コードを同じ場所に置くことで可読性が向上します。
|
|
37
|
+
|
|
38
|
+
## トリップワイヤー
|
|
39
|
+
|
|
40
|
+
入力または出力がガードレールに不合格となった場合、ガードレールはトリップワイヤーでそれを通知できます。トリップワイヤーが作動したガードレールを検出するとすぐに、`{Input,Output}GuardrailTripwireTriggered` 例外を送出し、エージェントの実行を停止します。
|
|
41
|
+
|
|
42
|
+
## ガードレールの実装
|
|
43
|
+
|
|
44
|
+
入力を受け取り、[`GuardrailFunctionOutput`][agents.guardrail.GuardrailFunctionOutput] を返す関数を用意する必要があります。次の例では、その裏側でエージェントを実行して実現します。
|
|
45
|
+
|
|
46
|
+
```python
|
|
47
|
+
from pydantic import BaseModel
|
|
48
|
+
from agents import (
|
|
49
|
+
Agent,
|
|
50
|
+
GuardrailFunctionOutput,
|
|
51
|
+
InputGuardrailTripwireTriggered,
|
|
52
|
+
RunContextWrapper,
|
|
53
|
+
Runner,
|
|
54
|
+
TResponseInputItem,
|
|
55
|
+
input_guardrail,
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
class MathHomeworkOutput(BaseModel):
|
|
59
|
+
is_math_homework: bool
|
|
60
|
+
reasoning: str
|
|
61
|
+
|
|
62
|
+
guardrail_agent = Agent( # (1)!
|
|
63
|
+
name="Guardrail check",
|
|
64
|
+
instructions="Check if the user is asking you to do their math homework.",
|
|
65
|
+
output_type=MathHomeworkOutput,
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
@input_guardrail
|
|
70
|
+
async def math_guardrail( # (2)!
|
|
71
|
+
ctx: RunContextWrapper[None], agent: Agent, input: str | list[TResponseInputItem]
|
|
72
|
+
) -> GuardrailFunctionOutput:
|
|
73
|
+
result = await Runner.run(guardrail_agent, input, context=ctx.context)
|
|
74
|
+
|
|
75
|
+
return GuardrailFunctionOutput(
|
|
76
|
+
output_info=result.final_output, # (3)!
|
|
77
|
+
tripwire_triggered=result.final_output.is_math_homework,
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
agent = Agent( # (4)!
|
|
82
|
+
name="Customer support agent",
|
|
83
|
+
instructions="You are a customer support agent. You help customers with their questions.",
|
|
84
|
+
input_guardrails=[math_guardrail],
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
async def main():
|
|
88
|
+
# This should trip the guardrail
|
|
89
|
+
try:
|
|
90
|
+
await Runner.run(agent, "Hello, can you help me solve for x: 2x + 3 = 11?")
|
|
91
|
+
print("Guardrail didn't trip - this is unexpected")
|
|
92
|
+
|
|
93
|
+
except InputGuardrailTripwireTriggered:
|
|
94
|
+
print("Math homework guardrail tripped")
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
1. このエージェントをガードレール関数で使用します。
|
|
98
|
+
2. これはエージェントの入力/コンテキストを受け取り、結果を返すガードレール関数です。
|
|
99
|
+
3. ガードレールの結果に追加情報を含めることができます。
|
|
100
|
+
4. これはワークフローを定義する実際のエージェントです。
|
|
101
|
+
|
|
102
|
+
出力ガードレールも同様です。
|
|
103
|
+
|
|
104
|
+
```python
|
|
105
|
+
from pydantic import BaseModel
|
|
106
|
+
from agents import (
|
|
107
|
+
Agent,
|
|
108
|
+
GuardrailFunctionOutput,
|
|
109
|
+
OutputGuardrailTripwireTriggered,
|
|
110
|
+
RunContextWrapper,
|
|
111
|
+
Runner,
|
|
112
|
+
output_guardrail,
|
|
113
|
+
)
|
|
114
|
+
class MessageOutput(BaseModel): # (1)!
|
|
115
|
+
response: str
|
|
116
|
+
|
|
117
|
+
class MathOutput(BaseModel): # (2)!
|
|
118
|
+
reasoning: str
|
|
119
|
+
is_math: bool
|
|
120
|
+
|
|
121
|
+
guardrail_agent = Agent(
|
|
122
|
+
name="Guardrail check",
|
|
123
|
+
instructions="Check if the output includes any math.",
|
|
124
|
+
output_type=MathOutput,
|
|
125
|
+
)
|
|
126
|
+
|
|
127
|
+
@output_guardrail
|
|
128
|
+
async def math_guardrail( # (3)!
|
|
129
|
+
ctx: RunContextWrapper, agent: Agent, output: MessageOutput
|
|
130
|
+
) -> GuardrailFunctionOutput:
|
|
131
|
+
result = await Runner.run(guardrail_agent, output.response, context=ctx.context)
|
|
132
|
+
|
|
133
|
+
return GuardrailFunctionOutput(
|
|
134
|
+
output_info=result.final_output,
|
|
135
|
+
tripwire_triggered=result.final_output.is_math,
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
agent = Agent( # (4)!
|
|
139
|
+
name="Customer support agent",
|
|
140
|
+
instructions="You are a customer support agent. You help customers with their questions.",
|
|
141
|
+
output_guardrails=[math_guardrail],
|
|
142
|
+
output_type=MessageOutput,
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
async def main():
|
|
146
|
+
# This should trip the guardrail
|
|
147
|
+
try:
|
|
148
|
+
await Runner.run(agent, "Hello, can you help me solve for x: 2x + 3 = 11?")
|
|
149
|
+
print("Guardrail didn't trip - this is unexpected")
|
|
150
|
+
|
|
151
|
+
except OutputGuardrailTripwireTriggered:
|
|
152
|
+
print("Math output guardrail tripped")
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
1. これは実際のエージェントの出力型です。
|
|
156
|
+
2. これはガードレールの出力型です。
|
|
157
|
+
3. これはエージェントの出力を受け取り、結果を返すガードレール関数です。
|
|
158
|
+
4. これはワークフローを定義する実際のエージェントです。
|