openai-agents 0.2.6__tar.gz → 0.2.8__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 (500) hide show
  1. {openai_agents-0.2.6 → openai_agents-0.2.8}/PKG-INFO +1 -1
  2. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/agents.md +1 -1
  3. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/handoffs.md +1 -0
  4. openai_agents-0.2.8/docs/ja/agents.md +248 -0
  5. openai_agents-0.2.8/docs/ja/config.md +98 -0
  6. openai_agents-0.2.8/docs/ja/context.md +82 -0
  7. openai_agents-0.2.8/docs/ja/examples.md +48 -0
  8. openai_agents-0.2.8/docs/ja/guardrails.md +158 -0
  9. openai_agents-0.2.8/docs/ja/handoffs.md +118 -0
  10. openai_agents-0.2.8/docs/ja/index.md +58 -0
  11. openai_agents-0.2.8/docs/ja/mcp.md +191 -0
  12. openai_agents-0.2.8/docs/ja/models/index.md +151 -0
  13. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ja/models/litellm.md +10 -10
  14. openai_agents-0.2.8/docs/ja/multi_agent.md +41 -0
  15. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ja/quickstart.md +21 -21
  16. openai_agents-0.2.8/docs/ja/realtime/guide.md +176 -0
  17. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ja/realtime/quickstart.md +30 -31
  18. openai_agents-0.2.8/docs/ja/release.md +32 -0
  19. openai_agents-0.2.8/docs/ja/repl.md +23 -0
  20. openai_agents-0.2.8/docs/ja/results.md +56 -0
  21. openai_agents-0.2.8/docs/ja/running_agents.md +141 -0
  22. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ja/sessions.md +30 -30
  23. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ja/streaming.md +8 -8
  24. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ja/tools.md +62 -41
  25. openai_agents-0.2.8/docs/ja/tracing.md +150 -0
  26. openai_agents-0.2.8/docs/ja/visualization.md +105 -0
  27. openai_agents-0.2.8/docs/ja/voice/pipeline.md +79 -0
  28. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ja/voice/quickstart.md +8 -8
  29. openai_agents-0.2.8/docs/ja/voice/tracing.md +18 -0
  30. openai_agents-0.2.8/docs/ref/memory/session.md +3 -0
  31. openai_agents-0.2.8/docs/ref/realtime/handoffs.md +3 -0
  32. openai_agents-0.2.8/docs/ref/realtime/items.md +3 -0
  33. openai_agents-0.2.8/docs/ref/realtime/model_events.md +3 -0
  34. openai_agents-0.2.8/docs/ref/realtime/model_inputs.md +3 -0
  35. openai_agents-0.2.8/docs/ref/realtime/openai_realtime.md +3 -0
  36. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/scripts/translate_docs.py +13 -3
  37. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/tools.md +21 -0
  38. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/basic/agent_lifecycle_example.py +10 -5
  39. openai_agents-0.2.8/examples/basic/hello_world_gpt_oss.py +38 -0
  40. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/basic/lifecycle_example.py +11 -6
  41. openai_agents-0.2.8/examples/basic/simple_gpt_5.py +30 -0
  42. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/basic/stream_items.py +1 -0
  43. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/basic/tools.py +1 -0
  44. openai_agents-0.2.8/examples/realtime/app/agent.py +93 -0
  45. {openai_agents-0.2.6 → openai_agents-0.2.8}/pyproject.toml +1 -1
  46. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/agent.py +130 -2
  47. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/items.py +1 -2
  48. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/model_settings.py +4 -0
  49. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/models/openai_chatcompletions.py +1 -0
  50. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/models/openai_responses.py +5 -0
  51. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/realtime/openai_realtime.py +4 -1
  52. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/realtime/session.py +68 -11
  53. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/run.py +105 -11
  54. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/model_settings/test_serialization.py +1 -0
  55. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/realtime/test_session.py +120 -4
  56. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_agent_config.py +57 -0
  57. openai_agents-0.2.8/tests/test_agent_instructions_signature.py +113 -0
  58. openai_agents-0.2.8/tests/test_call_model_input_filter.py +79 -0
  59. openai_agents-0.2.8/tests/test_call_model_input_filter_unit.py +107 -0
  60. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_items_helpers.py +35 -0
  61. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_session.py +88 -0
  62. {openai_agents-0.2.6 → openai_agents-0.2.8}/uv.lock +1 -1
  63. openai_agents-0.2.6/docs/ja/agents.md +0 -249
  64. openai_agents-0.2.6/docs/ja/config.md +0 -98
  65. openai_agents-0.2.6/docs/ja/context.md +0 -82
  66. openai_agents-0.2.6/docs/ja/examples.md +0 -47
  67. openai_agents-0.2.6/docs/ja/guardrails.md +0 -158
  68. openai_agents-0.2.6/docs/ja/handoffs.md +0 -117
  69. openai_agents-0.2.6/docs/ja/index.md +0 -58
  70. openai_agents-0.2.6/docs/ja/mcp.md +0 -191
  71. openai_agents-0.2.6/docs/ja/models/index.md +0 -153
  72. openai_agents-0.2.6/docs/ja/multi_agent.md +0 -50
  73. openai_agents-0.2.6/docs/ja/realtime/guide.md +0 -176
  74. openai_agents-0.2.6/docs/ja/release.md +0 -32
  75. openai_agents-0.2.6/docs/ja/repl.md +0 -23
  76. openai_agents-0.2.6/docs/ja/results.md +0 -56
  77. openai_agents-0.2.6/docs/ja/running_agents.md +0 -141
  78. openai_agents-0.2.6/docs/ja/tracing.md +0 -152
  79. openai_agents-0.2.6/docs/ja/visualization.md +0 -105
  80. openai_agents-0.2.6/docs/ja/voice/pipeline.md +0 -86
  81. openai_agents-0.2.6/docs/ja/voice/tracing.md +0 -18
  82. openai_agents-0.2.6/examples/realtime/app/agent.py +0 -36
  83. {openai_agents-0.2.6 → openai_agents-0.2.8}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  84. {openai_agents-0.2.6 → openai_agents-0.2.8}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  85. {openai_agents-0.2.6 → openai_agents-0.2.8}/.github/ISSUE_TEMPLATE/model_provider.md +0 -0
  86. {openai_agents-0.2.6 → openai_agents-0.2.8}/.github/ISSUE_TEMPLATE/question.md +0 -0
  87. {openai_agents-0.2.6 → openai_agents-0.2.8}/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -0
  88. {openai_agents-0.2.6 → openai_agents-0.2.8}/.github/codex/home/config.toml +0 -0
  89. {openai_agents-0.2.6 → openai_agents-0.2.8}/.github/codex/labels/codex-attempt.md +0 -0
  90. {openai_agents-0.2.6 → openai_agents-0.2.8}/.github/codex/labels/codex-review.md +0 -0
  91. {openai_agents-0.2.6 → openai_agents-0.2.8}/.github/codex/labels/codex-triage.md +0 -0
  92. {openai_agents-0.2.6 → openai_agents-0.2.8}/.github/workflows/codex.yml +0 -0
  93. {openai_agents-0.2.6 → openai_agents-0.2.8}/.github/workflows/docs.yml +0 -0
  94. {openai_agents-0.2.6 → openai_agents-0.2.8}/.github/workflows/issues.yml +0 -0
  95. {openai_agents-0.2.6 → openai_agents-0.2.8}/.github/workflows/publish.yml +0 -0
  96. {openai_agents-0.2.6 → openai_agents-0.2.8}/.github/workflows/tests.yml +0 -0
  97. {openai_agents-0.2.6 → openai_agents-0.2.8}/.github/workflows/update-docs.yml +0 -0
  98. {openai_agents-0.2.6 → openai_agents-0.2.8}/.gitignore +0 -0
  99. {openai_agents-0.2.6 → openai_agents-0.2.8}/.prettierrc +0 -0
  100. {openai_agents-0.2.6 → openai_agents-0.2.8}/.vscode/launch.json +0 -0
  101. {openai_agents-0.2.6 → openai_agents-0.2.8}/.vscode/settings.json +0 -0
  102. {openai_agents-0.2.6 → openai_agents-0.2.8}/AGENTS.md +0 -0
  103. {openai_agents-0.2.6 → openai_agents-0.2.8}/CLAUDE.md +0 -0
  104. {openai_agents-0.2.6 → openai_agents-0.2.8}/LICENSE +0 -0
  105. {openai_agents-0.2.6 → openai_agents-0.2.8}/Makefile +0 -0
  106. {openai_agents-0.2.6 → openai_agents-0.2.8}/README.md +0 -0
  107. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/assets/images/favicon-platform.svg +0 -0
  108. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/assets/images/graph.png +0 -0
  109. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/assets/images/mcp-tracing.jpg +0 -0
  110. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/assets/images/orchestration.png +0 -0
  111. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/assets/logo.svg +0 -0
  112. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/config.md +0 -0
  113. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/context.md +0 -0
  114. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/examples.md +0 -0
  115. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/guardrails.md +0 -0
  116. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/index.md +0 -0
  117. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/mcp.md +0 -0
  118. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/models/index.md +0 -0
  119. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/models/litellm.md +0 -0
  120. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/multi_agent.md +0 -0
  121. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/quickstart.md +0 -0
  122. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/realtime/guide.md +0 -0
  123. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/realtime/quickstart.md +0 -0
  124. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/agent.md +0 -0
  125. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/agent_output.md +0 -0
  126. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/computer.md +0 -0
  127. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/exceptions.md +0 -0
  128. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/extensions/handoff_filters.md +0 -0
  129. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/extensions/handoff_prompt.md +0 -0
  130. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/extensions/litellm.md +0 -0
  131. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/extensions/models/litellm_model.md +0 -0
  132. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/extensions/models/litellm_provider.md +0 -0
  133. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/extensions/visualization.md +0 -0
  134. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/function_schema.md +0 -0
  135. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/guardrail.md +0 -0
  136. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/handoffs.md +0 -0
  137. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/index.md +0 -0
  138. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/items.md +0 -0
  139. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/lifecycle.md +0 -0
  140. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/logger.md +0 -0
  141. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/mcp/server.md +0 -0
  142. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/mcp/util.md +0 -0
  143. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/memory.md +0 -0
  144. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/model_settings.md +0 -0
  145. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/models/chatcmpl_converter.md +0 -0
  146. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/models/chatcmpl_helpers.md +0 -0
  147. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/models/chatcmpl_stream_handler.md +0 -0
  148. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/models/fake_id.md +0 -0
  149. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/models/interface.md +0 -0
  150. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/models/multi_provider.md +0 -0
  151. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/models/openai_chatcompletions.md +0 -0
  152. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/models/openai_provider.md +0 -0
  153. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/models/openai_responses.md +0 -0
  154. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/prompts.md +0 -0
  155. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/realtime/agent.md +0 -0
  156. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/realtime/config.md +0 -0
  157. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/realtime/events.md +0 -0
  158. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/realtime/model.md +0 -0
  159. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/realtime/runner.md +0 -0
  160. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/realtime/session.md +0 -0
  161. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/repl.md +0 -0
  162. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/result.md +0 -0
  163. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/run.md +0 -0
  164. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/run_context.md +0 -0
  165. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/stream_events.md +0 -0
  166. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/strict_schema.md +0 -0
  167. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/tool.md +0 -0
  168. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/tool_context.md +0 -0
  169. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/tracing/create.md +0 -0
  170. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/tracing/index.md +0 -0
  171. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/tracing/logger.md +0 -0
  172. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/tracing/processor_interface.md +0 -0
  173. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/tracing/processors.md +0 -0
  174. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/tracing/provider.md +0 -0
  175. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/tracing/scope.md +0 -0
  176. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/tracing/setup.md +0 -0
  177. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/tracing/span_data.md +0 -0
  178. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/tracing/spans.md +0 -0
  179. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/tracing/traces.md +0 -0
  180. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/tracing/util.md +0 -0
  181. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/usage.md +0 -0
  182. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/version.md +0 -0
  183. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/voice/events.md +0 -0
  184. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/voice/exceptions.md +0 -0
  185. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/voice/imports.md +0 -0
  186. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/voice/input.md +0 -0
  187. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/voice/model.md +0 -0
  188. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/voice/models/openai_model_provider.md +0 -0
  189. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/voice/models/openai_provider.md +0 -0
  190. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/voice/models/openai_stt.md +0 -0
  191. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/voice/models/openai_tts.md +0 -0
  192. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/voice/pipeline.md +0 -0
  193. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/voice/pipeline_config.md +0 -0
  194. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/voice/result.md +0 -0
  195. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/voice/utils.md +0 -0
  196. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/ref/voice/workflow.md +0 -0
  197. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/release.md +0 -0
  198. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/repl.md +0 -0
  199. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/results.md +0 -0
  200. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/running_agents.md +0 -0
  201. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/scripts/generate_ref_files.py +0 -0
  202. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/sessions.md +0 -0
  203. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/streaming.md +0 -0
  204. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/stylesheets/extra.css +0 -0
  205. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/tracing.md +0 -0
  206. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/visualization.md +0 -0
  207. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/voice/pipeline.md +0 -0
  208. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/voice/quickstart.md +0 -0
  209. {openai_agents-0.2.6 → openai_agents-0.2.8}/docs/voice/tracing.md +0 -0
  210. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/__init__.py +0 -0
  211. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/agent_patterns/README.md +0 -0
  212. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/agent_patterns/agents_as_tools.py +0 -0
  213. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/agent_patterns/deterministic.py +0 -0
  214. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/agent_patterns/forcing_tool_use.py +0 -0
  215. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/agent_patterns/input_guardrails.py +0 -0
  216. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/agent_patterns/llm_as_a_judge.py +0 -0
  217. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/agent_patterns/output_guardrails.py +0 -0
  218. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/agent_patterns/parallelization.py +0 -0
  219. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/agent_patterns/routing.py +0 -0
  220. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/agent_patterns/streaming_guardrails.py +0 -0
  221. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/basic/dynamic_system_prompt.py +0 -0
  222. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/basic/hello_world.py +0 -0
  223. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/basic/hello_world_jupyter.ipynb +0 -0
  224. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/basic/local_image.py +0 -0
  225. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/basic/media/image_bison.jpg +0 -0
  226. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/basic/non_strict_output_type.py +0 -0
  227. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/basic/previous_response_id.py +0 -0
  228. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/basic/prompt_template.py +0 -0
  229. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/basic/remote_image.py +0 -0
  230. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/basic/remote_pdf.py +0 -0
  231. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/basic/session_example.py +0 -0
  232. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/basic/stream_function_call_args.py +0 -0
  233. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/basic/stream_text.py +0 -0
  234. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/customer_service/main.py +0 -0
  235. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/financial_research_agent/README.md +0 -0
  236. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/financial_research_agent/__init__.py +0 -0
  237. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/financial_research_agent/agents/__init__.py +0 -0
  238. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/financial_research_agent/agents/financials_agent.py +0 -0
  239. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/financial_research_agent/agents/planner_agent.py +0 -0
  240. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/financial_research_agent/agents/risk_agent.py +0 -0
  241. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/financial_research_agent/agents/search_agent.py +0 -0
  242. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/financial_research_agent/agents/verifier_agent.py +0 -0
  243. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/financial_research_agent/agents/writer_agent.py +0 -0
  244. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/financial_research_agent/main.py +0 -0
  245. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/financial_research_agent/manager.py +0 -0
  246. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/financial_research_agent/printer.py +0 -0
  247. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/handoffs/message_filter.py +0 -0
  248. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/handoffs/message_filter_streaming.py +0 -0
  249. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/hosted_mcp/__init__.py +0 -0
  250. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/hosted_mcp/approvals.py +0 -0
  251. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/hosted_mcp/simple.py +0 -0
  252. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/mcp/filesystem_example/README.md +0 -0
  253. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/mcp/filesystem_example/main.py +0 -0
  254. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/mcp/filesystem_example/sample_files/favorite_books.txt +0 -0
  255. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/mcp/filesystem_example/sample_files/favorite_cities.txt +0 -0
  256. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/mcp/filesystem_example/sample_files/favorite_songs.txt +0 -0
  257. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/mcp/git_example/README.md +0 -0
  258. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/mcp/git_example/main.py +0 -0
  259. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/mcp/prompt_server/README.md +0 -0
  260. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/mcp/prompt_server/main.py +0 -0
  261. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/mcp/prompt_server/server.py +0 -0
  262. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/mcp/sse_example/README.md +0 -0
  263. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/mcp/sse_example/main.py +0 -0
  264. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/mcp/sse_example/server.py +0 -0
  265. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/mcp/streamablehttp_example/README.md +0 -0
  266. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/mcp/streamablehttp_example/main.py +0 -0
  267. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/mcp/streamablehttp_example/server.py +0 -0
  268. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/model_providers/README.md +0 -0
  269. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/model_providers/custom_example_agent.py +0 -0
  270. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/model_providers/custom_example_global.py +0 -0
  271. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/model_providers/custom_example_provider.py +0 -0
  272. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/model_providers/litellm_auto.py +0 -0
  273. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/model_providers/litellm_provider.py +0 -0
  274. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/realtime/app/README.md +0 -0
  275. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/realtime/app/server.py +0 -0
  276. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/realtime/app/static/app.js +0 -0
  277. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/realtime/app/static/index.html +0 -0
  278. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/realtime/cli/demo.py +0 -0
  279. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/realtime/cli/ui.py +0 -0
  280. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/realtime/twilio/README.md +0 -0
  281. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/realtime/twilio/__init__.py +0 -0
  282. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/realtime/twilio/requirements.txt +0 -0
  283. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/realtime/twilio/server.py +0 -0
  284. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/realtime/twilio/twilio_handler.py +0 -0
  285. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/reasoning_content/__init__.py +0 -0
  286. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/reasoning_content/main.py +0 -0
  287. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/reasoning_content/runner_example.py +0 -0
  288. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/research_bot/README.md +0 -0
  289. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/research_bot/__init__.py +0 -0
  290. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/research_bot/agents/__init__.py +0 -0
  291. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/research_bot/agents/planner_agent.py +0 -0
  292. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/research_bot/agents/search_agent.py +0 -0
  293. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/research_bot/agents/writer_agent.py +0 -0
  294. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/research_bot/main.py +0 -0
  295. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/research_bot/manager.py +0 -0
  296. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/research_bot/printer.py +0 -0
  297. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/research_bot/sample_outputs/product_recs.md +0 -0
  298. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/research_bot/sample_outputs/product_recs.txt +0 -0
  299. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/research_bot/sample_outputs/vacation.md +0 -0
  300. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/research_bot/sample_outputs/vacation.txt +0 -0
  301. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/tools/code_interpreter.py +0 -0
  302. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/tools/computer_use.py +0 -0
  303. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/tools/file_search.py +0 -0
  304. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/tools/image_generator.py +0 -0
  305. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/tools/web_search.py +0 -0
  306. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/voice/__init__.py +0 -0
  307. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/voice/static/README.md +0 -0
  308. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/voice/static/__init__.py +0 -0
  309. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/voice/static/main.py +0 -0
  310. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/voice/static/util.py +0 -0
  311. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/voice/streamed/README.md +0 -0
  312. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/voice/streamed/__init__.py +0 -0
  313. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/voice/streamed/main.py +0 -0
  314. {openai_agents-0.2.6 → openai_agents-0.2.8}/examples/voice/streamed/my_workflow.py +0 -0
  315. {openai_agents-0.2.6 → openai_agents-0.2.8}/mkdocs.yml +0 -0
  316. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/__init__.py +0 -0
  317. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/_config.py +0 -0
  318. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/_debug.py +0 -0
  319. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/_run_impl.py +0 -0
  320. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/agent_output.py +0 -0
  321. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/computer.py +0 -0
  322. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/exceptions.py +0 -0
  323. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/extensions/__init__.py +0 -0
  324. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/extensions/handoff_filters.py +0 -0
  325. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/extensions/handoff_prompt.py +0 -0
  326. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/extensions/models/__init__.py +0 -0
  327. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/extensions/models/litellm_model.py +0 -0
  328. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/extensions/models/litellm_provider.py +0 -0
  329. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/extensions/visualization.py +0 -0
  330. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/function_schema.py +0 -0
  331. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/guardrail.py +0 -0
  332. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/handoffs.py +0 -0
  333. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/lifecycle.py +0 -0
  334. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/logger.py +0 -0
  335. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/mcp/__init__.py +0 -0
  336. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/mcp/server.py +0 -0
  337. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/mcp/util.py +0 -0
  338. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/memory/__init__.py +0 -0
  339. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/memory/session.py +0 -0
  340. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/models/__init__.py +0 -0
  341. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/models/_openai_shared.py +0 -0
  342. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/models/chatcmpl_converter.py +0 -0
  343. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/models/chatcmpl_helpers.py +0 -0
  344. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/models/chatcmpl_stream_handler.py +0 -0
  345. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/models/fake_id.py +0 -0
  346. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/models/interface.py +0 -0
  347. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/models/multi_provider.py +0 -0
  348. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/models/openai_provider.py +0 -0
  349. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/prompts.py +0 -0
  350. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/py.typed +0 -0
  351. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/realtime/README.md +0 -0
  352. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/realtime/__init__.py +0 -0
  353. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/realtime/_default_tracker.py +0 -0
  354. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/realtime/_util.py +0 -0
  355. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/realtime/agent.py +0 -0
  356. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/realtime/config.py +0 -0
  357. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/realtime/events.py +0 -0
  358. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/realtime/handoffs.py +0 -0
  359. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/realtime/items.py +0 -0
  360. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/realtime/model.py +0 -0
  361. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/realtime/model_events.py +0 -0
  362. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/realtime/model_inputs.py +0 -0
  363. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/realtime/runner.py +0 -0
  364. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/repl.py +0 -0
  365. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/result.py +0 -0
  366. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/run_context.py +0 -0
  367. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/stream_events.py +0 -0
  368. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/strict_schema.py +0 -0
  369. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/tool.py +0 -0
  370. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/tool_context.py +0 -0
  371. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/tracing/__init__.py +0 -0
  372. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/tracing/create.py +0 -0
  373. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/tracing/logger.py +0 -0
  374. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/tracing/processor_interface.py +0 -0
  375. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/tracing/processors.py +0 -0
  376. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/tracing/provider.py +0 -0
  377. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/tracing/scope.py +0 -0
  378. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/tracing/setup.py +0 -0
  379. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/tracing/span_data.py +0 -0
  380. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/tracing/spans.py +0 -0
  381. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/tracing/traces.py +0 -0
  382. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/tracing/util.py +0 -0
  383. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/usage.py +0 -0
  384. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/util/__init__.py +0 -0
  385. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/util/_coro.py +0 -0
  386. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/util/_error_tracing.py +0 -0
  387. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/util/_json.py +0 -0
  388. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/util/_pretty_print.py +0 -0
  389. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/util/_transforms.py +0 -0
  390. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/util/_types.py +0 -0
  391. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/version.py +0 -0
  392. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/voice/__init__.py +0 -0
  393. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/voice/events.py +0 -0
  394. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/voice/exceptions.py +0 -0
  395. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/voice/imports.py +0 -0
  396. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/voice/input.py +0 -0
  397. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/voice/model.py +0 -0
  398. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/voice/models/__init__.py +0 -0
  399. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/voice/models/openai_model_provider.py +0 -0
  400. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/voice/models/openai_stt.py +0 -0
  401. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/voice/models/openai_tts.py +0 -0
  402. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/voice/pipeline.py +0 -0
  403. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/voice/pipeline_config.py +0 -0
  404. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/voice/result.py +0 -0
  405. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/voice/utils.py +0 -0
  406. {openai_agents-0.2.6 → openai_agents-0.2.8}/src/agents/voice/workflow.py +0 -0
  407. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/README.md +0 -0
  408. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/__init__.py +0 -0
  409. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/conftest.py +0 -0
  410. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/fake_model.py +0 -0
  411. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/fastapi/__init__.py +0 -0
  412. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/fastapi/streaming_app.py +0 -0
  413. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/fastapi/test_streaming_context.py +0 -0
  414. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/mcp/__init__.py +0 -0
  415. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/mcp/conftest.py +0 -0
  416. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/mcp/helpers.py +0 -0
  417. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/mcp/test_caching.py +0 -0
  418. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/mcp/test_connect_disconnect.py +0 -0
  419. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/mcp/test_mcp_tracing.py +0 -0
  420. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/mcp/test_mcp_util.py +0 -0
  421. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/mcp/test_prompt_server.py +0 -0
  422. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/mcp/test_runner_calls_mcp.py +0 -0
  423. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/mcp/test_server_errors.py +0 -0
  424. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/mcp/test_tool_filtering.py +0 -0
  425. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/models/__init__.py +0 -0
  426. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/models/conftest.py +0 -0
  427. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/models/test_kwargs_functionality.py +0 -0
  428. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/models/test_litellm_chatcompletions_stream.py +0 -0
  429. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/models/test_litellm_extra_body.py +0 -0
  430. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/models/test_map.py +0 -0
  431. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/realtime/__init__.py +0 -0
  432. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/realtime/test_agent.py +0 -0
  433. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/realtime/test_conversion_helpers.py +0 -0
  434. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/realtime/test_item_parsing.py +0 -0
  435. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/realtime/test_model_events.py +0 -0
  436. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/realtime/test_openai_realtime.py +0 -0
  437. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/realtime/test_playback_tracker.py +0 -0
  438. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/realtime/test_realtime_handoffs.py +0 -0
  439. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/realtime/test_runner.py +0 -0
  440. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/realtime/test_tracing.py +0 -0
  441. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_agent_clone_shallow_copy.py +0 -0
  442. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_agent_hooks.py +0 -0
  443. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_agent_prompt.py +0 -0
  444. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_agent_runner.py +0 -0
  445. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_agent_runner_streamed.py +0 -0
  446. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_agent_tracing.py +0 -0
  447. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_cancel_streaming.py +0 -0
  448. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_computer_action.py +0 -0
  449. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_config.py +0 -0
  450. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_doc_parsing.py +0 -0
  451. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_extension_filters.py +0 -0
  452. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_extra_headers.py +0 -0
  453. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_function_schema.py +0 -0
  454. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_function_tool.py +0 -0
  455. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_function_tool_decorator.py +0 -0
  456. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_global_hooks.py +0 -0
  457. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_guardrails.py +0 -0
  458. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_handoff_tool.py +0 -0
  459. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_logprobs.py +0 -0
  460. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_max_turns.py +0 -0
  461. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_openai_chatcompletions.py +0 -0
  462. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_openai_chatcompletions_converter.py +0 -0
  463. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_openai_chatcompletions_stream.py +0 -0
  464. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_openai_responses_converter.py +0 -0
  465. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_output_tool.py +0 -0
  466. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_pretty_print.py +0 -0
  467. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_reasoning_content.py +0 -0
  468. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_repl.py +0 -0
  469. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_responses.py +0 -0
  470. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_responses_tracing.py +0 -0
  471. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_result_cast.py +0 -0
  472. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_run.py +0 -0
  473. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_run_config.py +0 -0
  474. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_run_error_details.py +0 -0
  475. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_run_step_execution.py +0 -0
  476. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_run_step_processing.py +0 -0
  477. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_session_exceptions.py +0 -0
  478. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_stream_events.py +0 -0
  479. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_strict_schema.py +0 -0
  480. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_tool_choice_reset.py +0 -0
  481. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_tool_converter.py +0 -0
  482. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_tool_use_behavior.py +0 -0
  483. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_trace_processor.py +0 -0
  484. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_tracing.py +0 -0
  485. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_tracing_errors.py +0 -0
  486. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_tracing_errors_streamed.py +0 -0
  487. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_usage.py +0 -0
  488. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/test_visualization.py +0 -0
  489. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/testing_processor.py +0 -0
  490. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/tracing/test_processor_api_key.py +0 -0
  491. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/tracing/test_set_api_key_fix.py +0 -0
  492. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/voice/__init__.py +0 -0
  493. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/voice/conftest.py +0 -0
  494. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/voice/fake_models.py +0 -0
  495. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/voice/helpers.py +0 -0
  496. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/voice/test_input.py +0 -0
  497. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/voice/test_openai_stt.py +0 -0
  498. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/voice/test_openai_tts.py +0 -0
  499. {openai_agents-0.2.6 → openai_agents-0.2.8}/tests/voice/test_pipeline.py +0 -0
  500. {openai_agents-0.2.6 → openai_agents-0.2.8}/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.6
