fix: XML parameter 支持 string="true" 类型属性

This commit is contained in:
p 2026-08-14 11:11:01 +08:00
parent 6c878a2abf
commit 81cc0b3344

View File

@ -467,13 +467,13 @@ def _parse_agent_action(raw):
if raw.startswith("```"):
raw = raw.split("\n", 1)[1].rsplit("```", 1)[0].strip()
# deepseek 原生 function calling 输出 XML:<tool_calls><invoke name="..."><parameter name="...">...</parameter></invoke></tool_calls>
m = re.search(r'<invoke\s+name="([^"]+)"\s*>(.*?)</invoke>', raw, re.DOTALL)
# deepseek 原生 function calling 输出 XML:<tool_calls><invoke name="..."><parameter name="..." string="true">...</parameter></invoke></tool_calls>
m = re.search(r'<invoke\s+name="([^"]+)"[^>]*>(.*?)</invoke>', raw, re.DOTALL)
if m:
tool = m.group(1).strip()
body = m.group(2)
params = {}
for pm in re.finditer(r'<parameter\s+name="([^"]+)"\s*>(.*?)</parameter>', body, re.DOTALL):
for pm in re.finditer(r'<parameter\s+name="([^"]+)"[^>]*>(.*?)</parameter>', body, re.DOTALL):
val = pm.group(2).strip()
try:
val = json.loads(val)