openai-agents 0.0.19__tar.gz → 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of openai-agents might be problematic. Click here for more details.

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