学习笔记 · Obsidian

Chat 模型:其他云、本地与测试

LangChainTypeScript

能力矩阵

“I/A/V”依次为图片、音频、视频输入。— 表示组件页没有标准 feature table,不能按空白推断支持或不支持。

类 / 包认证ToolStructuredI/A/VStreamUsage / Logprobs备注
ChatBaiduQianfan / @langchain/baidu-qianfanQianfan access + secret key———文档示例支持—旧格式页面;ERNIE-Bot-turbo 标为 abandoned
ChatCerebras / @langchain/cerebrasCEREBRAS_API_KEY✅✅❌/❌/❌✅✅/❌不可序列化
ChatCloudflareWorkersAI / @langchain/cloudflareaccount id + API token❌❌✅/❌/❌✅❌/❌可配置 AI Gateway base URL;模型级多模态需核验
ChatDeepSeek / @langchain/deepseekDEEPSEEK_API_KEY✅✅❌/❌/❌✅✅/✅serializable 标为 beta
FakeListChatModel / @langchain/core/utils/testing无———可模拟—有序固定响应、stream 与延迟测试;禁止作为运行时 fallback
ChatFireworks / @langchain/fireworksFIREWORKS_API_KEY✅✅❌/❌/❌✅✅/✅模型清单和能力由托管模型决定
ChatGroq / @langchain/groqGROQ_API_KEY✅✅❌/❌/❌✅✅/✅不可序列化
ChatOllama / @langchain/ollama本地 daemon,无 API key✅✅✅/❌/❌✅✅/❌serializable beta;需先拉取模型;模型能力差异大
ChatPerplexity / @langchain/perplexityPERPLEXITY_API_KEY❌*✅❌/❌/❌✅✅/❌serializable beta;可切 Agent/Responses API
ChatTogetherAI / @langchain/together-aiTOGETHER_AI_API_KEY✅✅✅/✅/✅✅✅/✅实际能力取决于所选开源模型
ChatXAI / @langchain/xaiXAI_API_KEY✅✅❌/❌/❌✅✅/✅serializable
ChatYandexGPT / @langchain/yandex/chat_modelsYC_IAM_TOKEN 或 YC_API_KEY—————旧格式页面,无标准能力声明

\* Perplexity 的标准矩阵把普通 tool calling 标为否,但 Agent API 可绑定 provider built-in tools,并把返回的 tool call 放进标准字段。这是 endpoint-specific 能力,不等于任意 LangChain tool schema 都被支持。

初始化要点

  • Baidu 通过 constructor 传 qianfanAccessKey、qianfanSecretKey 和 model;文档列出多种 ERNIE 型号,但上线前应从服务端重新获取当前可用清单。
  • Cerebras、DeepSeek、Fireworks、Groq、TogetherAI 与 xAI 都是独立 provider 包;不要因为 API 形态相似而统一走 ChatOpenAI,否则会丢失 provider metadata 和能力约束。
  • Cloudflare Chat wrapper 的示例通过 account id/token 调 Workers AI,可选 AI Gateway base URL。与 Cloudflare embedding 的 Worker binding 模式不同。
  • Ollama 依赖本地服务和已下载模型;把 base URL、模型 digest、GPU/CPU 配置和并发上限视为部署配置。
  • Yandex 需要具有 ai.languageModels.user 角色的 service account,再选 IAM token 或 API key。

Perplexity 的双端点

ChatPerplexity 的 useResponsesApi 有三种语义:

值路由
未设置普通请求走 Chat Completions;出现 built-in tool 或 Responses-only 字段时自动走 Agent API
true始终走 Agent API
false始终走 Chat Completions

Agent API 提供 web search、fetch URL、finance search、people search,以及 previousResponseId 等状态字段;原始 output items 位于 provider-specific metadata。生产代码要记录实际 endpoint,并避免在自动检测切换后悄悄改变数据出口、计费或保留策略。

Fake 模型的测试价值

FakeListChatModel 能按顺序返回预设响应、模拟 stream 和 sleep 延迟。它适合验证:

  • chain 编排与输出 parser;
  • streaming 拼接和 client cancellation;
  • timeout、loading 与重试 UI;
  • 不依赖外部 API 的确定性单测。

它不模拟 token usage、provider 限流、工具 schema 差异或真实多模态,不能替代外部 contract test;生产配置应 fail closed,不能在 provider 故障时自动切 Fake 并向用户返回伪结果。

本地 Ollama 的生产边界

  • 本地不等于安全:服务端口需要网络隔离和认证边界,不能直接暴露公网。
  • 模型 tag 可移动,发布应固定模型文件/digest,并验证上下文长度、tool schema、视觉能力和量化精度。
  • 预热、显存、并发队列、冷加载、OOM 与 eviction 都需监控;LangChain 的 maxRetries 不能解决容量不足。
  • withStructuredOutput() 仍需应用侧 schema 校验;不同 Ollama 模型对工具和 JSON 的遵循度不同。

上线门禁

对没有标准 feature table 的 Baidu/Yandex 路由,只把文档明确展示的调用或 streaming 当已知能力。对聚合托管平台和 Ollama,按精确模型 ID 单独维护 capability profile;禁止把 wrapper 的勾选扩展为整个 provider 的 SLA。