From c4e1b8d094d939788a86049a898324dd45767564 Mon Sep 17 00:00:00 2001 From: ehhuang Date: Wed, 19 Mar 2025 20:39:10 -0700 Subject: [PATCH] fix: better tool call parsing error message (#1710) # What does this PR do? context #1584 ## Test Plan image --- llama_stack/models/llama/llama3/tool_utils.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/llama_stack/models/llama/llama3/tool_utils.py b/llama_stack/models/llama/llama3/tool_utils.py index 337124f14..71018898c 100644 --- a/llama_stack/models/llama/llama3/tool_utils.py +++ b/llama_stack/models/llama/llama3/tool_utils.py @@ -15,8 +15,11 @@ import json import re from typing import Optional, Tuple +from llama_stack.log import get_logger from llama_stack.models.llama.datatypes import BuiltinTool, RecursiveType, ToolCall, ToolPromptFormat +logger = get_logger(name=__name__, category="inference") + BUILTIN_TOOL_PATTERN = r'\b(?P\w+)\.call\(query="(?P[^"]*)"\)' CUSTOM_TOOL_CALL_PATTERN = re.compile(r"[^}]+)>(?P{.*?})") @@ -92,7 +95,15 @@ def parse_python_list_for_function_calls(input_string): # Extract keyword arguments for keyword in node.keywords: - function_args[keyword.arg] = ast.literal_eval(keyword.value) + try: + function_args[keyword.arg] = ast.literal_eval(keyword.value) + except ValueError as e: + logger.error( + f"Error parsing tool call argument '{keyword.arg}': {e}, full input string: '{input_string}'" + ) + raise ValueError( + f"Error parsing tool call argument '{keyword.arg}', full input string: '{input_string}'" + ) from e result.append((function_name, function_args))