openai-agents 0.0.9__tar.gz → 0.0.11__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.

Files changed (319) hide show
  1. {openai_agents-0.0.9 → openai_agents-0.0.11}/Makefile +5 -0
  2. {openai_agents-0.0.9 → openai_agents-0.0.11}/PKG-INFO +1 -1
  3. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/agents.md +4 -4
  4. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/config.md +1 -1
  5. openai_agents-0.0.11/docs/ja/agents.md +147 -0
  6. openai_agents-0.0.11/docs/ja/config.md +94 -0
  7. openai_agents-0.0.11/docs/ja/context.md +77 -0
  8. openai_agents-0.0.11/docs/ja/examples.md +40 -0
  9. openai_agents-0.0.11/docs/ja/guardrails.md +154 -0
  10. openai_agents-0.0.11/docs/ja/handoffs.md +113 -0
  11. openai_agents-0.0.11/docs/ja/index.md +52 -0
  12. openai_agents-0.0.11/docs/ja/mcp.md +60 -0
  13. openai_agents-0.0.11/docs/ja/models.md +106 -0
  14. openai_agents-0.0.11/docs/ja/multi_agent.md +37 -0
  15. openai_agents-0.0.11/docs/ja/quickstart.md +189 -0
  16. openai_agents-0.0.11/docs/ja/results.md +52 -0
  17. openai_agents-0.0.11/docs/ja/running_agents.md +95 -0
  18. openai_agents-0.0.11/docs/ja/streaming.md +87 -0
  19. openai_agents-0.0.11/docs/ja/tools.md +270 -0
  20. openai_agents-0.0.11/docs/ja/tracing.md +116 -0
  21. openai_agents-0.0.11/docs/ja/visualization.md +84 -0
  22. openai_agents-0.0.11/docs/ja/voice/pipeline.md +75 -0
  23. openai_agents-0.0.11/docs/ja/voice/quickstart.md +194 -0
  24. openai_agents-0.0.11/docs/ja/voice/tracing.md +14 -0
  25. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/models.md +13 -0
  26. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/quickstart.md +1 -1
  27. openai_agents-0.0.11/docs/scripts/translate_docs.py +267 -0
  28. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/tools.md +21 -0
  29. openai_agents-0.0.11/examples/agent_patterns/streaming_guardrails.py +93 -0
  30. openai_agents-0.0.11/examples/basic/previous_response_id.py +66 -0
  31. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/research_bot/agents/search_agent.py +5 -5
  32. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/tools/computer_use.py +5 -3
  33. openai_agents-0.0.11/mkdocs.yml +191 -0
  34. {openai_agents-0.0.9 → openai_agents-0.0.11}/pyproject.toml +4 -1
  35. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/agent.py +1 -1
  36. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/function_schema.py +1 -1
  37. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/items.py +3 -1
  38. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/model_settings.py +13 -0
  39. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/models/interface.py +8 -0
  40. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/models/openai_chatcompletions.py +37 -4
  41. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/models/openai_responses.py +13 -2
  42. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/result.py +8 -0
  43. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/run.py +22 -2
  44. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/tracing/scope.py +4 -0
  45. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/tracing/setup.py +3 -0
  46. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/tracing/span_data.py +60 -0
  47. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/fake_model.py +14 -1
  48. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_agent_hooks.py +2 -2
  49. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_agent_runner.py +83 -0
  50. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_items_helpers.py +6 -6
  51. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_openai_chatcompletions.py +5 -2
  52. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_openai_chatcompletions_stream.py +3 -0
  53. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_responses_tracing.py +96 -12
  54. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_run_step_execution.py +10 -10
  55. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_run_step_processing.py +16 -16
  56. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/voice/test_workflow.py +4 -0
  57. {openai_agents-0.0.9 → openai_agents-0.0.11}/uv.lock +27 -1
  58. openai_agents-0.0.9/mkdocs.yml +0 -149
  59. {openai_agents-0.0.9 → openai_agents-0.0.11}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  60. {openai_agents-0.0.9 → openai_agents-0.0.11}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  61. {openai_agents-0.0.9 → openai_agents-0.0.11}/.github/ISSUE_TEMPLATE/model_provider.md +0 -0
  62. {openai_agents-0.0.9 → openai_agents-0.0.11}/.github/ISSUE_TEMPLATE/question.md +0 -0
  63. {openai_agents-0.0.9 → openai_agents-0.0.11}/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -0
  64. {openai_agents-0.0.9 → openai_agents-0.0.11}/.github/workflows/docs.yml +0 -0
  65. {openai_agents-0.0.9 → openai_agents-0.0.11}/.github/workflows/issues.yml +0 -0
  66. {openai_agents-0.0.9 → openai_agents-0.0.11}/.github/workflows/publish.yml +0 -0
  67. {openai_agents-0.0.9 → openai_agents-0.0.11}/.github/workflows/tests.yml +0 -0
  68. {openai_agents-0.0.9 → openai_agents-0.0.11}/.gitignore +0 -0
  69. {openai_agents-0.0.9 → openai_agents-0.0.11}/.prettierrc +0 -0
  70. {openai_agents-0.0.9 → openai_agents-0.0.11}/.vscode/settings.json +0 -0
  71. {openai_agents-0.0.9 → openai_agents-0.0.11}/LICENSE +0 -0
  72. {openai_agents-0.0.9 → openai_agents-0.0.11}/README.md +0 -0
  73. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/assets/images/favicon-platform.svg +0 -0
  74. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/assets/images/graph.png +0 -0
  75. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/assets/images/mcp-tracing.jpg +0 -0
  76. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/assets/images/orchestration.png +0 -0
  77. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/assets/logo.svg +0 -0
  78. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/context.md +0 -0
  79. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/examples.md +0 -0
  80. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/guardrails.md +0 -0
  81. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/handoffs.md +0 -0
  82. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/index.md +0 -0
  83. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/mcp.md +0 -0
  84. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/multi_agent.md +0 -0
  85. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/agent.md +0 -0
  86. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/agent_output.md +0 -0
  87. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/exceptions.md +0 -0
  88. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/extensions/handoff_filters.md +0 -0
  89. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/extensions/handoff_prompt.md +0 -0
  90. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/function_schema.md +0 -0
  91. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/guardrail.md +0 -0
  92. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/handoffs.md +0 -0
  93. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/index.md +0 -0
  94. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/items.md +0 -0
  95. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/lifecycle.md +0 -0
  96. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/mcp/server.md +0 -0
  97. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/mcp/util.md +0 -0
  98. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/model_settings.md +0 -0
  99. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/models/interface.md +0 -0
  100. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/models/openai_chatcompletions.md +0 -0
  101. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/models/openai_responses.md +0 -0
  102. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/result.md +0 -0
  103. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/run.md +0 -0
  104. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/run_context.md +0 -0
  105. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/stream_events.md +0 -0
  106. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/tool.md +0 -0
  107. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/tracing/create.md +0 -0
  108. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/tracing/index.md +0 -0
  109. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/tracing/processor_interface.md +0 -0
  110. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/tracing/processors.md +0 -0
  111. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/tracing/scope.md +0 -0
  112. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/tracing/setup.md +0 -0
  113. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/tracing/span_data.md +0 -0
  114. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/tracing/spans.md +0 -0
  115. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/tracing/traces.md +0 -0
  116. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/tracing/util.md +0 -0
  117. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/usage.md +0 -0
  118. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/voice/events.md +0 -0
  119. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/voice/exceptions.md +0 -0
  120. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/voice/input.md +0 -0
  121. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/voice/model.md +0 -0
  122. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/voice/models/openai_provider.md +0 -0
  123. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/voice/models/openai_stt.md +0 -0
  124. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/voice/models/openai_tts.md +0 -0
  125. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/voice/pipeline.md +0 -0
  126. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/voice/pipeline_config.md +0 -0
  127. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/voice/result.md +0 -0
  128. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/voice/utils.md +0 -0
  129. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/ref/voice/workflow.md +0 -0
  130. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/results.md +0 -0
  131. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/running_agents.md +0 -0
  132. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/streaming.md +0 -0
  133. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/stylesheets/extra.css +0 -0
  134. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/tracing.md +0 -0
  135. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/visualization.md +0 -0
  136. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/voice/pipeline.md +0 -0
  137. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/voice/quickstart.md +0 -0
  138. {openai_agents-0.0.9 → openai_agents-0.0.11}/docs/voice/tracing.md +0 -0
  139. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/__init__.py +0 -0
  140. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/agent_patterns/README.md +0 -0
  141. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/agent_patterns/agents_as_tools.py +0 -0
  142. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/agent_patterns/deterministic.py +0 -0
  143. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/agent_patterns/forcing_tool_use.py +0 -0
  144. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/agent_patterns/input_guardrails.py +0 -0
  145. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/agent_patterns/llm_as_a_judge.py +0 -0
  146. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/agent_patterns/output_guardrails.py +0 -0
  147. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/agent_patterns/parallelization.py +0 -0
  148. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/agent_patterns/routing.py +0 -0
  149. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/basic/agent_lifecycle_example.py +0 -0
  150. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/basic/dynamic_system_prompt.py +0 -0
  151. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/basic/hello_world.py +0 -0
  152. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/basic/hello_world_jupyter.py +0 -0
  153. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/basic/lifecycle_example.py +0 -0
  154. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/basic/stream_items.py +0 -0
  155. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/basic/stream_text.py +0 -0
  156. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/basic/tools.py +0 -0
  157. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/customer_service/main.py +0 -0
  158. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/financial_research_agent/README.md +0 -0
  159. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/financial_research_agent/__init__.py +0 -0
  160. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/financial_research_agent/agents/__init__.py +0 -0
  161. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/financial_research_agent/agents/financials_agent.py +0 -0
  162. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/financial_research_agent/agents/planner_agent.py +0 -0
  163. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/financial_research_agent/agents/risk_agent.py +0 -0
  164. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/financial_research_agent/agents/search_agent.py +0 -0
  165. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/financial_research_agent/agents/verifier_agent.py +0 -0
  166. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/financial_research_agent/agents/writer_agent.py +0 -0
  167. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/financial_research_agent/main.py +0 -0
  168. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/financial_research_agent/manager.py +0 -0
  169. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/financial_research_agent/printer.py +0 -0
  170. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/handoffs/message_filter.py +0 -0
  171. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/handoffs/message_filter_streaming.py +0 -0
  172. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/mcp/filesystem_example/README.md +0 -0
  173. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/mcp/filesystem_example/main.py +0 -0
  174. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/mcp/filesystem_example/sample_files/favorite_books.txt +0 -0
  175. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/mcp/filesystem_example/sample_files/favorite_cities.txt +0 -0
  176. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/mcp/filesystem_example/sample_files/favorite_songs.txt +0 -0
  177. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/mcp/git_example/README.md +0 -0
  178. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/mcp/git_example/main.py +0 -0
  179. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/mcp/sse_example/README.md +0 -0
  180. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/mcp/sse_example/main.py +0 -0
  181. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/mcp/sse_example/server.py +0 -0
  182. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/model_providers/README.md +0 -0
  183. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/model_providers/custom_example_agent.py +0 -0
  184. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/model_providers/custom_example_global.py +0 -0
  185. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/model_providers/custom_example_provider.py +0 -0
  186. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/research_bot/README.md +0 -0
  187. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/research_bot/__init__.py +0 -0
  188. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/research_bot/agents/__init__.py +0 -0
  189. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/research_bot/agents/planner_agent.py +0 -0
  190. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/research_bot/agents/writer_agent.py +0 -0
  191. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/research_bot/main.py +0 -0
  192. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/research_bot/manager.py +0 -0
  193. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/research_bot/printer.py +0 -0
  194. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/research_bot/sample_outputs/product_recs.md +0 -0
  195. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/research_bot/sample_outputs/product_recs.txt +0 -0
  196. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/research_bot/sample_outputs/vacation.md +0 -0
  197. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/research_bot/sample_outputs/vacation.txt +0 -0
  198. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/tools/file_search.py +0 -0
  199. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/tools/web_search.py +0 -0
  200. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/voice/__init__.py +0 -0
  201. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/voice/static/README.md +0 -0
  202. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/voice/static/__init__.py +0 -0
  203. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/voice/static/main.py +0 -0
  204. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/voice/static/util.py +0 -0
  205. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/voice/streamed/README.md +0 -0
  206. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/voice/streamed/__init__.py +0 -0
  207. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/voice/streamed/main.py +0 -0
  208. {openai_agents-0.0.9 → openai_agents-0.0.11}/examples/voice/streamed/my_workflow.py +0 -0
  209. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/__init__.py +0 -0
  210. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/_config.py +0 -0
  211. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/_debug.py +0 -0
  212. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/_run_impl.py +0 -0
  213. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/agent_output.py +0 -0
  214. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/computer.py +0 -0
  215. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/exceptions.py +0 -0
  216. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/extensions/__init__.py +0 -0
  217. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/extensions/handoff_filters.py +0 -0
  218. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/extensions/handoff_prompt.py +0 -0
  219. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/extensions/visualization.py +0 -0
  220. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/guardrail.py +0 -0
  221. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/handoffs.py +0 -0
  222. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/lifecycle.py +0 -0
  223. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/logger.py +0 -0
  224. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/mcp/__init__.py +0 -0
  225. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/mcp/server.py +0 -0
  226. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/mcp/util.py +0 -0
  227. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/models/__init__.py +0 -0
  228. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/models/_openai_shared.py +0 -0
  229. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/models/fake_id.py +0 -0
  230. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/models/openai_provider.py +0 -0
  231. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/py.typed +0 -0
  232. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/run_context.py +0 -0
  233. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/stream_events.py +0 -0
  234. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/strict_schema.py +0 -0
  235. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/tool.py +0 -0
  236. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/tracing/__init__.py +0 -0
  237. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/tracing/create.py +0 -0
  238. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/tracing/logger.py +0 -0
  239. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/tracing/processor_interface.py +0 -0
  240. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/tracing/processors.py +0 -0
  241. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/tracing/spans.py +0 -0
  242. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/tracing/traces.py +0 -0
  243. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/tracing/util.py +0 -0
  244. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/usage.py +0 -0
  245. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/util/__init__.py +0 -0
  246. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/util/_coro.py +0 -0
  247. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/util/_error_tracing.py +0 -0
  248. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/util/_json.py +0 -0
  249. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/util/_pretty_print.py +0 -0
  250. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/util/_transforms.py +0 -0
  251. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/util/_types.py +0 -0
  252. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/version.py +0 -0
  253. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/voice/__init__.py +0 -0
  254. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/voice/events.py +0 -0
  255. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/voice/exceptions.py +0 -0
  256. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/voice/imports.py +0 -0
  257. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/voice/input.py +0 -0
  258. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/voice/model.py +0 -0
  259. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/voice/models/__init__.py +0 -0
  260. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/voice/models/openai_model_provider.py +0 -0
  261. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/voice/models/openai_stt.py +0 -0
  262. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/voice/models/openai_tts.py +0 -0
  263. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/voice/pipeline.py +0 -0
  264. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/voice/pipeline_config.py +0 -0
  265. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/voice/result.py +0 -0
  266. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/voice/utils.py +0 -0
  267. {openai_agents-0.0.9 → openai_agents-0.0.11}/src/agents/voice/workflow.py +0 -0
  268. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/README.md +0 -0
  269. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/__init__.py +0 -0
  270. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/conftest.py +0 -0
  271. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/mcp/__init__.py +0 -0
  272. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/mcp/conftest.py +0 -0
  273. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/mcp/helpers.py +0 -0
  274. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/mcp/test_caching.py +0 -0
  275. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/mcp/test_connect_disconnect.py +0 -0
  276. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/mcp/test_mcp_tracing.py +0 -0
  277. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/mcp/test_mcp_util.py +0 -0
  278. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/mcp/test_runner_calls_mcp.py +0 -0
  279. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/mcp/test_server_errors.py +0 -0
  280. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_agent_config.py +0 -0
  281. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_agent_runner_streamed.py +0 -0
  282. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_agent_tracing.py +0 -0
  283. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_computer_action.py +0 -0
  284. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_config.py +0 -0
  285. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_doc_parsing.py +0 -0
  286. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_extension_filters.py +0 -0
  287. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_function_schema.py +0 -0
  288. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_function_tool.py +0 -0
  289. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_function_tool_decorator.py +0 -0
  290. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_global_hooks.py +0 -0
  291. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_guardrails.py +0 -0
  292. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_handoff_tool.py +0 -0
  293. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_max_turns.py +0 -0
  294. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_openai_chatcompletions_converter.py +0 -0
  295. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_openai_responses_converter.py +0 -0
  296. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_output_tool.py +0 -0
  297. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_pretty_print.py +0 -0
  298. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_responses.py +0 -0
  299. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_result_cast.py +0 -0
  300. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_run_config.py +0 -0
  301. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_strict_schema.py +0 -0
  302. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_tool_choice_reset.py +0 -0
  303. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_tool_converter.py +0 -0
  304. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_tool_use_behavior.py +0 -0
  305. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_trace_processor.py +0 -0
  306. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_tracing.py +0 -0
  307. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_tracing_errors.py +0 -0
  308. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_tracing_errors_streamed.py +0 -0
  309. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/test_visualization.py +0 -0
  310. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/testing_processor.py +0 -0
  311. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/tracing/test_processor_api_key.py +0 -0
  312. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/voice/__init__.py +0 -0
  313. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/voice/conftest.py +0 -0
  314. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/voice/fake_models.py +0 -0
  315. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/voice/helpers.py +0 -0
  316. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/voice/test_input.py +0 -0
  317. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/voice/test_openai_stt.py +0 -0
  318. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/voice/test_openai_tts.py +0 -0
  319. {openai_agents-0.0.9 → openai_agents-0.0.11}/tests/voice/test_pipeline.py +0 -0
