From defdd828de5860076ef0d246a3f8b87b1bedda2f Mon Sep 17 00:00:00 2001 From: Kazuhiro Sera Date: Wed, 3 Sep 2025 06:37:29 +0900 Subject: [PATCH 1/3] fix: Fix #1640 openai package breaking chnages --- pyproject.toml | 2 +- src/agents/tool.py | 2 +- uv.lock | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 25d950b34..600f0cbba 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ requires-python = ">=3.9" license = "MIT" authors = [{ name = "OpenAI", email = "support@openai.com" }] dependencies = [ - "openai>=1.102.0,<2", + "openai>=1.104.1,<2", "pydantic>=2.10, <3", "griffe>=1.5.6, <2", "typing-extensions>=4.12.2, <5", diff --git a/src/agents/tool.py b/src/agents/tool.py index 4624fbb52..04534bd04 100644 --- a/src/agents/tool.py +++ b/src/agents/tool.py @@ -12,8 +12,8 @@ ResponseComputerToolCall, ) from openai.types.responses.response_output_item import LocalShellCall, McpApprovalRequest -from openai.types.responses.tool import WebSearchToolFilters from openai.types.responses.tool_param import CodeInterpreter, ImageGeneration, Mcp +from openai.types.responses.web_search_tool import Filters as WebSearchToolFilters from openai.types.responses.web_search_tool_param import UserLocation from pydantic import ValidationError from typing_extensions import Concatenate, NotRequired, ParamSpec, TypedDict diff --git a/uv.lock b/uv.lock index 12a50a794..a936b74db 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 2 +revision = 3 requires-python = ">=3.9" resolution-markers = [ "python_full_version >= '3.11'", @@ -1797,7 +1797,7 @@ wheels = [ [[package]] name = "openai" -version = "1.102.0" +version = "1.104.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, @@ -1809,9 +1809,9 @@ dependencies = [ { name = "tqdm" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/07/55/da5598ed5c6bdd9939633854049cddc5cbac0da938dfcfcb3c6b119c16c0/openai-1.102.0.tar.gz", hash = "sha256:2e0153bcd64a6523071e90211cbfca1f2bbc5ceedd0993ba932a5869f93b7fc9", size = 519027, upload-time = "2025-08-26T20:50:29.397Z" } +sdist = { url = "https://files.pythonhosted.org/packages/47/55/7e0242a7db611ad4a091a98ca458834b010639e94e84faca95741ded4050/openai-1.104.1.tar.gz", hash = "sha256:8b234ada6f720fa82859fb7dcecf853f8ddf3892c3038c81a9cc08bcb4cd8d86", size = 557053, upload-time = "2025-09-02T19:59:37.818Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/0d/c9e7016d82c53c5b5e23e2bad36daebb8921ed44f69c0a985c6529a35106/openai-1.102.0-py3-none-any.whl", hash = "sha256:d751a7e95e222b5325306362ad02a7aa96e1fab3ed05b5888ce1c7ca63451345", size = 812015, upload-time = "2025-08-26T20:50:27.219Z" }, + { url = "https://files.pythonhosted.org/packages/64/de/af0eefab4400d2c888cea4f9b929bd5208d98aa7619c38b93554b0699d60/openai-1.104.1-py3-none-any.whl", hash = "sha256:153f2e9c60d4c8bb90f2f3ef03b6433b3c186ee9497c088d323028f777760af4", size = 928094, upload-time = "2025-09-02T19:59:36.155Z" }, ] [[package]] @@ -1882,7 +1882,7 @@ requires-dist = [ { name = "litellm", marker = "extra == 'litellm'", specifier = ">=1.67.4.post1,<2" }, { name = "mcp", marker = "python_full_version >= '3.10'", specifier = ">=1.11.0,<2" }, { name = "numpy", marker = "python_full_version >= '3.10' and extra == 'voice'", specifier = ">=2.2.0,<3" }, - { name = "openai", specifier = ">=1.102.0,<2" }, + { name = "openai", specifier = ">=1.104.1,<2" }, { name = "pydantic", specifier = ">=2.10,<3" }, { name = "requests", specifier = ">=2.0,<3" }, { name = "sqlalchemy", marker = "extra == 'sqlalchemy'", specifier = ">=2.0" }, From 580838ce6d0d1920a6937f5978a3de5e79904616 Mon Sep 17 00:00:00 2001 From: Kazuhiro Sera Date: Wed, 3 Sep 2025 06:41:32 +0900 Subject: [PATCH 2/3] fix --- examples/tools/web_search_filters.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/tools/web_search_filters.py b/examples/tools/web_search_filters.py index 22b3864ea..6be30b169 100644 --- a/examples/tools/web_search_filters.py +++ b/examples/tools/web_search_filters.py @@ -1,7 +1,7 @@ import asyncio from datetime import datetime -from openai.types.responses.tool import WebSearchToolFilters +from openai.types.responses.web_search_tool import Filters from openai.types.shared.reasoning import Reasoning from agents import Agent, ModelSettings, Runner, WebSearchTool, trace @@ -18,7 +18,7 @@ async def main(): tools=[ WebSearchTool( # https://platform.openai.com/docs/guides/tools-web-search?api-mode=responses#domain-filtering - filters=WebSearchToolFilters( + filters=Filters( allowed_domains=[ "openai.com", "developer.openai.com", From d34f0c04cca855203a12df2846383d5cef349283 Mon Sep 17 00:00:00 2001 From: Kazuhiro Sera Date: Wed, 3 Sep 2025 06:46:35 +0900 Subject: [PATCH 3/3] fix --- src/agents/models/openai_responses.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/agents/models/openai_responses.py b/src/agents/models/openai_responses.py index 85d8a0224..0b409f7b0 100644 --- a/src/agents/models/openai_responses.py +++ b/src/agents/models/openai_responses.py @@ -433,7 +433,7 @@ def _convert_tool(cls, tool: Tool) -> tuple[ToolParam, ResponseIncludable | None converted_tool = { "type": "web_search", "filters": tool.filters.model_dump() if tool.filters is not None else None, # type: ignore [typeddict-item] - "user_location": tool.user_location, # type: ignore [typeddict-item] + "user_location": tool.user_location, "search_context_size": tool.search_context_size, } includes = None