syntaxhacker commited on
Commit
87285c1
·
1 Parent(s): 8630c76

fix XML tool call parser for malformed key-value pairs

Browse files
Files changed (1) hide show
  1. app/main.py +7 -7
app/main.py CHANGED
@@ -21,13 +21,13 @@ def parse_xml_tool_calls(content: str) -> list[dict]:
21
  name = match.group(1)
22
  body = match.group(2).strip()
23
  args = {}
24
- arg_keys = re.findall(r'<longcat_arg_key>(\w+)</longcat_arg_key>', body)
25
- arg_values = re.findall(r'<longcat_arg_value>(.*?)</longcat_arg_value>', body, re.DOTALL)
26
- for i, key in enumerate(arg_keys):
27
- if i < len(arg_values):
28
- args[key] = arg_values[i].strip()
29
- if args or True:
30
- calls.append({"name": name, **args})
31
  return calls
32
 
33
  # Lazy imports to avoid blocking startup
 
21
  name = match.group(1)
22
  body = match.group(2).strip()
23
  args = {}
24
+ pair_pattern = r'<longcat_arg_key>(\w+)</longcat_arg_key>\s*(?:<longcat_arg_value>(.*?)</longcat_arg_value>)?'
25
+ for pair_match in re.finditer(pair_pattern, body, re.DOTALL):
26
+ key = pair_match.group(1)
27
+ value = pair_match.group(2)
28
+ if value is not None:
29
+ args[key] = value.strip()
30
+ calls.append({"name": name, **args})
31
  return calls
32
 
33
  # Lazy imports to avoid blocking startup