Providers 与能力矩阵
Cognitive 把下列概念分开:
- Provider:OpenAI、Anthropic、Gemini、MiniMax 等
- Model:某个 provider 下的具体模型名
- Policy:运行时门禁策略(校验、审计、structured 输出策略)
本页说明 provider 之间最常见的差异点,以及 Cognitive 如何把行为“协议化”到一致。
快速检查
用 npx cogn@2.2.12 providers 查看当前环境能力:
npx cogn@2.2.12 providers
典型字段:
structured:是否支持 provider 原生的 JSON Schema 风格结构化输出streaming:是否支持流式输出default_model:未指定--model时的默认模型
Structured 输出策略
不同 provider 对 JSON Schema 子集支持不一致。 为了让 v2.2 envelope 在协议层稳定,Cognitive 提供统一开关:
npx cogn@2.2.12 run <module> --args "..." --structured auto|off|prompt|native
含义:
auto:优先 native,若不支持则用 prompt;且在 schema 不兼容时允许一次native -> prompt降级(更稳定)native:优先使用原生 JSON Schema enforcement(更接近 provider 原生能力);当 provider 不支持 JSON Schema 原生或方言不是 JSON Schema 时会安全降级到prompt,避免 400;当 provider 因 schema 子集不兼容而拒绝时,会尝试一次native -> prompt(更好的 UX)prompt:不发送原生 schema,只用提示词让模型返回 JSONoff:不在 provider 层做 structured 强约束(调试用)
推荐默认值:
- 除非你在排查 provider 的 schema 兼容性,否则用
auto
运行时如何解释“降级”
每次运行的最终决定会写入 v2.2 envelope 的 meta.policy.structured,用于诊断 provider 差异:
requested:用户请求值(auto|native|prompt|off)resolved:运行时计划采用的策略applied:实际采用的策略(包含重试/降级后的最终值)downgraded:applied != resolved时为truefallback.attempted:是否发生过一次native -> prompt的重试fallback.reason:发生重试时的简短原因provider.*:provider 能力快照(用于解释为什么会计划/降级)
Provider 备注
Gemini
Gemini 可能拒绝其他 provider 常见的 JSON Schema 关键词。
如果你看到类似 const、布尔枚举、空对象 schema 等错误,建议:
npx cogn@2.2.12 run <module> --args "..." --structured prompt
这样能保持 envelope 合同稳定,同时绕开 provider 原生 schema 的限制。
MiniMax
MiniMax 通常在 prompt JSON 路径下稳定,--structured auto 一般足够。
Streaming 传输
Cognitive 标准化的是事件模型,传输层会因接口而不同:
- HTTP:SSE 更适合浏览器与代理
- CLI:NDJSON 更适合管道与日志回放
协议层要求是:事件可重建最终 v2.2 envelope,且行为在 CLI/HTTP/MCP 间一致。