From 245557cd854ba26cd4d80e947892471af1871da0 Mon Sep 17 00:00:00 2001 From: Alexander Alderman Webb Date: Tue, 10 Mar 2026 09:28:52 +0100 Subject: [PATCH 1/4] test(openai-agents): Do not fail on new tool fields --- .../openai_agents/test_openai_agents.py | 77 +++++++++++-------- 1 file changed, 45 insertions(+), 32 deletions(-) diff --git a/tests/integrations/openai_agents/test_openai_agents.py b/tests/integrations/openai_agents/test_openai_agents.py index 79f2a969c6..07f3717f1d 100644 --- a/tests/integrations/openai_agents/test_openai_agents.py +++ b/tests/integrations/openai_agents/test_openai_agents.py @@ -1220,24 +1220,23 @@ def simple_test_tool(message: str) -> str: ) tool_span = next(span for span in spans if span["op"] == OP.GEN_AI_EXECUTE_TOOL) - available_tools = [ - { - "name": "simple_test_tool", - "description": "A simple tool", - "params_json_schema": { - "properties": {"message": {"title": "Message", "type": "string"}}, - "required": ["message"], - "title": "simple_test_tool_args", - "type": "object", - "additionalProperties": False, - }, - "on_invoke_tool": mock.ANY, - "strict_json_schema": True, - "is_enabled": True, - } - ] + available_tool = { + "name": "simple_test_tool", + "description": "A simple tool", + "params_json_schema": { + "properties": {"message": {"title": "Message", "type": "string"}}, + "required": ["message"], + "title": "simple_test_tool_args", + "type": "object", + "additionalProperties": False, + }, + "on_invoke_tool": mock.ANY, + "strict_json_schema": True, + "is_enabled": True, + } + if parse_version(OPENAI_AGENTS_VERSION) >= (0, 3, 3): - available_tools[0].update( + available_tool.update( {"tool_input_guardrails": None, "tool_output_guardrails": None} ) @@ -1245,13 +1244,13 @@ def simple_test_tool(message: str) -> str: 0, 8, ): - available_tools[0]["needs_approval"] = False + available_tool["needs_approval"] = False if parse_version(OPENAI_AGENTS_VERSION) >= ( 0, 9, 0, ): - available_tools[0].update( + available_tool.update( { "timeout_seconds": None, "timeout_behavior": "error_as_result", @@ -1266,10 +1265,14 @@ def simple_test_tool(message: str) -> str: assert agent_span["origin"] == "auto.ai.openai_agents" assert agent_span["data"]["gen_ai.agent.name"] == "test_agent" assert agent_span["data"]["gen_ai.operation.name"] == "invoke_agent" - assert ( - json.loads(agent_span["data"]["gen_ai.request.available_tools"]) - == available_tools + + agent_span_available_tools = json.loads( + agent_span["data"]["gen_ai.request.available_tools"] + )[0] + assert all( + agent_span_available_tools.get(k) == v for k, v in available_tool.items() ) + assert agent_span["data"]["gen_ai.request.max_tokens"] == 100 assert agent_span["data"]["gen_ai.request.model"] == "gpt-4" assert agent_span["data"]["gen_ai.request.temperature"] == 0.7 @@ -1280,10 +1283,14 @@ def simple_test_tool(message: str) -> str: assert ai_client_span1["data"]["gen_ai.operation.name"] == "chat" assert ai_client_span1["data"]["gen_ai.system"] == "openai" assert ai_client_span1["data"]["gen_ai.agent.name"] == "test_agent" - assert ( - json.loads(ai_client_span1["data"]["gen_ai.request.available_tools"]) - == available_tools + + ai_client_span1_available_tools = json.loads( + tool_span["data"]["gen_ai.request.available_tools"] + )[0] + assert all( + ai_client_span1_available_tools.get(k) == v for k, v in available_tool.items() ) + assert ai_client_span1["data"]["gen_ai.request.max_tokens"] == 100 assert ai_client_span1["data"]["gen_ai.request.messages"] == safe_serialize( [ @@ -1323,10 +1330,12 @@ def simple_test_tool(message: str) -> str: assert tool_span["description"] == "execute_tool simple_test_tool" assert tool_span["data"]["gen_ai.agent.name"] == "test_agent" assert tool_span["data"]["gen_ai.operation.name"] == "execute_tool" - assert ( - json.loads(agent_span["data"]["gen_ai.request.available_tools"]) - == available_tools - ) + + tool_span_available_tools = json.loads( + tool_span["data"]["gen_ai.request.available_tools"] + )[0] + assert all(tool_span_available_tools.get(k) == v for k, v in available_tool.items()) + assert tool_span["data"]["gen_ai.request.max_tokens"] == 100 assert tool_span["data"]["gen_ai.request.model"] == "gpt-4" assert tool_span["data"]["gen_ai.request.temperature"] == 0.7 @@ -1341,10 +1350,14 @@ def simple_test_tool(message: str) -> str: assert ai_client_span2["description"] == "chat gpt-4" assert ai_client_span2["data"]["gen_ai.agent.name"] == "test_agent" assert ai_client_span2["data"]["gen_ai.operation.name"] == "chat" - assert ( - json.loads(agent_span["data"]["gen_ai.request.available_tools"]) - == available_tools + + ai_client_span2_available_tools = json.loads( + tool_span["data"]["gen_ai.request.available_tools"] + )[0] + assert all( + ai_client_span2_available_tools.get(k) == v for k, v in available_tool.items() ) + assert ai_client_span2["data"]["gen_ai.request.max_tokens"] == 100 assert ai_client_span2["data"]["gen_ai.request.messages"] == safe_serialize( [ From ed86232586af1cf529c97c1f1bdc5463b3f7f17a Mon Sep 17 00:00:00 2001 From: Alexander Alderman Webb Date: Tue, 10 Mar 2026 09:31:10 +0100 Subject: [PATCH 2/4] . --- tests/integrations/openai_agents/test_openai_agents.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integrations/openai_agents/test_openai_agents.py b/tests/integrations/openai_agents/test_openai_agents.py index 07f3717f1d..1cd30acf5f 100644 --- a/tests/integrations/openai_agents/test_openai_agents.py +++ b/tests/integrations/openai_agents/test_openai_agents.py @@ -1285,7 +1285,7 @@ def simple_test_tool(message: str) -> str: assert ai_client_span1["data"]["gen_ai.agent.name"] == "test_agent" ai_client_span1_available_tools = json.loads( - tool_span["data"]["gen_ai.request.available_tools"] + ai_client_span1["data"]["gen_ai.request.available_tools"] )[0] assert all( ai_client_span1_available_tools.get(k) == v for k, v in available_tool.items() From 3f83242bbacb4208caa55903788fde3f39e933f9 Mon Sep 17 00:00:00 2001 From: Alexander Alderman Webb Date: Tue, 10 Mar 2026 09:32:03 +0100 Subject: [PATCH 3/4] . --- tests/integrations/openai_agents/test_openai_agents.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integrations/openai_agents/test_openai_agents.py b/tests/integrations/openai_agents/test_openai_agents.py index 1cd30acf5f..a28c42bc36 100644 --- a/tests/integrations/openai_agents/test_openai_agents.py +++ b/tests/integrations/openai_agents/test_openai_agents.py @@ -1352,7 +1352,7 @@ def simple_test_tool(message: str) -> str: assert ai_client_span2["data"]["gen_ai.operation.name"] == "chat" ai_client_span2_available_tools = json.loads( - tool_span["data"]["gen_ai.request.available_tools"] + ai_client_span2["data"]["gen_ai.request.available_tools"] )[0] assert all( ai_client_span2_available_tools.get(k) == v for k, v in available_tool.items() From 237640b606e4ae2b0d200ab6e4bfba7449dacf1e Mon Sep 17 00:00:00 2001 From: Alexander Alderman Webb Date: Tue, 10 Mar 2026 09:37:03 +0100 Subject: [PATCH 4/4] use square bracket access --- .../openai_agents/test_openai_agents.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/tests/integrations/openai_agents/test_openai_agents.py b/tests/integrations/openai_agents/test_openai_agents.py index a28c42bc36..117755b963 100644 --- a/tests/integrations/openai_agents/test_openai_agents.py +++ b/tests/integrations/openai_agents/test_openai_agents.py @@ -1266,12 +1266,10 @@ def simple_test_tool(message: str) -> str: assert agent_span["data"]["gen_ai.agent.name"] == "test_agent" assert agent_span["data"]["gen_ai.operation.name"] == "invoke_agent" - agent_span_available_tools = json.loads( + agent_span_available_tool = json.loads( agent_span["data"]["gen_ai.request.available_tools"] )[0] - assert all( - agent_span_available_tools.get(k) == v for k, v in available_tool.items() - ) + assert all(agent_span_available_tool[k] == v for k, v in available_tool.items()) assert agent_span["data"]["gen_ai.request.max_tokens"] == 100 assert agent_span["data"]["gen_ai.request.model"] == "gpt-4" @@ -1284,11 +1282,11 @@ def simple_test_tool(message: str) -> str: assert ai_client_span1["data"]["gen_ai.system"] == "openai" assert ai_client_span1["data"]["gen_ai.agent.name"] == "test_agent" - ai_client_span1_available_tools = json.loads( + ai_client_span1_available_tool = json.loads( ai_client_span1["data"]["gen_ai.request.available_tools"] )[0] assert all( - ai_client_span1_available_tools.get(k) == v for k, v in available_tool.items() + ai_client_span1_available_tool[k] == v for k, v in available_tool.items() ) assert ai_client_span1["data"]["gen_ai.request.max_tokens"] == 100 @@ -1331,10 +1329,10 @@ def simple_test_tool(message: str) -> str: assert tool_span["data"]["gen_ai.agent.name"] == "test_agent" assert tool_span["data"]["gen_ai.operation.name"] == "execute_tool" - tool_span_available_tools = json.loads( + tool_span_available_tool = json.loads( tool_span["data"]["gen_ai.request.available_tools"] )[0] - assert all(tool_span_available_tools.get(k) == v for k, v in available_tool.items()) + assert all(tool_span_available_tool[k] == v for k, v in available_tool.items()) assert tool_span["data"]["gen_ai.request.max_tokens"] == 100 assert tool_span["data"]["gen_ai.request.model"] == "gpt-4" @@ -1351,11 +1349,11 @@ def simple_test_tool(message: str) -> str: assert ai_client_span2["data"]["gen_ai.agent.name"] == "test_agent" assert ai_client_span2["data"]["gen_ai.operation.name"] == "chat" - ai_client_span2_available_tools = json.loads( + ai_client_span2_available_tool = json.loads( ai_client_span2["data"]["gen_ai.request.available_tools"] )[0] assert all( - ai_client_span2_available_tools.get(k) == v for k, v in available_tool.items() + ai_client_span2_available_tool[k] == v for k, v in available_tool.items() ) assert ai_client_span2["data"]["gen_ai.request.max_tokens"] == 100