fix(platform): 文档示例为int/float的参数模板加|int/|float强转——表单/agent传字符串数字(如duration='5')tojson出带引号字符串被DashScope拒InvalidParameter(2026-09-06真实调用实抓);bool是int子类须先排除避免UI真值语义被改写
This commit is contained in:
parent
03d1e13ebd
commit
7a8a798e71
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user