Skip to content
目录

语言模型抽象层设计

模型层把各厂商 API 收敛为 BaseLanguageModel / BaseChatModel,统一 invoke、stream、token 计数、工具绑定、结构化输出


1. 继承层次(概念)

类型典型 API
BaseLLM字符串进字符串出(legacy)
BaseChatModelBaseMessage[]AIMessage
厂商子类OpenAI、Anthropic 等

新应用以 ChatModel 为主。


2. 输入输出

  • 输入BaseMessage[] 或 PromptValue。
  • 输出AIMessage(含 content 字符串或 多模态 content 块)。
  • Generation:底层可含多条 candidate、logprobs 等(视厂商)。

3. Token 与计费

  • getNumTokens / callback 上报 usage。
  • 长上下文模型需在应用层做 截断、摘要(非 core 自动完成)。

4. 结构化输出

方式说明
withStructuredOutput(zodSchema)约束 JSON 形态
Tool calling模型选工具,参数即结构化
JSON mode厂商原生 JSON 开关

失败时重试或 fallback parser 由应用策略决定。


5. ChatModel 扩展

  • bindTools:挂载 Tool 定义,模型返回 tool_calls
  • bind:固定 temperature、model 名等。
  • 缓存:相同输入可命中 BaseCache(可选)。

6. 提供商包

@langchain/* 实现:鉴权、请求体映射、流式 SSE 解析、错误码转换。
换厂商 = 换 Runnable 实例,链结构可不变。


7. 错误处理

区分 可重试(429、5xx)与 不可重试(401、invalid request);在 Runnable 或模型配置层设 retry。


8. 总结

模型层职责:把厂商差异藏在 ChatModel 子类里,对上只暴露 Message 与 Runnable 契约。

MIT License.