openai-agents 0.2.5__tar.gz → 0.2.6__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.6}/PKG-INFO +2 -2
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/index.md +1 -1
- openai_agents-0.2.6/docs/ja/agents.md +249 -0
- openai_agents-0.2.6/docs/ja/config.md +98 -0
- openai_agents-0.2.6/docs/ja/context.md +82 -0
- openai_agents-0.2.6/docs/ja/examples.md +47 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ja/guardrails.md +24 -27
- openai_agents-0.2.6/docs/ja/handoffs.md +117 -0
- openai_agents-0.2.6/docs/ja/index.md +58 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ja/mcp.md +26 -26
- openai_agents-0.2.6/docs/ja/models/index.md +153 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ja/models/litellm.md +9 -9
- openai_agents-0.2.6/docs/ja/multi_agent.md +50 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ja/quickstart.md +20 -20
- openai_agents-0.2.6/docs/ja/realtime/guide.md +176 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ja/realtime/quickstart.md +29 -28
- openai_agents-0.2.6/docs/ja/release.md +32 -0
- openai_agents-0.2.6/docs/ja/repl.md +23 -0
- openai_agents-0.2.6/docs/ja/results.md +56 -0
- openai_agents-0.2.6/docs/ja/running_agents.md +141 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ja/sessions.md +29 -29
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ja/streaming.md +7 -7
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ja/tools.md +49 -49
- openai_agents-0.2.6/docs/ja/tracing.md +152 -0
- openai_agents-0.2.6/docs/ja/visualization.md +105 -0
- openai_agents-0.2.6/docs/ja/voice/pipeline.md +86 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ja/voice/quickstart.md +10 -10
- openai_agents-0.2.6/docs/ja/voice/tracing.md +18 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/realtime/guide.md +18 -0
- openai_agents-0.2.6/examples/basic/stream_function_call_args.py +86 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/customer_service/main.py +5 -4
- {openai_agents-0.2.5 → openai_agents-0.2.6}/pyproject.toml +2 -2
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/extensions/models/litellm_model.py +12 -6
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/lifecycle.py +2 -2
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/model_settings.py +8 -2
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/models/chatcmpl_converter.py +14 -11
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/models/openai_chatcompletions.py +1 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/models/openai_responses.py +11 -4
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/realtime/agent.py +6 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/realtime/session.py +11 -1
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/model_settings/test_serialization.py +2 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/realtime/test_session.py +62 -0
- openai_agents-0.2.6/tests/test_logprobs.py +50 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_openai_chatcompletions.py +3 -3
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_openai_chatcompletions_converter.py +5 -5
- {openai_agents-0.2.5 → openai_agents-0.2.6}/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/handoffs.md +0 -117
- openai_agents-0.2.5/docs/ja/index.md +0 -58
- 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/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 → openai_agents-0.2.6}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/.github/ISSUE_TEMPLATE/model_provider.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/.github/ISSUE_TEMPLATE/question.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/.github/codex/home/config.toml +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/.github/codex/labels/codex-attempt.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/.github/codex/labels/codex-review.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/.github/codex/labels/codex-triage.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/.github/workflows/codex.yml +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/.github/workflows/docs.yml +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/.github/workflows/issues.yml +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/.github/workflows/publish.yml +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/.github/workflows/tests.yml +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/.github/workflows/update-docs.yml +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/.gitignore +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/.prettierrc +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/.vscode/launch.json +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/.vscode/settings.json +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/AGENTS.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/CLAUDE.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/LICENSE +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/Makefile +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/agents.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/assets/images/favicon-platform.svg +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/assets/images/graph.png +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/assets/images/mcp-tracing.jpg +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/assets/images/orchestration.png +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/assets/logo.svg +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/config.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/context.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/examples.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/guardrails.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/handoffs.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/mcp.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/models/index.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/models/litellm.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/multi_agent.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/quickstart.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/realtime/quickstart.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/agent.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/agent_output.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/computer.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/exceptions.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/extensions/handoff_filters.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/extensions/handoff_prompt.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/extensions/litellm.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/extensions/models/litellm_model.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/extensions/models/litellm_provider.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/extensions/visualization.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/function_schema.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/guardrail.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/handoffs.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/index.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/items.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/lifecycle.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/logger.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/mcp/server.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/mcp/util.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/memory.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/model_settings.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/models/chatcmpl_converter.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/models/chatcmpl_helpers.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/models/chatcmpl_stream_handler.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/models/fake_id.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/models/interface.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/models/multi_provider.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/models/openai_chatcompletions.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/models/openai_provider.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/models/openai_responses.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/prompts.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/realtime/agent.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/realtime/config.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/realtime/events.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/realtime/model.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/realtime/runner.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/realtime/session.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/repl.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/result.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/run.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/run_context.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/stream_events.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/strict_schema.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/tool.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/tool_context.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/tracing/create.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/tracing/index.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/tracing/logger.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/tracing/processor_interface.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/tracing/processors.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/tracing/provider.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/tracing/scope.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/tracing/setup.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/tracing/span_data.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/tracing/spans.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/tracing/traces.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/tracing/util.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/usage.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/version.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/voice/events.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/voice/exceptions.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/voice/imports.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/voice/input.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/voice/model.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/voice/models/openai_model_provider.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/voice/models/openai_provider.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/voice/models/openai_stt.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/voice/models/openai_tts.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/voice/pipeline.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/voice/pipeline_config.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/voice/result.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/voice/utils.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/ref/voice/workflow.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/release.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/repl.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/results.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/running_agents.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/scripts/generate_ref_files.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/scripts/translate_docs.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/sessions.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/streaming.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/stylesheets/extra.css +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/tools.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/tracing.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/visualization.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/voice/pipeline.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/voice/quickstart.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/docs/voice/tracing.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/agent_patterns/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/agent_patterns/agents_as_tools.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/agent_patterns/deterministic.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/agent_patterns/forcing_tool_use.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/agent_patterns/input_guardrails.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/agent_patterns/llm_as_a_judge.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/agent_patterns/output_guardrails.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/agent_patterns/parallelization.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/agent_patterns/routing.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/agent_patterns/streaming_guardrails.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/basic/agent_lifecycle_example.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/basic/dynamic_system_prompt.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/basic/hello_world.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/basic/hello_world_jupyter.ipynb +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/basic/lifecycle_example.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/basic/local_image.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/basic/media/image_bison.jpg +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/basic/non_strict_output_type.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/basic/previous_response_id.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/basic/prompt_template.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/basic/remote_image.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/basic/remote_pdf.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/basic/session_example.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/basic/stream_items.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/basic/stream_text.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/basic/tools.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/financial_research_agent/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/financial_research_agent/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/financial_research_agent/agents/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/financial_research_agent/agents/financials_agent.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/financial_research_agent/agents/planner_agent.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/financial_research_agent/agents/risk_agent.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/financial_research_agent/agents/search_agent.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/financial_research_agent/agents/verifier_agent.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/financial_research_agent/agents/writer_agent.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/financial_research_agent/main.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/financial_research_agent/manager.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/financial_research_agent/printer.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/handoffs/message_filter.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/handoffs/message_filter_streaming.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/hosted_mcp/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/hosted_mcp/approvals.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/hosted_mcp/simple.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/mcp/filesystem_example/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/mcp/filesystem_example/main.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/mcp/filesystem_example/sample_files/favorite_books.txt +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/mcp/filesystem_example/sample_files/favorite_cities.txt +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/mcp/filesystem_example/sample_files/favorite_songs.txt +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/mcp/git_example/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/mcp/git_example/main.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/mcp/prompt_server/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/mcp/prompt_server/main.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/mcp/prompt_server/server.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/mcp/sse_example/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/mcp/sse_example/main.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/mcp/sse_example/server.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/mcp/streamablehttp_example/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/mcp/streamablehttp_example/main.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/mcp/streamablehttp_example/server.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/model_providers/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/model_providers/custom_example_agent.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/model_providers/custom_example_global.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/model_providers/custom_example_provider.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/model_providers/litellm_auto.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/model_providers/litellm_provider.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/realtime/app/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/realtime/app/agent.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/realtime/app/server.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/realtime/app/static/app.js +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/realtime/app/static/index.html +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/realtime/cli/demo.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/realtime/cli/ui.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/realtime/twilio/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/realtime/twilio/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/realtime/twilio/requirements.txt +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/realtime/twilio/server.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/realtime/twilio/twilio_handler.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/reasoning_content/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/reasoning_content/main.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/reasoning_content/runner_example.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/research_bot/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/research_bot/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/research_bot/agents/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/research_bot/agents/planner_agent.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/research_bot/agents/search_agent.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/research_bot/agents/writer_agent.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/research_bot/main.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/research_bot/manager.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/research_bot/printer.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/research_bot/sample_outputs/product_recs.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/research_bot/sample_outputs/product_recs.txt +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/research_bot/sample_outputs/vacation.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/research_bot/sample_outputs/vacation.txt +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/tools/code_interpreter.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/tools/computer_use.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/tools/file_search.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/tools/image_generator.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/tools/web_search.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/voice/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/voice/static/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/voice/static/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/voice/static/main.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/voice/static/util.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/voice/streamed/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/voice/streamed/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/voice/streamed/main.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/examples/voice/streamed/my_workflow.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/mkdocs.yml +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/_config.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/_debug.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/_run_impl.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/agent.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/agent_output.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/computer.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/exceptions.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/extensions/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/extensions/handoff_filters.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/extensions/handoff_prompt.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/extensions/models/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/extensions/models/litellm_provider.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/extensions/visualization.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/function_schema.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/guardrail.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/handoffs.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/items.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/logger.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/mcp/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/mcp/server.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/mcp/util.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/memory/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/memory/session.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/models/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/models/_openai_shared.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/models/chatcmpl_helpers.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/models/chatcmpl_stream_handler.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/models/fake_id.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/models/interface.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/models/multi_provider.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/models/openai_provider.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/prompts.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/py.typed +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/realtime/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/realtime/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/realtime/_default_tracker.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/realtime/_util.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/realtime/config.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/realtime/events.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/realtime/handoffs.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/realtime/items.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/realtime/model.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/realtime/model_events.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/realtime/model_inputs.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/realtime/openai_realtime.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/realtime/runner.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/repl.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/result.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/run.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/run_context.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/stream_events.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/strict_schema.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/tool.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/tool_context.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/tracing/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/tracing/create.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/tracing/logger.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/tracing/processor_interface.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/tracing/processors.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/tracing/provider.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/tracing/scope.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/tracing/setup.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/tracing/span_data.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/tracing/spans.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/tracing/traces.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/tracing/util.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/usage.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/util/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/util/_coro.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/util/_error_tracing.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/util/_json.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/util/_pretty_print.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/util/_transforms.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/util/_types.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/version.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/voice/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/voice/events.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/voice/exceptions.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/voice/imports.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/voice/input.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/voice/model.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/voice/models/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/voice/models/openai_model_provider.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/voice/models/openai_stt.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/voice/models/openai_tts.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/voice/pipeline.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/voice/pipeline_config.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/voice/result.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/voice/utils.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/src/agents/voice/workflow.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/README.md +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/conftest.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/fake_model.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/fastapi/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/fastapi/streaming_app.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/fastapi/test_streaming_context.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/mcp/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/mcp/conftest.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/mcp/helpers.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/mcp/test_caching.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/mcp/test_connect_disconnect.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/mcp/test_mcp_tracing.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/mcp/test_mcp_util.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/mcp/test_prompt_server.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/mcp/test_runner_calls_mcp.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/mcp/test_server_errors.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/mcp/test_tool_filtering.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/models/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/models/conftest.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/models/test_kwargs_functionality.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/models/test_litellm_chatcompletions_stream.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/models/test_litellm_extra_body.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/models/test_map.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/realtime/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/realtime/test_agent.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/realtime/test_conversion_helpers.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/realtime/test_item_parsing.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/realtime/test_model_events.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/realtime/test_openai_realtime.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/realtime/test_playback_tracker.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/realtime/test_realtime_handoffs.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/realtime/test_runner.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/realtime/test_tracing.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_agent_clone_shallow_copy.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_agent_config.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_agent_hooks.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_agent_prompt.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_agent_runner.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_agent_runner_streamed.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_agent_tracing.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_cancel_streaming.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_computer_action.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_config.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_doc_parsing.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_extension_filters.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_extra_headers.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_function_schema.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_function_tool.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_function_tool_decorator.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_global_hooks.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_guardrails.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_handoff_tool.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_items_helpers.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_max_turns.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_openai_chatcompletions_stream.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_openai_responses_converter.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_output_tool.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_pretty_print.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_reasoning_content.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_repl.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_responses.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_responses_tracing.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_result_cast.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_run.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_run_config.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_run_error_details.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_run_step_execution.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_run_step_processing.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_session.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_session_exceptions.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_stream_events.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_strict_schema.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_tool_choice_reset.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_tool_converter.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_tool_use_behavior.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_trace_processor.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_tracing.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_tracing_errors.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_tracing_errors_streamed.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_usage.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/test_visualization.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/testing_processor.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/tracing/test_processor_api_key.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/tracing/test_set_api_key_fix.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/voice/__init__.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/voice/conftest.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/voice/fake_models.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/voice/helpers.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/voice/test_input.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/voice/test_openai_stt.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/voice/test_openai_tts.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/tests/voice/test_pipeline.py +0 -0
- {openai_agents-0.2.5 → openai_agents-0.2.6}/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.6
|
|
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
|
|
@@ -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,249 @@
|
|
|
1
|
+
---
|
|
2
|
+
search:
|
|
3
|
+
exclude: true
|
|
4
|
+
---
|
|
5
|
+
# エージェント
|
|
6
|
+
|
|
7
|
+
エージェントはアプリの中核となるビルディングブロックです。エージェントとは、指示とツールで構成された大規模言語モデル ( LLM ) です。
|
|
8
|
+
|
|
9
|
+
## 基本設定
|
|
10
|
+
|
|
11
|
+
エージェントで最もよく設定するプロパティは次のとおりです。
|
|
12
|
+
|
|
13
|
+
- `name`: エージェントを識別する必須の文字列。
|
|
14
|
+
- `instructions`: developer メッセージまたは system prompt とも呼ばれます。
|
|
15
|
+
- `model`: 使用する LLM、および temperature や top_p などのチューニングパラメーターを設定する `model_settings` (オプション)。
|
|
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/) でラップできる型―dataclass、list、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 を渡しますが、関数を通じて動的に渡すこともできます。この関数はエージェントと context を受け取り、プロンプトを返さなければなりません。同期関数と `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`) を設定すると、そのツールを必ず使用させます。
|
|
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
|
+
|
|
170
|
+
- `"run_llm_again"`: デフォルト設定。ツールを実行し、その結果を LLM が処理して最終応答を生成します。
|
|
171
|
+
- `"stop_on_first_tool"`: 最初に呼び出されたツールの出力をそのまま最終応答として使用し、追加の LLM 処理を行いません。
|
|
172
|
+
|
|
173
|
+
```python
|
|
174
|
+
from agents import Agent, Runner, function_tool, ModelSettings
|
|
175
|
+
|
|
176
|
+
@function_tool
|
|
177
|
+
def get_weather(city: str) -> str:
|
|
178
|
+
"""Returns weather info for the specified city."""
|
|
179
|
+
return f"The weather in {city} is sunny"
|
|
180
|
+
|
|
181
|
+
agent = Agent(
|
|
182
|
+
name="Weather Agent",
|
|
183
|
+
instructions="Retrieve weather details.",
|
|
184
|
+
tools=[get_weather],
|
|
185
|
+
tool_use_behavior="stop_on_first_tool"
|
|
186
|
+
)
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
- `StopAtTools(stop_at_tool_names=[...])`: 指定したツールのいずれかが呼び出されると停止し、その出力を最終応答とします。
|
|
190
|
+
```python
|
|
191
|
+
from agents import Agent, Runner, function_tool
|
|
192
|
+
from agents.agent import StopAtTools
|
|
193
|
+
|
|
194
|
+
@function_tool
|
|
195
|
+
def get_weather(city: str) -> str:
|
|
196
|
+
"""Returns weather info for the specified city."""
|
|
197
|
+
return f"The weather in {city} is sunny"
|
|
198
|
+
|
|
199
|
+
@function_tool
|
|
200
|
+
def sum_numbers(a: int, b: int) -> int:
|
|
201
|
+
"""Adds two numbers."""
|
|
202
|
+
return a + b
|
|
203
|
+
|
|
204
|
+
agent = Agent(
|
|
205
|
+
name="Stop At Stock Agent",
|
|
206
|
+
instructions="Get weather or sum numbers.",
|
|
207
|
+
tools=[get_weather, sum_numbers],
|
|
208
|
+
tool_use_behavior=StopAtTools(stop_at_tool_names=["get_weather"])
|
|
209
|
+
)
|
|
210
|
+
```
|
|
211
|
+
- `ToolsToFinalOutputFunction`: ツール結果を処理し、停止するか LLM を続行するかを決定するカスタム関数。
|
|
212
|
+
|
|
213
|
+
```python
|
|
214
|
+
from agents import Agent, Runner, function_tool, FunctionToolResult, RunContextWrapper
|
|
215
|
+
from agents.agent import ToolsToFinalOutputResult
|
|
216
|
+
from typing import List, Any
|
|
217
|
+
|
|
218
|
+
@function_tool
|
|
219
|
+
def get_weather(city: str) -> str:
|
|
220
|
+
"""Returns weather info for the specified city."""
|
|
221
|
+
return f"The weather in {city} is sunny"
|
|
222
|
+
|
|
223
|
+
def custom_tool_handler(
|
|
224
|
+
context: RunContextWrapper[Any],
|
|
225
|
+
tool_results: List[FunctionToolResult]
|
|
226
|
+
) -> ToolsToFinalOutputResult:
|
|
227
|
+
"""Processes tool results to decide final output."""
|
|
228
|
+
for result in tool_results:
|
|
229
|
+
if result.output and "sunny" in result.output:
|
|
230
|
+
return ToolsToFinalOutputResult(
|
|
231
|
+
is_final_output=True,
|
|
232
|
+
final_output=f"Final weather: {result.output}"
|
|
233
|
+
)
|
|
234
|
+
return ToolsToFinalOutputResult(
|
|
235
|
+
is_final_output=False,
|
|
236
|
+
final_output=None
|
|
237
|
+
)
|
|
238
|
+
|
|
239
|
+
agent = Agent(
|
|
240
|
+
name="Weather Agent",
|
|
241
|
+
instructions="Retrieve weather details.",
|
|
242
|
+
tools=[get_weather],
|
|
243
|
+
tool_use_behavior=custom_tool_handler
|
|
244
|
+
)
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
!!! note
|
|
248
|
+
|
|
249
|
+
無限ループを防ぐため、フレームワークはツール呼び出し後に `tool_choice` を自動的に "auto" にリセットします。この挙動は [`agent.reset_tool_choice`][agents.agent.Agent.reset_tool_choice] で設定できます。ツール結果が LLM に送られ、その後 `tool_choice` により再度ツール呼び出しが生成され…という無限ループを防止するためです。
|
|
@@ -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 を利用しますが、[set_default_openai_api()][agents.set_default_openai_api] 関数を使用して Chat Completions 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 にはハンドラーが設定されていない Python ロガーが 2 つあります。デフォルトでは、警告とエラーは `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. コードでローカルに利用できるコンテキスト: これは、tool 関数の実行時や `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. そのオブジェクトを各種 run メソッド(例: `Runner.run(..., **context=whatever**)`)に渡します。
|
|
18
|
+
3. すべての tool 呼び出しやライフサイクルフックなどには `RunContextWrapper[T]` が渡されます。ここで `T` は作成したコンテキストオブジェクトの型で、`wrapper.context` からアクセスできます。
|
|
19
|
+
|
|
20
|
+
**最も重要なのは**、同一のエージェント実行内では、エージェント・tool 関数・ライフサイクルフックなどがすべて同じ _型_ のコンテキストを使う必要があるという点です。
|
|
21
|
+
|
|
22
|
+
コンテキストは次のような用途に利用できます。
|
|
23
|
+
|
|
24
|
+
- 実行のためのコンテキストデータ(例: username/uid などユーザーに関する情報)
|
|
25
|
+
- 依存関係(例: logger オブジェクトやデータフェッチャーなど)
|
|
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. これは tool です。`RunContextWrapper[UserInfo]` を受け取り、その実装でコンテキストを読み取ります。
|
|
71
|
+
3. ジェネリック型 `UserInfo` でエージェントをマークすることで、型チェッカーがエラーを検出できます(例えば、異なるコンテキスト型を受け取る tool を渡そうとした場合)。
|
|
72
|
+
4. `run` 関数にコンテキストが渡されます。
|
|
73
|
+
5. エージェントは tool を正しく呼び出し、年齢を取得します。
|
|
74
|
+
|
|
75
|
+
## エージェント/LLM コンテキスト
|
|
76
|
+
|
|
77
|
+
LLM が呼び出されたとき、LLM が参照できる **唯一の** データは会話履歴に含まれるものだけです。そのため、新しいデータを LLM に利用させたい場合は、そのデータを履歴に含める形で提供する必要があります。主な方法は次のとおりです。
|
|
78
|
+
|
|
79
|
+
1. Agent の `instructions` に追加する。これは「system prompt」や「developer message」とも呼ばれます。system prompt は静的な文字列でも、コンテキストを受け取って文字列を返す動的な関数でもかまいません。たとえばユーザー名や現在の日付など、常に有用な情報を渡す一般的な方法です。
|
|
80
|
+
2. `Runner.run` を呼び出す際の `input` に追加する。`instructions` と似ていますが、[指揮系統](https://cdn.openai.com/spec/model-spec-2024-05-08.html#follow-the-chain-of-command) の下位メッセージとして渡せる点が異なります。
|
|
81
|
+
3. function tools を介して公開する。これは *オンデマンド* のコンテキストに便利です。LLM が必要になったタイミングで tool を呼び出し、データを取得できます。
|
|
82
|
+
4. retrieval や Web 検索を利用する。これらはファイルやデータベースから関連データを取得する retrieval、あるいは Web から取得する Web 検索といった特別なツールです。関連コンテキストデータで応答を「グラウンディング」するのに役立ちます。
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
search:
|
|
3
|
+
exclude: true
|
|
4
|
+
---
|
|
5
|
+
# コード例
|
|
6
|
+
|
|
7
|
+
[リポジトリ](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
|
+
- 動的な system prompt
|
|
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 を使って Realtime API の体験を構築する方法を示す例。
|
|
@@ -4,47 +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]
|
|
20
|
-
3. 最後に [`.tripwire_triggered`][agents.guardrail.GuardrailFunctionOutput.tripwire_triggered] が true
|
|
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
|
-
|
|
25
|
-
ところで、`guardrails` プロパティが `Runner.run` に渡されるのではなくエージェントにあるのはなぜでしょうか?
|
|
26
|
-
それは、ガードレールが実際のエージェントに密接に関係していることが多いからです。異なるエージェントには異なるガードレールを実行したいので、同じ場所にコードを置くと可読性が向上します。
|
|
24
|
+
入力ガードレールはユーザー入力に対して実行されることを想定しているため、エージェントが *最初の* エージェントである場合にのみガードレールが実行されます。`guardrails` プロパティがエージェントにあるのはなぜか、`Runner.run` に渡さないのはなぜかと思われるかもしれません。これは、ガードレールが実際のエージェントに関連する傾向があるためです。エージェントごとに異なるガードレールを実行するため、コードを同じ場所に置くことで読みやすさが向上します。
|
|
27
25
|
|
|
28
|
-
##
|
|
26
|
+
## 出力ガードレール
|
|
29
27
|
|
|
30
|
-
|
|
28
|
+
出力ガードレールは 3 ステップで実行されます:
|
|
31
29
|
|
|
32
30
|
1. まず、ガードレールはエージェントが生成した出力を受け取ります。
|
|
33
|
-
2. 次に、ガードレール関数が実行され [`GuardrailFunctionOutput`][agents.guardrail.GuardrailFunctionOutput]
|
|
34
|
-
3. 最後に [`.tripwire_triggered`][agents.guardrail.GuardrailFunctionOutput.tripwire_triggered] が true
|
|
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] 例外が発生し、ユーザーへの適切な応答や例外処理を行えます。
|
|
35
33
|
|
|
36
34
|
!!! Note
|
|
37
35
|
|
|
38
|
-
|
|
39
|
-
Input guardrails と同様に、ガードレールは実際のエージェントに密接に関係しているため、異なるエージェントには異なるガードレールを実行したいという理由から、コードを同じ場所に置くと可読性が向上します。
|
|
36
|
+
出力ガードレールはエージェントの最終出力に対して実行されることを想定しているため、エージェントが *最後の* エージェントである場合にのみガードレールが実行されます。入力ガードレールと同様に、ガードレールは実際のエージェントに関連する傾向があるため、コードを同じ場所に置くことで読みやすさが向上します。
|
|
40
37
|
|
|
41
|
-
##
|
|
38
|
+
## トリップワイヤ
|
|
42
39
|
|
|
43
|
-
|
|
40
|
+
入力または出力がガードレールに失敗した場合、ガードレールはトリップワイヤを用いてそれを示します。トリップワイヤが作動したガードレールを検知するとすぐに、`{Input,Output}GuardrailTripwireTriggered` 例外を発生させ、エージェントの実行を停止します。
|
|
44
41
|
|
|
45
42
|
## ガードレールの実装
|
|
46
43
|
|
|
47
|
-
入力を受け取り、[`GuardrailFunctionOutput`][agents.guardrail.GuardrailFunctionOutput]
|
|
44
|
+
入力を受け取り、[`GuardrailFunctionOutput`][agents.guardrail.GuardrailFunctionOutput] を返す関数を用意する必要があります。以下の例では、その処理を内部でエージェントを実行することで行っています。
|
|
48
45
|
|
|
49
46
|
```python
|
|
50
47
|
from pydantic import BaseModel
|
|
@@ -98,11 +95,11 @@ async def main():
|
|
|
98
95
|
```
|
|
99
96
|
|
|
100
97
|
1. このエージェントをガードレール関数内で使用します。
|
|
101
|
-
2.
|
|
102
|
-
3.
|
|
103
|
-
4.
|
|
98
|
+
2. これはエージェントの入力 / コンテキストを受け取り、結果を返すガードレール関数です。
|
|
99
|
+
3. ガードレールの結果に追加情報を含めることができます。
|
|
100
|
+
4. これはワークフローを定義する実際のエージェントです。
|
|
104
101
|
|
|
105
|
-
|
|
102
|
+
出力ガードレールも同様です。
|
|
106
103
|
|
|
107
104
|
```python
|
|
108
105
|
from pydantic import BaseModel
|
|
@@ -155,7 +152,7 @@ async def main():
|
|
|
155
152
|
print("Math output guardrail tripped")
|
|
156
153
|
```
|
|
157
154
|
|
|
158
|
-
1.
|
|
159
|
-
2.
|
|
155
|
+
1. これは実際のエージェントの出力型です。
|
|
156
|
+
2. これはガードレールの出力型です。
|
|
160
157
|
3. これはエージェントの出力を受け取り、結果を返すガードレール関数です。
|
|
161
|
-
4.
|
|
158
|
+
4. これはワークフローを定義する実際のエージェントです。
|