@@ -42,6 +42,11 @@ old_version_tests:
42
42
  build-docs:
43
43
  uv run mkdocs build
44
44
 
45
+ .PHONY: build-full-docs
46
+ build-full-docs:
47
+ uv run docs/scripts/translate_docs.py
48
+ uv run mkdocs build
49
+
45
50
  .PHONY: serve-docs
46
51
  serve-docs:
47
52
  uv run mkdocs serve
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openai-agents
3
- Version: 0.0.9
3
+ Version: 0.0.11
4
4
  Summary: OpenAI Agents SDK
5
5
  Project-URL: Homepage, https://github.com/openai/openai-agents-python
6
6
  Project-URL: Repository, https://github.com/openai/openai-agents-python
@@ -32,11 +32,11 @@ Agents are generic on their `context` type. Context is a dependency-injection to
32
32
  ```python
33
33
  @dataclass
34
34
  class UserContext:
35
- uid: str
36
- is_pro_user: bool
35
+ uid: str
36
+ is_pro_user: bool
37
37
 
38
- async def fetch_purchases() -> list[Purchase]:
39
- return ...
38
+ async def fetch_purchases() -> list[Purchase]:
39
+ return ...
40
40
 
41
41
  agent = Agent[UserContext](
42
42
  ...,
@@ -63,7 +63,7 @@ Alternatively, you can customize the logs by adding handlers, filters, formatter
63
63
  ```python