3
+ Version: 0.2.8
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
@@ -115,7 +115,7 @@ Sometimes, you want to observe the lifecycle of an agent. For example, you may w
115
115
 
116
116
  ## Guardrails
117
117
 
118
- Guardrails allow you to run checks/validations on user input, in parallel to the agent running. For example, you could screen the user's input for relevance. Read more in the [guardrails](guardrails.md) documentation.
118
+ Guardrails allow you to run checks/validations on user input in parallel to the agent running, and on the agent's output once it is produced. For example, you could screen the user's input and agent's output for relevance. Read more in the [guardrails](guardrails.md) documentation.
119
119
 
120
120
  ## Cloning/copying agents
121
121
 
@@ -36,6 +36,7 @@ The [`handoff()`][agents.handoffs.handoff] function lets you customize things.
36
36
  - `on_handoff`: A callback function executed when the handoff is invoked. This is useful for things like kicking off some data fetching as soon as you know a handoff is being invoked. This function receives the agent context, and can optionally also receive LLM generated input. The input data is controlled by the `input_type` param.
37
37
  - `input_type`: The type of input expected by the handoff (optional).
38
38
  - `input_filter`: This lets you filter the input received by the next agent. See below for more.
39
+ - `is_enabled`: Whether the handoff is enabled. This can be a boolean or a function that returns a boolean, allowing you to dynamically enable or disable the handoff at runtime.
39
40
 
