docs(skill): 适配模板动态生成机制入技能——request_example驱动(t2v无媒体/i2v才带image_file)+干跑自检+旧骨架自愈重建+查询模板供应商级复用;模板渲染失败禁找用户确认方案,修正规格重extract即可
This commit is contained in:
parent
983345a1e2
commit
9aec966fa2
@ -26,7 +26,8 @@ tools: [fetch_model_doc, extract_llm_api_spec, apply_llm_config, apply_model_pri
|
||||
4. **落库**:`apply_llm_config` 传 **{"use_last_extract": true}**——取本会话锚定规格。
|
||||
用户要求改名等只加 overrides 白名单覆盖项(如 {"overrides":{"vendor_name":"阿里云百炼"}})。
|
||||
**绝对禁止把规格 JSON 复制/转述进 spec 参数——转述必编造结构(见方法论·防编造)。**
|
||||
幂等:供应商按名复用、模型按 (vendor, vendor_model_id) 复用。
|
||||
幂等:供应商按名复用、模型按 name/vendor_model_id 复用(name 全局唯一键);
|
||||
供应商归属不一致时不改挂,返回 vendor_conflicts 如实转告由用户决策。
|
||||
5. **定价**:`apply_model_pricing` 同样传 **{"use_last_extract": true}**(pricing+doc_url 已锚定)。
|
||||
建定价方案+时序YAML并挂 ppid,出处URL+文档原文写入描述。
|
||||
6. **测试**:`test_model_call(model_name, prompt, params)` 真实调用走完整治理链。
|
||||
@ -56,10 +57,40 @@ tools: [fetch_model_doc, extract_llm_api_spec, apply_llm_config, apply_model_pri
|
||||
- **单位**:价格按文档原文记录,单位如实标注在 description;禁止自行换算——单位是否吻合由上线测试阶段的记账核对验证。
|
||||
- **缓存价**:仅当定价文档明确列出缓存命中价时记录;未列就不配置,禁止从输入价推导缓存价。
|
||||
- **thinking 模式**:开源模型思考/非思考输出价不同且平台计费时无法区分 → 取较高(思考)价兜底,并在 description 注明。
|
||||
- **协议限制**:非 `openai_compat` 的模型,模板会存档但运行时暂不可被产线调用,
|
||||
- **协议限制**:非 `openai_compat`/`dashscope_async` 的模型,模板会存档但运行时暂不可被产线调用,
|
||||
`apply` 返回的 `runtime_note` 必须如实转告用户。
|
||||
- **端点去重**:同供应商已有端点不重复添加(apply 内部已合并,确认时留意新增数)。
|
||||
|
||||
## 适配模板动态生成(2026-09-05 改造——按文档示例生成,不再静态样板硬填)
|
||||
|
||||
**历史教训**:旧 `_default_templates` 对所有生成类能力硬编码
|
||||
`{{ b64media2url(request, params.xxx_file) }}` 骨架——纯文生视频(t2v)没有图片输入,
|
||||
运行时渲染即崩(`'dict object' has no attribute 'xxx_file'`)。i2v 那份能跑全靠手工修。
|
||||
|
||||
**现行机制**(apply_llm_config 落库时自动执行):
|
||||
- 提取层的 `request_example`(文档 cURL/代码示例的完整请求体,逐字照抄)驱动模板生成:
|
||||
- `model` 键 → `{{ model|tojson }}`;`prompt/text` 键 → `{{ prompt|tojson }}`
|
||||
- 示例里是 URL 叶子且结构/键名带媒体线索(first_frame/img_url 等)或能力属输入媒体类
|
||||
(i2v/i2i/v2v) → `{{ b64media2url(request, params.image_file|video_file|audio_file)|tojson }}`
|
||||
- 其他标量 → `{{ params.<键名>|default(<文档示例值>)|tojson }}`(业务参数带文档默认值)
|
||||
- **示例里没有上传媒体就不生成媒体参数**——t2v 模板自然纯文本,i2v 才带 image_file
|
||||
- 响应模板:产物字段路径递归取 `response_example` 里的 URL 字段(如 output.video_url),
|
||||
经 `downloadfile2url` 落地;文档没给响应示例用供应商惯例兜底并在 notes 如实标注
|
||||
- 请求头按文档示例带(DashScope 异步必需 `X-DashScope-Async: enable`,协议兜底自动补)
|
||||
- **落库前干跑渲染自检**(StrictUndefined 模拟运行时命名空间):模板引用运行时拿不到的
|
||||
变量当场拦截,报进 `template_errors`——宁可不建,不埋雷到 test 才崩
|
||||
- 旧骨架模板(含 `__from_doc__`/`__note__`/`xxx_file` 标记)视为不可用,
|
||||
apply 时自动弃用(status=deprecated)并按文档示例重建
|
||||
- 任务查询接口供应商级共用(DashScope 全系生成模型都是 GET /tasks/{task_id}):
|
||||
查询步骤模板按 `{protocol}-query-{path}` 命名复用,多模型共享一份
|
||||
|
||||
**助手注意事项**:
|
||||
- extract 时确保 `request_example`/`response_example`/`request_headers` 逐字提取——
|
||||
它们是模板生成的唯一事实来源,漏提会降级为 request_fields 兜底(无默认值,notes 会警告)
|
||||
- apply 返回的 `template_errors`(干跑失败)/`template_notes`(重建/兜底说明)必须原样转告用户
|
||||
- 模板渲染失败**不要**手工拼模板内容找用户确认方案——修正规格(补 request_example)重新
|
||||
extract→apply 即可,全链幂等;旧坏模板会被自动弃用重建
|
||||
|
||||
## 定价(2026-09-05 新模式:一模型一方案,无 model 维度,无 filters)
|
||||
|
||||
llm_model 的 price_input/price_output/cost_input/cost_output 四字段已删除。
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user