64
64
  import logging
65
65
 
66
- logger = logging.getLogger("openai.agents") # or openai.agents.tracing for the Tracing logger
66
+ logger = logging.getLogger("openai.agents") # or openai.agents.tracing for the Tracing logger
67
67
 
68
68
  # To make all logs show up
69
69
  logger.setLevel(logging.DEBUG)
@@ -0,0 +1,147 @@
1
+ # エージェント
2
+
3
+ エージェントは、アプリケーションの中核となる基本コンポーネントです。エージェントとは、instructions とツールで構成された大規模言語モデル(LLM)のことです。
4
+
5
+ ## 基本設定
6
+
7
+ エージェントで最も一般的に設定するプロパティは以下の通りです。
8
+
9
+ - `instructions`:developer message や システムプロンプト(system prompt)とも呼ばれます。
10
+ - `model`:どの LLM を使用するか、また `model_settings` で temperature や top_p などのモデル調整パラメーターを設定できます。
11
+ - `tools`:エージェントがタスクを達成するために使用できるツールです。
12
+
13
+ ```python
14
+ from agents import Agent, ModelSettings, function_tool
15
+
16
+ @function_tool
17
+ def get_weather(city: str) -> str:
18
+ return f"The weather in {city} is sunny"
19
+
20
+ agent = Agent(
21
+ name="Haiku agent",
22
+ instructions="Always respond in haiku form",
23
+ model="o3-mini",
24
+ tools=[get_weather],
25
+ )
26
+ ```
27
+
28
+ ## コンテキスト
29
+
30
+ エージェントは `context` 型に対して汎用的です。コンテキストは依存性注入ツールであり、`Runner.run()` に渡すオブジェクトです。これはすべてのエージェント、ツール、ハンドオフなどに渡され、エージェント実行時の依存関係や状態をまとめて管理します。任意の Python オブジェクトを context として指定できます。
31
+
32
+ ```python
33
+ @dataclass
34
+ class UserContext:
35
+ uid: str
36
+ is_pro_user: bool
37
+
38
+ async def fetch_purchases() -> list[Purchase]:
39
+ return ...
40
+
41
+ agent = Agent[UserContext](
42
+ ...,
43
+ )
44
+ ```
45
+
46
+ ## 出力タイプ
47
+
48
+ デフォルトでは、エージェントはプレーンテキスト(つまり `str`)出力を生成します。特定の型の出力をエージェントに生成させたい場合は、`output_type` パラメーターを使用できます。一般的な選択肢として [Pydantic](https://docs.pydantic.dev/) オブジェクトがありますが、Pydantic の [TypeAdapter](https://docs.pydantic.dev/latest/api/type_adapter/) でラップできる型(dataclasses、リスト、TypedDict など)であればサポートしています。
49
+
50
+ ```python
51
+ from pydantic import BaseModel
52
+ from agents import Agent
53
+
54
+
55
+ class CalendarEvent(BaseModel):
56
+ name: str
57
+ date: str
58
+ participants: list[str]
59
+
60
+ agent = Agent(
61
+ name="Calendar extractor",
62
+ instructions="Extract calendar events from text",
63
+ output_type=CalendarEvent,
64
+ )
65
+ ```
66
+
67
+ !!! note
68
+
69
+ `output_type` を指定すると、モデルは通常のプレーンテキスト応答の代わりに [structured outputs](https://platform.openai.com/docs/guides/structured-outputs) を使用するよう指示されます。
70
+
71
+ ## ハンドオフ
72
+
73
+ ハンドオフは、エージェントが委任できるサブエージェントです。ハンドオフのリストを指定すると、エージェントは必要に応じてそれらに処理を委任できます。これは、単一タスクに特化したモジュール型のエージェントをオーケストレーションする強力なパターンです。詳細は [handoffs](handoffs.md) ドキュメントをご覧ください。
74
+
75
+ ```python
76
+ from agents import Agent
77
+
78
+ booking_agent = Agent(...)
79
+ refund_agent = Agent(...)
80
+
81
+ triage_agent = Agent(
82
+ name="Triage agent",
83
+ instructions=(
84
+ "Help the user with their questions."
85
+ "If they ask about booking, handoff to the booking agent."
86
+ "If they ask about refunds, handoff to the refund agent."
87
+ ),
88
+ handoffs=[booking_agent, refund_agent],
89
+ )
90
+ ```
91
+
92
+ ## 動的 instructions
93
+
94
+ 多くの場合、エージェント作成時に instructions を指定できますが、関数を使って動的に instructions を提供することも可能です。この関数はエージェントと context を受け取り、プロンプトを返す必要があります。通常の関数と `async` 関数の両方が利用可能です。
95
+
96
+ ```python
97
+ def dynamic_instructions(
98
+ context: RunContextWrapper[UserContext], agent: Agent[UserContext]
99
+ ) -> str:
100
+ return f"The user's name is {context.context.name}. Help them with their questions."
101
+
102
+
103
+ agent = Agent[UserContext](
104
+ name="Triage agent",
105
+ instructions=dynamic_instructions,
106
+ )
107
+ ```
108
+
109
+ ## ライフサイクルイベント(フック)
110
+
111
+ エージェントのライフサイクルを監視したい場合があります。たとえば、イベントを記録したり、特定のイベント発生時にデータを事前取得したりしたい場合です。`hooks` プロパティを使ってエージェントのライフサイクルにフックできます。[`AgentHooks`][agents.lifecycle.AgentHooks] クラスをサブクラス化し、関心のあるメソッドをオーバーライドしてください。
112
+
113
+ ## ガードレール
114
+
115
+ ガードレールを使うと、エージェントの実行と並行して user 入力のチェックやバリデーションを行えます。たとえば、user の入力が関連性のある内容かどうかをスクリーニングできます。詳細は [guardrails](guardrails.md) ドキュメントをご覧ください。
116
+
117
+ ## エージェントのクローン/コピー
118
+
119
+ エージェントの `clone()` メソッドを使うことで、エージェントを複製し、任意のプロパティを変更できます。
120
+
121
+ ```python
122
+ pirate_agent = Agent(
123
+ name="Pirate",
124
+ instructions="Write like a pirate",
125
+ model="o3-mini",
126
+ )
127
+
128
+ robot_agent = pirate_agent.clone(
129
+ name="Robot",
130
+ instructions="Write like a robot",
131
+ )
132
+ ```
133
+
134
+ ## ツール使用の強制
135
+
136
+ ツールのリストを指定しても、必ずしも LLM がツールを使用するとは限りません。[`ModelSettings.tool_choice`][agents.model_settings.ModelSettings.tool_choice] を設定することでツールの使用を強制できます。有効な値は以下の通りです。
137
+
138
+ 1. `auto`:LLM がツールを使うかどうかを自動で判断します。
139
+ 2. `required`:LLM にツールの使用を必須とします(どのツールを使うかは賢く選択されます)。
140
+ 3. `none`:LLM にツールを _使わない_ ことを要求します。
141
+ 4. 特定の文字列(例:`my_tool`)を指定すると、その特定のツールの使用を必須とします。
142
+
143
+ !!! note
144
+
145
+ 無限ループを防ぐため、フレームワークはツール呼び出し後に自動的に `tool_choice` を "auto" にリセットします。この挙動は [`agent.reset_tool_choice`][agents.agent.Agent.reset_tool_choice] で設定可能です。無限ループは、ツールの execution results が LLM に送信され、`tool_choice` のために再度ツール呼び出しが発生し、これが繰り返されることで発生します。
146
+
147
+ ツール呼び出し後にエージェントを完全に停止させたい場合(auto モードで継続させたくない場合)は、[`Agent.tool_use_behavior="stop_on_first_tool"`] を設定できます。これにより、ツールの出力がそのまま最終応答として使用され、以降の LLM 処理は行われません。
@@ -0,0 +1,94 @@
1
+ # SDK の設定
2
+
3
+ ## API キーとクライアント
4
+
5
+ デフォルトでは、SDK はインポート時に LLM リクエストやトレーシングのために `OPENAI_API_KEY` 環境変数を探します。アプリの起動前にこの環境変数を設定できない場合は、[set_default_openai_key()][agents.set_default_openai_key] 関数を使ってキーを設定できます。
6
+
7
+ ```python
8
+ from agents import set_default_openai_key
9
+
10
+ set_default_openai_key("sk-...")
11
+ ```
12
+
13
+ また、使用する OpenAI クライアントを設定することも可能です。デフォルトでは、SDK は環境変数または上記で設定したデフォルトキーを使って `AsyncOpenAI` インスタンスを作成します。これを変更したい場合は、[set_default_openai_client()][agents.set_default_openai_client] 関数を利用してください。
14
+
15
+ ```python
16
+ from openai import AsyncOpenAI
17
+ from agents import set_default_openai_client
18
+
19
+ custom_client = AsyncOpenAI(base_url="...", api_key="...")
20
+ set_default_openai_client(custom_client)
21
+ ```
22
+
23
+ さらに、使用する OpenAI API をカスタマイズすることもできます。デフォルトでは OpenAI Responses API を使用していますが、[set_default_openai_api()][agents.set_default_openai_api] 関数を使って Chat Completions API を利用するように上書きできます。
24
+
25
+ ```python
26
+ from agents import set_default_openai_api
27
+
28
+ set_default_openai_api("chat_completions")
29
+ ```
30
+
31
+ ## トレーシング
32
+
33
+ トレーシングはデフォルトで有効になっています。デフォルトでは、上記のセクションで説明した OpenAI API キー(環境変数または設定したデフォルトキー)を使用します。トレーシング専用の API キーを設定したい場合は、[`set_tracing_export_api_key`][agents.set_tracing_export_api_key] 関数を利用してください。
34
+
35
+ ```python
36
+ from agents import set_tracing_export_api_key
37
+
38
+ set_tracing_export_api_key("sk-...")
39
+ ```
40
+
41
+ また、[`set_tracing_disabled()`][agents.set_tracing_disabled] 関数を使ってトレーシングを完全に無効化することもできます。
42
+
43
+ ```python
44
+ from agents import set_tracing_disabled
45
+
46
+ set_tracing_disabled(True)
47
+ ```
48
+
49
+ ## デバッグログ
50
+
51
+ SDK には、ハンドラーが設定されていない 2 つの Python ロガーがあります。デフォルトでは、警告やエラーは `stdout` に送信されますが、それ以外のログは抑制されます。
52
+
53
+ 詳細なログ出力を有効にするには、[`enable_verbose_stdout_logging()`][agents.enable_verbose_stdout_logging] 関数を使用してください。
54
+
55
+ ```python
56
+ from agents import enable_verbose_stdout_logging
57
+
58
+ enable_verbose_stdout_logging()
59
+ ```
60
+
61
+ また、ハンドラーやフィルター、フォーマッターなどを追加してログをカスタマイズすることも可能です。詳細は [Python ロギングガイド](https://docs.python.org/3/howto/logging.html) をご覧ください。
62
+
63
+ ```python
64
+ import logging
65
+
66
+ logger = logging.getLogger("openai.agents") # or openai.agents.tracing for the Tracing logger
67
+
68
+ # To make all logs show up
69
+ logger.setLevel(logging.DEBUG)
70
+ # To make info and above show up
71
+ logger.setLevel(logging.INFO)
72
+ # To make warning and above show up
73
+ logger.setLevel(logging.WARNING)
74
+ # etc
75
+
76
+ # You can customize this as needed, but this will output to `stderr` by default
77
+ logger.addHandler(logging.StreamHandler())
78
+ ```
79
+
80
+ ### ログ内の機微なデータ
81
+
82
+ 一部のログには機微なデータ(たとえば ユーザー データ)が含まれる場合があります。これらのデータのログ出力を無効にしたい場合は、以下の環境変数を設定してください。
83
+
84
+ LLM の入力および出力のログ出力を無効にするには:
85
+
86
+ ```bash
87
+ export OPENAI_AGENTS_DONT_LOG_MODEL_DATA=1
88
+ ```
89
+
90
+ ツールの入力および出力のログ出力を無効にするには:
91
+
92
+ ```bash
93
+ export OPENAI_AGENTS_DONT_LOG_TOOL_DATA=1
94
+ ```
@@ -0,0 +1,77 @@
1
+ # コンテキスト管理
2
+
3
+ コンテキストは多義的な用語です。主に関心を持つべきコンテキストには、次の 2 つの大きなクラスがあります。
4
+
5
+ 1. コード内でローカルに利用可能なコンテキスト:これは、ツール関数の実行時や `on_handoff` のようなコールバック、ライフサイクルフックなどで必要となるデータや依存関係です。
6
+ 2. LLM に利用可能なコンテキスト:これは、LLM がレスポンスを生成する際に参照できるデータです。
7
+
8
+ ## ローカルコンテキスト
9
+
10
+ これは [`RunContextWrapper`][agents.run_context.RunContextWrapper] クラスおよびその中の [`context`][agents.run_context.RunContextWrapper.context] プロパティによって表現されます。仕組みは以下の通りです。
11
+
12
+ 1. 任意の Python オブジェクトを作成します。一般的なパターンとしては、dataclass や Pydantic オブジェクトを使います。
13
+ 2. そのオブジェクトを各種 run メソッド(例:`Runner.run(..., **context=whatever**))`)に渡します。
14
+ 3. すべてのツール呼び出しやライフサイクルフックなどには、ラッパーオブジェクト `RunContextWrapper[T]` が渡されます。ここで `T` はコンテキストオブジェクトの型を表し、`wrapper.context` からアクセスできます。
15
+
16
+ **最も重要**な注意点:特定のエージェント実行において、すべてのエージェント、ツール関数、ライフサイクルなどは、同じ _型_ のコンテキストを使用する必要があります。
17
+
18
+ コンテキストは以下のような用途で利用できます。
19
+
20
+ - 実行時のコンテキストデータ(例:ユーザー名/uid やユーザーに関するその他の情報など)
21
+ - 依存関係(例:ロガーオブジェクト、データフェッチャーなど)
22
+ - ヘルパー関数
23
+
24
+ !!! danger "注意"
25
+
26
+ コンテキストオブジェクトは **LLM には送信されません**。これは純粋にローカルなオブジェクトであり、読み書きやメソッド呼び出しが可能です。
27
+
28
+ ```python
29
+ import asyncio
30
+ from dataclasses import dataclass
31
+
32
+ from agents import Agent, RunContextWrapper, Runner, function_tool
33
+
34
+ @dataclass
35
+ class UserInfo: # (1)!
36
+ name: str
37
+ uid: int
38
+
39
+ @function_tool
40
+ async def fetch_user_age(wrapper: RunContextWrapper[UserInfo]) -> str: # (2)!
41
+ return f"User {wrapper.context.name} is 47 years old"
42
+
43
+ async def main():
44
+ user_info = UserInfo(name="John", uid=123)
45
+
46
+ agent = Agent[UserInfo]( # (3)!
47
+ name="Assistant",
48
+ tools=[fetch_user_age],
49
+ )
50
+
51
+ result = await Runner.run( # (4)!
52
+ starting_agent=agent,
53
+ input="What is the age of the user?",
54
+ context=user_info,
55
+ )
56
+
57
+ print(result.final_output) # (5)!
58
+ # The user John is 47 years old.
59
+
60
+ if __name__ == "__main__":
61
+ asyncio.run(main())
62
+ ```
63
+
64
+ 1. これはコンテキストオブジェクトです。ここでは dataclass を使用していますが、任意の型を利用できます。
65
+ 2. これはツールです。`RunContextWrapper[UserInfo]` を受け取っていることが分かります。ツールの実装はコンテキストから値を読み取ります。
66
+ 3. エージェントにはジェネリック型 `UserInfo` を指定しています。これにより、型チェッカーがエラーを検出できます(例えば、異なるコンテキスト型を受け取るツールを渡そうとした場合など)。
67
+ 4. コンテキストは `run` 関数に渡されます。
68
+ 5. エージェントは正しくツールを呼び出し、年齢を取得します。
69
+
70
+ ## エージェント/LLM コンテキスト
71
+
72
+ LLM が呼び出される際、**唯一** 参照できるデータは会話履歴からのものです。つまり、LLM に新しいデータを利用させたい場合は、そのデータを履歴に含める必要があります。これを実現する方法はいくつかあります。
73
+
74
+ 1. エージェントの `instructions` に追加する。この方法は「システムプロンプト」や「開発者メッセージ」とも呼ばれます。システムプロンプトは静的な文字列でも、コンテキストを受け取って文字列を出力する動的な関数でも構いません。たとえば、ユーザー名や現在の日付など、常に有用な情報に適しています。
75
+ 2. `Runner.run` 関数を呼び出す際に `input` に追加する。この方法は `instructions` と似ていますが、[chain of command](https://cdn.openai.com/spec/model-spec-2024-05-08.html#follow-the-chain-of-command) の下位メッセージとして追加できます。
76
+ 3. 関数ツールを通じて公開する。この方法は _オンデマンド_ のコンテキストに適しています。LLM が必要なタイミングでツールを呼び出し、データを取得できます。
77
+ 4. リトリーバルや Web 検索を利用する。これらはファイルやデータベース(リトリーバル)、または Web(Web 検索)から関連データを取得できる特別なツールです。関連するコンテキストデータに基づいたレスポンスを「グラウンディング」するのに役立ちます。
@@ -0,0 +1,40 @@
1
+ # コード例
2
+
3
+ SDK のさまざまなサンプル実装については、[リポジトリ](https://github.com/openai/openai-agents-python/tree/main/examples) のコード例セクションをご覧ください。これらのコード例は、異なるパターンや機能を示すいくつかのカテゴリーに整理されています。
4
+
5
+ ## カテゴリー
6
+
7
+ - **[agent_patterns](https://github.com/openai/openai-agents-python/tree/main/examples/agent_patterns):**
8
+ このカテゴリーのコード例では、よく使われるエージェント設計パターンを紹介しています。
9
+
10
+ - 決定論的なワークフロー
11
+ - ツールとしてのエージェント
12
+ - エージェントの並列実行
13
+
14
+ - **[basic](https://github.com/openai/openai-agents-python/tree/main/examples/basic):**
15
+ これらのコード例では、SDK の基本的な機能を紹介しています。
16
+
17
+ - 動的なシステムプロンプト
18
+ - ストリーミング出力
19
+ - ライフサイクルイベント
20
+
21
+ - **[tool examples](https://github.com/openai/openai-agents-python/tree/main/examples/tools):**
22
+ OpenAI がホストするツール(Web 検索やファイル検索など)の実装方法や、それらをエージェントに統合する方法を学べます。
23
+
24
+ - **[model providers](https://github.com/openai/openai-agents-python/tree/main/examples/model_providers):**
25
+ OpenAI 以外のモデルを SDK で利用する方法を紹介しています。
26
+
27
+ - **[handoffs](https://github.com/openai/openai-agents-python/tree/main/examples/handoffs):**
28
+ エージェントのハンドオフの実践的なコード例をご覧いただけます。
29
+
30
+ - **[mcp](https://github.com/openai/openai-agents-python/tree/main/examples/mcp):**
31
+ Model context protocol (MCP) を使ったエージェントの構築方法を学べます。
32
+
33
+ - **[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):**
34
+ 実際のユースケースを示す、より発展的な 2 つのコード例です。
35
+
36
+ - **customer_service**: 航空会社向けカスタマーサービスシステムの例。
37
+ - **research_bot**: シンプルなディープリサーチクローン。
38
+
39
+ - **[voice](https://github.com/openai/openai-agents-python/tree/main/examples/voice):**
40
+ TTS および STT モデルを利用した音声エージェントのコード例をご覧いただけます。
@@ -0,0 +1,154 @@
1
+ # ガードレール
2
+
3
+ ガードレールは、エージェントと _並行して_ 実行され、ユーザー入力のチェックやバリデーションを行うことができます。例えば、非常に賢い(そのため遅くて高価な)モデルを使ってカスタマーリクエストに対応するエージェントがあるとします。悪意のあるユーザーがモデルに数学の宿題を手伝わせるようなリクエストを送ることは避けたいでしょう。そこで、ガードレールを高速かつ安価なモデルで実行できます。ガードレールが悪意のある利用を検知した場合、即座にエラーを発生させ、高価なモデルの実行を止めて時間やコストを節約できます。
4
+
5
+ ガードレールには 2 種類あります:
6
+
7
+ 1. 入力ガードレール:最初のユーザー入力に対して実行されます
8
+ 2. 出力ガードレール:最終的なエージェント出力に対して実行されます
9
+
10
+ ## 入力ガードレール
11
+
12
+ 入力ガードレールは 3 ステップで実行されます:
13
+
14
+ 1. まず、ガードレールはエージェントに渡されたものと同じ入力を受け取ります。
15
+ 2. 次に、ガードレール関数が実行され、[`GuardrailFunctionOutput`][agents.guardrail.GuardrailFunctionOutput] を生成し、それが [`InputGuardrailResult`][agents.guardrail.InputGuardrailResult] でラップされます。
16
+ 3. 最後に、[`.tripwire_triggered`][agents.guardrail.GuardrailFunctionOutput.tripwire_triggered] が true かどうかを確認します。true の場合、[`InputGuardrailTripwireTriggered`][agents.exceptions.InputGuardrailTripwireTriggered] 例外が発生し、ユーザーへの適切な対応や例外処理が可能です。
17
+
18
+ !!! Note
19
+
20
+ 入力ガードレールはユーザー入力に対して実行されることを想定しているため、エージェントのガードレールは *最初* のエージェントでのみ実行されます。「なぜ `guardrails` プロパティがエージェントにあり、`Runner.run` に渡さないのか?」と疑問に思うかもしれません。これは、ガードレールが実際のエージェントに関連することが多いためです。異なるエージェントごとに異なるガードレールを実行するため、コードを同じ場所にまとめておくと可読性が向上します。
21
+
22
+ ## 出力ガードレール
23
+
24
+ 出力ガードレールも 3 ステップで実行されます:
25
+
26
+ 1. まず、ガードレールはエージェントに渡されたものと同じ入力を受け取ります。
27
+ 2. 次に、ガードレール関数が実行され、[`GuardrailFunctionOutput`][agents.guardrail.GuardrailFunctionOutput] を生成し、それが [`OutputGuardrailResult`][agents.guardrail.OutputGuardrailResult] でラップされます。
28
+ 3. 最後に、[`.tripwire_triggered`][agents.guardrail.GuardrailFunctionOutput.tripwire_triggered] が true かどうかを確認します。true の場合、[`OutputGuardrailTripwireTriggered`][agents.exceptions.OutputGuardrailTripwireTriggered] 例外が発生し、ユーザーへの適切な対応や例外処理が可能です。
29
+
30
+ !!! Note
31
+
32
+ 出力ガードレールは最終的なエージェント出力に対して実行されることを想定しているため、エージェントのガードレールは *最後* のエージェントでのみ実行されます。入力ガードレールと同様に、ガードレールが実際のエージェントに関連することが多いため、コードを同じ場所にまとめておくと可読性が向上します。
33
+
34
+ ## トリップワイヤー
35
+
36
+ 入力または出力がガードレールに失敗した場合、ガードレールはトリップワイヤーでこれを通知できます。トリップワイヤーが発動したガードレールを検知した時点で、即座に `{Input,Output}GuardrailTripwireTriggered` 例外を発生させ、エージェントの実行を停止します。
37
+
38
+ ## ガードレールの実装
39
+
40
+ 入力を受け取り、[`GuardrailFunctionOutput`][agents.guardrail.GuardrailFunctionOutput] を返す関数を用意する必要があります。この例では、内部でエージェントを実行することでこれを実現します。
41
+
42
+ ```python
43
+ from pydantic import BaseModel
44
+ from agents import (
45
+ Agent,
46
+ GuardrailFunctionOutput,
47
+ InputGuardrailTripwireTriggered,
48
+ RunContextWrapper,
49
+ Runner,
50
+ TResponseInputItem,
51
+ input_guardrail,
52
+ )
53
+
54
+ class MathHomeworkOutput(BaseModel):
55
+ is_math_homework: bool
56
+ reasoning: str
57
+
58
+ guardrail_agent = Agent( # (1)!
59
+ name="Guardrail check",
60
+ instructions="Check if the user is asking you to do their math homework.",
61
+ output_type=MathHomeworkOutput,
62
+ )
63
+
64
+
65
+ @input_guardrail
66
+ async def math_guardrail( # (2)!
67
+ ctx: RunContextWrapper[None], agent: Agent, input: str | list[TResponseInputItem]
68
+ ) -> GuardrailFunctionOutput:
69
+ result = await Runner.run(guardrail_agent, input, context=ctx.context)
70
+
71
+ return GuardrailFunctionOutput(
72
+ output_info=result.final_output, # (3)!
73
+ tripwire_triggered=result.final_output.is_math_homework,
74
+ )
75
+
76
+
77
+ agent = Agent( # (4)!
78
+ name="Customer support agent",
79
+ instructions="You are a customer support agent. You help customers with their questions.",
80
+ input_guardrails=[math_guardrail],
81
+ )
82
+
83
+ async def main():
84
+ # This should trip the guardrail
85
+ try:
86
+ await Runner.run(agent, "Hello, can you help me solve for x: 2x + 3 = 11?")
87
+ print("Guardrail didn't trip - this is unexpected")
88
+
89
+ except InputGuardrailTripwireTriggered:
90
+ print("Math homework guardrail tripped")
91
+ ```
92
+
93
+ 1. このエージェントをガードレール関数内で使用します。
94
+ 2. これはエージェントの入力やコンテキストを受け取り、結果を返すガードレール関数です。
95
+ 3. ガードレールの結果に追加情報を含めることができます。
96
+ 4. これはワークフローを定義する実際のエージェントです。
97
+
98
+ 出力ガードレールも同様です。
99
+
100
+ ```python
101
+ from pydantic import BaseModel
102
+ from agents import (
103
+ Agent,
104
+ GuardrailFunctionOutput,
105
+ OutputGuardrailTripwireTriggered,
106
+ RunContextWrapper,
107
+ Runner,
108
+ output_guardrail,
109
+ )
110
+ class MessageOutput(BaseModel): # (1)!
111
+ response: str
112
+
113
+ class MathOutput(BaseModel): # (2)!
114
+ reasoning: str
115
+ is_math: bool
116
+
117
+ guardrail_agent = Agent(
118
+ name="Guardrail check",
119
+ instructions="Check if the output includes any math.",
120
+ output_type=MathOutput,
121
+ )
122
+
123
+ @output_guardrail
124
+ async def math_guardrail( # (3)!
125
+ ctx: RunContextWrapper, agent: Agent, output: MessageOutput
126
+ ) -> GuardrailFunctionOutput:
127
+ result = await Runner.run(guardrail_agent, output.response, context=ctx.context)
128
+
129
+ return GuardrailFunctionOutput(
130
+ output_info=result.final_output,
131
+ tripwire_triggered=result.final_output.is_math,
132
+ )
133
+
134
+ agent = Agent( # (4)!
135
+ name="Customer support agent",
136
+ instructions="You are a customer support agent. You help customers with their questions.",
137
+ output_guardrails=[math_guardrail],
138
+ output_type=MessageOutput,
139
+ )
140
+
141
+ async def main():
142
+ # This should trip the guardrail
143
+ try:
144
+ await Runner.run(agent, "Hello, can you help me solve for x: 2x + 3 = 11?")
145
+ print("Guardrail didn't trip - this is unexpected")
146
+
147
+ except OutputGuardrailTripwireTriggered:
148
+ print("Math output guardrail tripped")
149
+ ```
150
+
151
+ 1. これは実際のエージェントの出力型です。
152
+ 2. これはガードレールの出力型です。
153
+ 3. これはエージェントの出力を受け取り、結果を返すガードレール関数です。
154
+ 4. これはワークフローを定義する実際のエージェントです。