什么是 ChatModel?

ChatModel 是调用对话式语言模型的应用层抽象,通过结构化消息、标准化参数、可选流式输出、工具调用支持和供应商无关的响应处理来封装模型调用。

工作原理

ChatModel 是 AI 应用编排和具体模型供应商 API 之间的边界。它避免每个工作流都直接理解 OpenAI 兼容接口、Claude 风格消息、本地模型运行时、重试行为或流式分片格式等细节,而是提供一个稳定契约来发送聊天消息并接收模型输出。设计良好的 ChatModel 抽象应当让模型替换、降级、测试、追踪和策略执行都不需要重写应用其他部分。

主要特点

  • 面向消息的接口:处理结构化聊天角色,而不是直接拼接原始文本
  • 供应商归一化:隐藏请求字段、响应对象、流式分片和错误结构差异
  • 能力表面:可暴露工具调用、JSON 或结构化输出、多模态输入、token 统计和流式能力
  • 运行边界:为超时、重试、降级、限流和追踪策略提供统一施加位置
  • 可测试性:允许用确定性 mock 和 fixture 测试依赖非确定性模型输出的工作流

常见用途

  1. 在云端 LLM 和本地模型之间切换,而不改变编排代码
  2. 把模型调用注入 Chain、Graph、Workflow 或 Agent 运行时
  3. 在统一层捕获 token 用量、延迟、请求 ID 和模型错误
  4. 用模拟模型响应测试 RAG 和工具调用流程
  5. 当主模型供应商失败或超过成本限制时执行模型降级

示例

loading...
Loading code...

常见问题

ChatModel 和 LLM 是一回事吗?

不是。LLM 是底层模型,ChatModel 是应用调用对话式模型时使用的接口。同一个 ChatModel 抽象可以封装不同供应商、不同版本或不同部署方式的模型。

为什么不直接调用模型供应商 SDK?

小实验中直接调用 SDK 可以接受,但生产系统更需要稳定边界。ChatModel 抽象可以集中处理重试、超时、流式输出、追踪、降级、测试和供应商差异归一化。

生产级 ChatModel 应该暴露哪些信息?

至少应暴露消息输入、模型选项、响应内容、错误和供应商元数据。根据应用需要,还可以暴露流式分片、工具调用请求、token 用量、结构化输出校验和安全信息。

ChatModel 可以被 mock 吗?

可以。把 ChatModel 定义为接口的重要原因之一,就是测试时可以用确定性 fixture 替换真实模型。这样可以在不支付模型调用成本、也不依赖非确定性响应的情况下评估编排逻辑。

相关工具

相关术语

相关文章