From 3df516dd43f8607783c2e1cbee6874e0b27421f9 Mon Sep 17 00:00:00 2001 From: salma-elshafey Date: Thu, 5 Mar 2026 23:00:46 +0200 Subject: [PATCH] add open api call/output normalization --- .../_evaluators/_common/_base_prompty_eval.py | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/sdk/evaluation/azure-ai-evaluation/azure/ai/evaluation/_evaluators/_common/_base_prompty_eval.py b/sdk/evaluation/azure-ai-evaluation/azure/ai/evaluation/_evaluators/_common/_base_prompty_eval.py index 380242642576..e06538eb9b61 100644 --- a/sdk/evaluation/azure-ai-evaluation/azure/ai/evaluation/_evaluators/_common/_base_prompty_eval.py +++ b/sdk/evaluation/azure-ai-evaluation/azure/ai/evaluation/_evaluators/_common/_base_prompty_eval.py @@ -75,20 +75,28 @@ def _drop_mcp_approval_messages(messages): def _normalize_function_call_types(messages): - """Normalize function_call/function_call_output types to tool_call/tool_result.""" + """Normalize function_call/function_call_output/openapi_call/openapi_call_output types to tool_call/tool_result.""" if not isinstance(messages, list): return messages for msg in messages: - if isinstance(msg, dict) and isinstance(msg.get("content"), list): - for item in msg["content"]: - if isinstance(item, dict) and item.get("type") == "function_call": - item["type"] = "tool_call" - if "function_call" in item: - item["tool_call"] = item.pop("function_call") - elif isinstance(item, dict) and item.get("type") == "function_call_output": - item["type"] = "tool_result" - if "function_call_output" in item: - item["tool_result"] = item.pop("function_call_output") + if not isinstance(msg, dict) or not isinstance(msg.get("content"), list): + continue + for item in msg["content"]: + if not isinstance(item, dict): + continue + t = item.get("type") + if t == "function_call": + item["type"] = "tool_call" + elif t == "function_call_output": + item["type"] = "tool_result" + if "function_call_output" in item: + item["tool_result"] = item.pop("function_call_output") + elif t == "openapi_call": + item["type"] = "tool_call" + elif t == "openapi_call_output": + item["type"] = "tool_result" + if "openapi_call_output" in item: + item["tool_result"] = item.pop("openapi_call_output") return messages