fix(platform): 文档示例为int/float的参数模板加|int/|float强转——表单/agent传字符串数字(如duration='5')tojson出带引号字符串被DashScope拒InvalidParameter(2026-09-06真实调用实抓);bool是int子类须先排除避免UI真值语义被改写

This commit is contained in:
yumoqing 2026-09-06 21:23:50 +08:00
parent 03d1e13ebd
commit 7a8a798e71

View File

@ -1165,8 +1165,21 @@ def _tpl_from_example(example, capability):
if v == '' or v is None:
out[k] = _put('{{ params.%s|tojson }}' % k) # 无示例值:调用必传
else:
out[k] = _put('{{ params.%s|default(%s)|tojson }}'
% (k, json.dumps(v, ensure_ascii=False)))
# 数值强转2026-09-06 真实调用实抓wan3.0 零媒体 t2v 提交
# 报 InvalidParameter "Input should be a valid integer:
# parameters.duration"——params 来自表单/agent 时常为字符串 "5"
# 直接 tojson 出 "5"(带引号)被 API 拒。文档示例是 int/float 的
# 参数按示例类型强转,字符串数字也能落到正确 JSON 类型。
# bool 是 int 子类须先排除bool 不加 |int避免 UI 真值语义被改写)。
coerce = ''
if isinstance(v, bool):
pass
elif isinstance(v, int):
coerce = '|int'
elif isinstance(v, float):
coerce = '|float'
out[k] = _put('{{ (params.%s|default(%s))%s|tojson }}'
% (k, json.dumps(v, ensure_ascii=False), coerce))
return out
body = walk(tree)