40
41
  ```python
41
42
  from agents import Agent, handoff, RunContextWrapper
@@ -0,0 +1,248 @@
1
+ ---
2
+ search:
3
+ exclude: true
4
+ ---
5
+ # エージェント
6
+
7
+ エージェントはアプリにおける中核的な構成要素です。エージェントは、 instructions と tools で構成された大規模言語モデル ( 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 を指定しますが、関数を通じて動的な instructions を提供することもできます。関数はエージェントとコンテキストを受け取り、プロンプトを返す必要があります。通常の関数と `async` 関数の両方が利用可能です。
102
+
103
+ ```python
104
+ def dynamic_instructions(
105
+ context: RunContextWrapper[UserContext], agent: Agent[UserContext]
106
+ ) -> str:
107
+ return f"The user's name is {context.context.name}. Help them with their questions."
108
+
109
+
110
+ agent = Agent[UserContext](
111
+ name="Triage agent",
112
+ instructions=dynamic_instructions,
113
+ )
114
+ ```
115
+
116
+ ## ライフサイクルイベント (フック)
117
+
118
+ エージェントのライフサイクルを観測したい場合があります。たとえば、イベントをログ記録したい、または特定のイベント発生時にデータを事前取得したい場合です。 `hooks` プロパティでエージェントのライフサイクルにフックできます。[`AgentHooks`][agents.lifecycle.AgentHooks] クラスをサブクラス化し、関心のあるメソッドをオーバーライドしてください。
119
+
120
+ ## ガードレール
121
+
122
+ ガードレールにより、エージェント実行と並行してユーザー入力に対するチェックや検証を行い、生成後のエージェント出力にも同様の処理を行えます。たとえば、ユーザー入力やエージェント出力の関連性をスクリーニングできます。詳しくは [guardrails](guardrails.md) のドキュメントを参照してください。
123
+
124
+ ## エージェントのクローン/コピー
125
+
126
+ エージェントの `clone()` メソッドを使用すると、エージェントを複製し、必要に応じて任意のプロパティを変更できます。
127
+
128
+ ```python
129
+ pirate_agent = Agent(
130
+ name="Pirate",
131
+ instructions="Write like a pirate",
132
+ model="o3-mini",
133
+ )
134
+
135
+ robot_agent = pirate_agent.clone(
136
+ name="Robot",
137
+ instructions="Write like a robot",
138
+ )
139
+ ```
140
+
141
+ ## ツール使用の強制
142
+
143
+ ツールのリストを指定しても、 LLM が必ずツールを使用するとは限りません。[`ModelSettings.tool_choice`][agents.model_settings.ModelSettings.tool_choice] を設定してツール使用を強制できます。有効な値は次のとおりです。
144
+
145
+ 1. `auto`: ツールを使用するかどうかを LLM に委ねます。
146
+ 2. `required`: LLM にツールの使用を要求します ( どのツールを使うかは賢く選択できます )。
147
+ 3. `none`: ツールを使用しないことを要求します。
148
+ 4. 特定の文字列 ( 例: `my_tool` ) を設定: LLM にその特定のツールの使用を要求します。
149
+
150
+ ```python
151
+ from agents import Agent, Runner, function_tool, ModelSettings
152
+
153
+ @function_tool
154
+ def get_weather(city: str) -> str:
155
+ """Returns weather info for the specified city."""
156
+ return f"The weather in {city} is sunny"
157
+
158
+ agent = Agent(
159
+ name="Weather Agent",
160
+ instructions="Retrieve weather details.",
161
+ tools=[get_weather],
162
+ model_settings=ModelSettings(tool_choice="get_weather")
163
+ )
164
+ ```
165
+
166
+ ## ツール使用の挙動
167
+
168
+ `Agent` の構成にある `tool_use_behavior` パラメーターは、ツール出力の処理方法を制御します。
169
+ - `"run_llm_again"`: 既定。ツールを実行し、その結果を LLM が処理して最終応答を生成します。
170
+ - `"stop_on_first_tool"`: 最初のツール呼び出しの出力を、その後の LLM 処理なしに最終応答として使用します。
171
+
172
+ ```python
173
+ from agents import Agent, Runner, function_tool, ModelSettings
174
+
175
+ @function_tool
176
+ def get_weather(city: str) -> str:
177
+ """Returns weather info for the specified city."""
178
+ return f"The weather in {city} is sunny"
179
+
180
+ agent = Agent(
181
+ name="Weather Agent",
182
+ instructions="Retrieve weather details.",
183
+ tools=[get_weather],
184
+ tool_use_behavior="stop_on_first_tool"
185
+ )
186
+ ```
187
+
188
+ - `StopAtTools(stop_at_tool_names=[...])`: 指定されたいずれかのツールが呼び出されたら停止し、その出力を最終応答として使用します。
189
+ ```python
190
+ from agents import Agent, Runner, function_tool
191
+ from agents.agent import StopAtTools
192
+
193
+ @function_tool
194
+ def get_weather(city: str) -> str:
195
+ """Returns weather info for the specified city."""
196
+ return f"The weather in {city} is sunny"
197
+
198
+ @function_tool
199
+ def sum_numbers(a: int, b: int) -> int:
200
+ """Adds two numbers."""
201
+ return a + b
202
+
203
+ agent = Agent(
204
+ name="Stop At Stock Agent",
205
+ instructions="Get weather or sum numbers.",
206
+ tools=[get_weather, sum_numbers],
207
+ tool_use_behavior=StopAtTools(stop_at_tool_names=["get_weather"])
208
+ )
209
+ ```
210
+ - `ToolsToFinalOutputFunction`: ツール結果を処理し、停止するか LLM を継続するかを判断するカスタム関数です。
211
+
212
+ ```python
213
+ from agents import Agent, Runner, function_tool, FunctionToolResult, RunContextWrapper
214
+ from agents.agent import ToolsToFinalOutputResult
215
+ from typing import List, Any
216
+
217
+ @function_tool
218
+ def get_weather(city: str) -> str:
219
+ """Returns weather info for the specified city."""
220
+ return f"The weather in {city} is sunny"
221
+
222
+ def custom_tool_handler(
223
+ context: RunContextWrapper[Any],
224
+ tool_results: List[FunctionToolResult]
225
+ ) -> ToolsToFinalOutputResult:
226
+ """Processes tool results to decide final output."""
227
+ for result in tool_results:
228
+ if result.output and "sunny" in result.output:
229
+ return ToolsToFinalOutputResult(
230
+ is_final_output=True,
231
+ final_output=f"Final weather: {result.output}"
232
+ )
233
+ return ToolsToFinalOutputResult(
234
+ is_final_output=False,
235
+ final_output=None
236
+ )
237
+
238
+ agent = Agent(
239
+ name="Weather Agent",
240
+ instructions="Retrieve weather details.",
241
+ tools=[get_weather],
242
+ tool_use_behavior=custom_tool_handler
243
+ )
244
+ ```
245
+
246
+ !!! note
247
+
248
+ 無限ループを防ぐため、フレームワークはツール呼び出し後に自動的に `tool_choice` を "auto" にリセットします。この挙動は [`agent.reset_tool_choice`][agents.agent.Agent.reset_tool_choice] で設定できます。無限ループが起きるのは、ツール結果が LLM に送られ、`tool_choice` のために LLM が再びツール呼び出しを生成し続けるためです。
@@ -0,0 +1,98 @@
1
+ ---
2
+ search:
3
+ exclude: true
4
+ ---
5
+ # SDK の設定
6
+
7
+ ## API キーとクライアント
8
+
9
+ デフォルトでは、SDK はインポートされた直後から LLM リクエストと トレーシング のために `OPENAI_API_KEY` 環境変数を探します。アプリ起動前にその環境変数を設定できない場合は、[set_default_openai_key()][agents.set_default_openai_key] 関数を使ってキーを設定できます。
10
+
11
+ ```python
12
+ from agents import set_default_openai_key
13
+
14
+ set_default_openai_key("sk-...")
15
+ ```
16
+
17
+ また、使用する OpenAI クライアントを設定することもできます。デフォルトでは、SDK は環境変数または上記で設定したデフォルトキーから API キーを用いて `AsyncOpenAI` インスタンスを作成します。これを変更するには、[set_default_openai_client()][agents.set_default_openai_client] 関数を使用します。
18
+
19
+ ```python
20
+ from openai import AsyncOpenAI
21
+ from agents import set_default_openai_client
22
+
23
+ custom_client = AsyncOpenAI(base_url="...", api_key="...")
24
+ set_default_openai_client(custom_client)
25
+ ```
26
+
27
+ 最後に、使用する OpenAI API をカスタマイズすることもできます。デフォルトでは OpenAI Responses API を使用します。これを上書きして Chat Completions API を使用するには、[set_default_openai_api()][agents.set_default_openai_api] 関数を使用します。
28
+
29
+ ```python
30
+ from agents import set_default_openai_api
31
+
32
+ set_default_openai_api("chat_completions")
33
+ ```
34
+
35
+ ## トレーシング
36
+
37
+ トレーシング はデフォルトで有効です。デフォルトでは、上記の OpenAI API キー(つまり環境変数または設定したデフォルトキー)を使用します。トレーシング に使用する API キーを個別に設定するには、[`set_tracing_export_api_key`][agents.set_tracing_export_api_key] 関数を使用します。
38
+
39
+ ```python
40
+ from agents import set_tracing_export_api_key
41
+
42
+ set_tracing_export_api_key("sk-...")
43
+ ```
44
+
45
+ また、[`set_tracing_disabled()`][agents.set_tracing_disabled] 関数を使用して、トレーシング を完全に無効化できます。
46
+
47
+ ```python
48
+ from agents import set_tracing_disabled
49
+
50
+ set_tracing_disabled(True)
51
+ ```
52
+
53
+ ## デバッグログ
54
+
55
+ SDK にはハンドラーが設定されていない 2 つの Python ロガーがあります。デフォルトでは、これは警告とエラーが `stdout` に送られ、それ以外のログは抑制されることを意味します。
56
+
57
+ 詳細なログ出力を有効にするには、[`enable_verbose_stdout_logging()`][agents.enable_verbose_stdout_logging] 関数を使用します。
58
+
59
+ ```python
60
+ from agents import enable_verbose_stdout_logging
61
+
62
+ enable_verbose_stdout_logging()
63
+ ```
64
+
65
+ また、ハンドラー、フィルター、フォーマッターなどを追加してログをカスタマイズすることもできます。詳しくは [Python logging ガイド](https://docs.python.org/3/howto/logging.html)をご覧ください。
66
+
67
+ ```python
68
+ import logging
69
+
70
+ logger = logging.getLogger("openai.agents") # or openai.agents.tracing for the Tracing logger
71
+
72
+ # To make all logs show up
73
+ logger.setLevel(logging.DEBUG)
74
+ # To make info and above show up
75
+ logger.setLevel(logging.INFO)
76
+ # To make warning and above show up
77
+ logger.setLevel(logging.WARNING)
78
+ # etc
79
+
80
+ # You can customize this as needed, but this will output to `stderr` by default
81
+ logger.addHandler(logging.StreamHandler())
82
+ ```
83
+
84
+ ### ログ内の機微なデータ
85
+
86
+ 一部のログには機微なデータ(例: ユーザー データ)が含まれる場合があります。これらのデータの記録を無効化したい場合は、次の環境変数を設定してください。
87
+
88
+ LLM の入力と出力のロギングを無効化するには:
89
+
90
+ ```bash
91
+ export OPENAI_AGENTS_DONT_LOG_MODEL_DATA=1
92
+ ```
93
+
94
+ ツールの入力と出力のロギングを無効化するには:
95
+
96
+ ```bash
97
+ export OPENAI_AGENTS_DONT_LOG_TOOL_DATA=1
98
+ ```
@@ -0,0 +1,82 @@
1
+ ---
2
+ search:
3
+ exclude: true
4
+ ---
5
+ # コンテキスト管理
6
+
7
+ コンテキストは多義的な用語です。意識すべき主なコンテキストには次の 2 つのクラスがあります。
8
+
9
+ 1. コードからローカルに利用できるコンテキスト: これはツール関数の実行時、`on_handoff` のようなコールバック、ライフサイクルフックなどで必要になる可能性のあるデータや依存関係です。
10
+ 2. LLM に利用できるコンテキスト: これは LLM が応答を生成する際に目にするデータです。
11
+
12
+ ## ローカルコンテキスト
13
+
14
+ これは [`RunContextWrapper`][agents.run_context.RunContextWrapper] クラスおよびその中の [`context`][agents.run_context.RunContextWrapper.context] プロパティで表現されます。仕組みは次のとおりです。
15
+
16
+ 1. 任意の Python オブジェクトを作成します。一般的には dataclass や Pydantic オブジェクトを使います。
17
+ 2. そのオブジェクトを各種の実行メソッドに渡します(例: `Runner.run(..., **context=whatever**)`)。
18
+ 3. すべてのツール呼び出しやライフサイクルフックなどにはラッパーオブジェクト `RunContextWrapper[T]` が渡されます。ここで `T` はコンテキストオブジェクトの型を表し、`wrapper.context` でアクセスできます。
19
+
20
+ 最も重要な点: 特定のエージェント実行におけるすべてのエージェント、ツール関数、ライフサイクルなどは、同じ型のコンテキストを使わなければなりません。
21
+
22
+ コンテキストは次のような用途に使えます:
23
+
24
+ - 実行のための状況データ(例: ユーザー名 / uid や、ユーザーに関するその他の情報)
25
+ - 依存関係(例: ロガーオブジェクト、データフェッチャーなど)
26
+ - ヘルパー関数
27
+
28
+ !!! danger "注意"
29
+
30
+ コンテキストオブジェクトは LLM に送信されません。これは純粋にローカルなオブジェクトであり、読み書きやメソッド呼び出しが可能です。
31
+
32
+ ```python
33
+ import asyncio
34
+ from dataclasses import dataclass
35
+
36
+ from agents import Agent, RunContextWrapper, Runner, function_tool
37
+
38
+ @dataclass
39
+ class UserInfo: # (1)!
40
+ name: str
41
+ uid: int
42
+
43
+ @function_tool
44
+ async def fetch_user_age(wrapper: RunContextWrapper[UserInfo]) -> str: # (2)!
45
+ """Fetch the age of the user. Call this function to get user's age information."""
46
+ return f"The user {wrapper.context.name} is 47 years old"
47
+
48
+ async def main():
49
+ user_info = UserInfo(name="John", uid=123)
50
+
51
+ agent = Agent[UserInfo]( # (3)!
52
+ name="Assistant",
53
+ tools=[fetch_user_age],
54
+ )
55
+
56
+ result = await Runner.run( # (4)!
57
+ starting_agent=agent,
58
+ input="What is the age of the user?",
59
+ context=user_info,
60
+ )
61
+
62
+ print(result.final_output) # (5)!
63
+ # The user John is 47 years old.
64
+
65
+ if __name__ == "__main__":
66
+ asyncio.run(main())
67
+ ```
68
+
69
+ 1. これはコンテキストオブジェクトです。ここでは dataclass を使っていますが、任意の型を使えます。
70
+ 2. これはツールです。`RunContextWrapper[UserInfo]` を受け取り、ツールの実装はコンテキストから読み取っています。
71
+ 3. 型チェッカーがエラーを検出できるように(たとえば異なるコンテキスト型を受け取るツールを渡そうとした場合など)、エージェントにジェネリックの `UserInfo` を付与しています。
72
+ 4. コンテキストは `run` 関数に渡されます。
73
+ 5. エージェントはツールを正しく呼び出して年齢を取得します。
74
+
75
+ ## エージェント / LLM のコンテキスト
76
+
77
+ LLM が呼び出されると、LLM が参照できるデータは会話履歴からのものだけです。つまり、新しいデータを LLM に利用可能にしたい場合は、その履歴で利用可能になる方法で行う必要があります。方法はいくつかあります。
78
+
79
+ 1. エージェントの `instructions` に追加します。これは「system prompt」や「デベロッパーメッセージ」とも呼ばれます。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. 関数ツールを通じて公開します。これは _オンデマンド_ のコンテキストに有用です — LLM が必要に応じて判断し、データを取得するためにツールを呼び出せます。
82
+ 4. リトリーバル(retrieval)や Web 検索を使用します。これらは、ファイルやデータベース(retrieval)から、あるいは Web(Web 検索)から関連データを取得できる特別なツールです。これは、関連する状況データに応答を「グラウンディング」するのに役立ちます。
@@ -0,0 +1,48 @@
1
+ ---
2
+ search:
3
+ exclude: true
4
+ ---
5
+ # コード例
6
+
7
+ リポジトリの [code examples](https://github.com/openai/openai-agents-python/tree/main/examples) セクションで、 SDK のさまざまなサンプル実装をご覧ください。code examples は、異なるパターンや機能を示す複数のカテゴリーに整理されています。
8
+
9
+
10
+ ## カテゴリー
11
+
12
+ - **[エージェントパターン (agent_patterns)](https://github.com/openai/openai-agents-python/tree/main/examples/agent_patterns):**
13
+ このカテゴリーの例では、次のような一般的な エージェント の設計パターンを示します。
14
+
15
+ - 決定的なワークフロー
16
+ - ツールとしての エージェント
17
+ - エージェント の並列実行
18
+
19
+ - **[基本 (basic)](https://github.com/openai/openai-agents-python/tree/main/examples/basic):**
20
+ これらの例は、次のような SDK の基礎的な機能を紹介します。
21
+
22
+ - 動的な システムプロンプト
23
+ - ストリーミング 出力
24
+ - ライフサイクルイベント
25
+
26
+ - **[ツールのサンプルコード (tools)](https://github.com/openai/openai-agents-python/tree/main/examples/tools):**
27
+ Web 検索 や ファイル検索 などの OpenAI がホストするツール の実装方法と、それらを エージェント に統合する方法を学べます。
28
+
29
+ - **[モデルプロバイダー (model_providers)](https://github.com/openai/openai-agents-python/tree/main/examples/model_providers):**
30
+ SDK で OpenAI 以外のモデルを使用する方法を探ります。
31
+
32
+ - **[ハンドオフ (handoffs)](https://github.com/openai/openai-agents-python/tree/main/examples/handoffs):**
33
+ エージェント の ハンドオフ の実用例をご覧ください。
34
+
35
+ - **[MCP (mcp)](https://github.com/openai/openai-agents-python/tree/main/examples/mcp):**
36
+ MCP で エージェント を構築する方法を学べます。
37
+
38
+ - **[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):**
39
+ 実世界のアプリケーションを示す、さらに作り込まれたサンプルが 2 つあります。
40
+
41
+ - **customer_service** : 航空会社向けのカスタマーサービス システムのサンプル。
42
+ - **research_bot** : シンプルな ディープリサーチ のクローン。
43
+
44
+ - **[音声 (voice)](https://github.com/openai/openai-agents-python/tree/main/examples/voice):**
45
+ TTS と STT モデルを用いた音声 エージェント の例をご覧ください。
46
+
47
+ - **[リアルタイム (realtime)](https://github.com/openai/openai-agents-python/tree/main/examples/realtime):**
48
+ SDK を使ってリアルタイム体験を構築する方法を示す code examples。
@@ -0,0 +1,158 @@
1
+ ---
2
+ search:
3
+ exclude: true
4
+ ---
5
+ # ガードレール
6
+
7
+ ガードレールは、エージェントと _並行して_ 実行され、ユーザー入力のチェックや検証を行えます。たとえば、非常に賢い(そのぶん遅く/高価な)モデルでカスタマーリクエストを支援するエージェントがあるとします。悪意のあるユーザーに数学の宿題を手伝わせるような依頼をモデルにさせたくはありません。そのため、安価で高速なモデルでガードレールを実行できます。ガードレールが不正利用を検出した場合は、直ちにエラーを発生させて高価なモデルの実行を止め、時間とコストを節約できます。
8
+
9
+ ガードレールには 2 つの種類があります:
10
+
11
+ 1. 入力ガードレールは最初のユーザー入力に対して実行されます
12
+ 2. 出力ガードレールは最終的なエージェントの出力に対して実行されます
13
+
14
+ ## 入力ガードレール
15
+
16
+ 入力ガードレールは 3 つの手順で実行されます:
17
+
18
+ 1. まず、ガードレールはエージェントに渡されたものと同じ入力を受け取ります。
19
+ 2. 次に、ガードレール関数が実行され、[`GuardrailFunctionOutput`][agents.guardrail.GuardrailFunctionOutput] を生成し、それが [`InputGuardrailResult`][agents.guardrail.InputGuardrailResult] にラップされます。
20
+ 3. 最後に、[`.tripwire_triggered`][agents.guardrail.GuardrailFunctionOutput.tripwire_triggered] が true かどうかを確認します。true の場合、[`InputGuardrailTripwireTriggered`][agents.exceptions.InputGuardrailTripwireTriggered] 例外が発生し、ユーザーへの適切な応答や例外処理が行えます。
21
+
22
+ !!! Note
23
+
24
+ 入力ガードレールはユーザー入力での実行を想定しているため、エージェントのガードレールはそのエージェントが _最初の_ エージェントである場合にのみ実行されます。なぜ `guardrails` プロパティがエージェント側にあり、`Runner.run` に渡さないのか不思議に思うかもしれません。これは、ガードレールは実際のエージェントに密接に関連する傾向があるからです。エージェントごとに異なるガードレールを実行するため、コードを同じ場所に置くことで可読性が向上します。
25
+
26
+ ## 出力ガードレール
27
+
28
+ 出力ガードレールは 3 つの手順で実行されます:
29
+
30
+ 1. まず、ガードレールはエージェントによって生成された出力を受け取ります。
31
+ 2. 次に、ガードレール関数が実行され、[`GuardrailFunctionOutput`][agents.guardrail.GuardrailFunctionOutput] を生成し、それが [`OutputGuardrailResult`][agents.guardrail.OutputGuardrailResult] にラップされます。
32
+ 3. 最後に、[`.tripwire_triggered`][agents.guardrail.GuardrailFunctionOutput.tripwire_triggered] が true かどうかを確認します。true の場合、[`OutputGuardrailTripwireTriggered`][agents.exceptions.OutputGuardrailTripwireTriggered] 例外が発生し、ユーザーへの適切な応答や例外処理が行えます。
33
+
34
+ !!! Note
35
+
36
+ 出力ガードレールは最終的なエージェント出力での実行を想定しているため、エージェントのガードレールはそのエージェントが _最後の_ エージェントである場合にのみ実行されます。入力ガードレールと同様に、ガードレールは実際のエージェントに密接に関連する傾向があるため、コードを同じ場所に置くことで可読性が向上します。
37
+
38
+ ## トリップワイヤー
39
+
40
+ 入力または出力がガードレールに不合格となった場合、ガードレールはトリップワイヤーでこれを通知できます。トリップワイヤーが発動したガードレールを検出するとすぐに、`{Input,Output}GuardrailTripwireTriggered` 例外を発生させ、エージェントの実行を停止します。
41
+
42
+ ## ガードレールの実装
43
+
44
+ 入力を受け取り、[`GuardrailFunctionOutput`][agents.guardrail.GuardrailFunctionOutput] を返す関数を用意する必要があります。この例では、内部でエージェントを実行して実現します。
45
+
46
+ ```python
47
+ from pydantic import BaseModel
48
+ from agents import (
49
+ Agent,
50
+ GuardrailFunctionOutput,
51
+ InputGuardrailTripwireTriggered,
52
+ RunContextWrapper,
53
+ Runner,
54
+ TResponseInputItem,
55
+ input_guardrail,
56
+ )
57
+
58
+ class MathHomeworkOutput(BaseModel):
59
+ is_math_homework: bool
60
+ reasoning: str
61
+
62
+ guardrail_agent = Agent( # (1)!
63
+ name="Guardrail check",
64
+ instructions="Check if the user is asking you to do their math homework.",
65
+ output_type=MathHomeworkOutput,
66
+ )
67
+
68
+
69
+ @input_guardrail
70
+ async def math_guardrail( # (2)!
71
+ ctx: RunContextWrapper[None], agent: Agent, input: str | list[TResponseInputItem]
72
+ ) -> GuardrailFunctionOutput:
73
+ result = await Runner.run(guardrail_agent, input, context=ctx.context)
74
+
75
+ return GuardrailFunctionOutput(
76
+ output_info=result.final_output, # (3)!
77
+ tripwire_triggered=result.final_output.is_math_homework,
78
+ )
79
+
80
+
81
+ agent = Agent( # (4)!
82
+ name="Customer support agent",
83
+ instructions="You are a customer support agent. You help customers with their questions.",
84
+ input_guardrails=[math_guardrail],
85
+ )
86
+
87
+ async def main():
88
+ # This should trip the guardrail
89
+ try:
90
+ await Runner.run(agent, "Hello, can you help me solve for x: 2x + 3 = 11?")
91
+ print("Guardrail didn't trip - this is unexpected")
92
+
93
+ except InputGuardrailTripwireTriggered:
94
+ print("Math homework guardrail tripped")
95
+ ```
96
+
97
+ 1. このエージェントをガードレール関数内で使用します。
98
+ 2. これはエージェントの入力/コンテキストを受け取り、結果を返すガードレール関数です。
99
+ 3. ガードレール結果に追加情報を含めることができます。
100
+ 4. これはワークフローを定義する実際のエージェントです。
101
+
102
+ 出力ガードレールも同様です。
103
+
104
+ ```python
105
+ from pydantic import BaseModel
106
+ from agents import (
107
+ Agent,
108
+ GuardrailFunctionOutput,
109
+ OutputGuardrailTripwireTriggered,
110
+ RunContextWrapper,
111
+ Runner,
112
+ output_guardrail,
113
+ )
114
+ class MessageOutput(BaseModel): # (1)!
115
+ response: str
116
+
117
+ class MathOutput(BaseModel): # (2)!
118
+ reasoning: str
119
+ is_math: bool
120
+
121
+ guardrail_agent = Agent(
122
+ name="Guardrail check",
123
+ instructions="Check if the output includes any math.",
124
+ output_type=MathOutput,
125
+ )
126
+
127
+ @output_guardrail
128
+ async def math_guardrail( # (3)!
129
+ ctx: RunContextWrapper, agent: Agent, output: MessageOutput
130
+ ) -> GuardrailFunctionOutput:
131
+ result = await Runner.run(guardrail_agent, output.response, context=ctx.context)
132
+
133
+ return GuardrailFunctionOutput(
134
+ output_info=result.final_output,
135
+ tripwire_triggered=result.final_output.is_math,
136
+ )
137
+
138
+ agent = Agent( # (4)!
139
+ name="Customer support agent",
140
+ instructions="You are a customer support agent. You help customers with their questions.",
141
+ output_guardrails=[math_guardrail],
142
+ output_type=MessageOutput,
143
+ )
144
+
145
+ async def main():
146
+ # This should trip the guardrail
147
+ try:
148
+ await Runner.run(agent, "Hello, can you help me solve for x: 2x + 3 = 11?")
149
+ print("Guardrail didn't trip - this is unexpected")
150
+
151
+ except OutputGuardrailTripwireTriggered:
152
+ print("Math output guardrail tripped")
153
+ ```
154
+
155
+ 1. これは実際のエージェントの出力型です。
156
+ 2. これはガードレールの出力型です。
157
+ 3. これはエージェントの出力を受け取り、結果を返すガードレール関数です。
158
+ 4. これはワークフローを定義する実際のエージェントです。