forked from phoenix-oss/llama-stack-mirror
fix: better tool call parsing error message (#1710)
# What does this PR do? context #1584 ## Test Plan <img width="1366" alt="image" src="https://github.com/user-attachments/assets/b490b590-3270-43cb-838e-8446a8948f1d" />
This commit is contained in:
parent
41bd350539
commit
c4e1b8d094
1 changed files with 12 additions and 1 deletions
|
@ -15,8 +15,11 @@ import json
|
||||||
import re
|
import re
|
||||||
from typing import Optional, Tuple
|
from typing import Optional, Tuple
|
||||||
|
|
||||||
|
from llama_stack.log import get_logger
|
||||||
from llama_stack.models.llama.datatypes import BuiltinTool, RecursiveType, ToolCall, ToolPromptFormat
|
from llama_stack.models.llama.datatypes import BuiltinTool, RecursiveType, ToolCall, ToolPromptFormat
|
||||||
|
|
||||||
|
logger = get_logger(name=__name__, category="inference")
|
||||||
|
|
||||||
BUILTIN_TOOL_PATTERN = r'\b(?P<tool_name>\w+)\.call\(query="(?P<query>[^"]*)"\)'
|
BUILTIN_TOOL_PATTERN = r'\b(?P<tool_name>\w+)\.call\(query="(?P<query>[^"]*)"\)'
|
||||||
CUSTOM_TOOL_CALL_PATTERN = re.compile(r"<function=(?P<function_name>[^}]+)>(?P<args>{.*?})")
|
CUSTOM_TOOL_CALL_PATTERN = re.compile(r"<function=(?P<function_name>[^}]+)>(?P<args>{.*?})")
|
||||||
|
|
||||||
|
@ -92,7 +95,15 @@ def parse_python_list_for_function_calls(input_string):
|
||||||
|
|
||||||
# Extract keyword arguments
|
# Extract keyword arguments
|
||||||
for keyword in node.keywords:
|
for keyword in node.keywords:
|
||||||
|
try:
|
||||||
function_args[keyword.arg] = ast.literal_eval(keyword.value)
|
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))
|
result.append((function_name, function_args))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue