快速结论:该问题发生在 LangChain 的 langchain-deepseek 集成中,当调用 bind_tools(strict=True) 或 with_structured_output(strict=True) 时,请求并未按预期发送到 DeepSeek 的 beta 端点,导致 schema 校验不生效。优先排查 LangChain 核心代码中 model_copy 是否未重新触发 Pydantic 校验器,从而保留了指向默认 /v1 端点的旧客户端。
适用环境:langchain-deepseek 集成包;涉及 ChatDeepSeek 模型、Pydantic v2 的 model_copy 机制及 OpenAI 客户端实例。Issue 中未明确操作系统、Python 版本、CUDA 或显卡信息,不做补充。
最快修复方案:暂无确认的一步修复方案。Issue 中提出了一个完整的修复 PR(#40034),核心思路是:在 bind_tools 和 with_structured_output 的 strict 模式分支中,复制模型后需手动清空四个客户端字段(root_client、root_async_client、client、async_client)并重新运行 validate_environment(),使客户端基于 beta base URL 重新构建。此 PR 尚未被合并。
注意事项:该修复方案尚未合并到主分支,属于待验证状态。用户需等待官方 PR 合入或自行应用补丁测试。此外,DeepSeek 官方 API 存在一个上游问题(deepseek-ai/DeepSeek-V3#1069),返回的 function.arguments 可能格式错误,修复路由后此问题会暴露而非隐藏。
问题场景
用户在使用 ChatDeepSeek 进行 function calling 或结构化输出时,通过 bind_tools(strict=True) 或 with_structured_output(strict=True) 开启严格模式。该模式的目的在于让 DeepSeek 的 beta 端点运行其 schema 校验,但实际请求却被发送到了普通的 /v1 端点,导致 strict 模式逻辑并未真正生效。
报错原文
[langchain-deepseek] `strict=True` never reaches the beta endpoint, so DeepSeek's schema validation never runs
原因分析
根本原因在于 model_copy(update={"api_base": DEFAULT_BETA_API_BASE}) 的使用方式。Pydantic v2 的 model_copy 不会重新运行 model_validator(mode="after") 钩子,因此 ChatDeepSeek 中缓存的 OpenAI 客户端实例(client、async_client、root_client、root_async_client)会携带原始引用被复制,这些客户端的 base_url 仍然指向默认的 /v1 端点。代码虽然更新了 api_base 字段,但实际发出请求的客户端逻辑对象并未随之构建新的连接。
同时,validate_environment 内部用 if not (self.client or None) 守卫客户端构建逻辑,这意味着即使在复制体上强制重新运行校验器,由于客户端已存在(被引用复制而来),校验器也会跳过构建步骤。
环境排查
- 确认使用的
langchain-deepseek包版本(需检查是否包含修复 PR #40034 的提交)。 - 确认 Pydantic 版本为 v2(
model_copy的新行为特性)。 - 确认 DeepSeek 官方 API 端点配置逻辑(/v1 与 /beta 切换)相关代码位置在
langchain_deepseek/chat_models.py中。
解决步骤
- 检查当前安装的
langchain-deepseek是否已包含 PR #40034 的修复内容。可在本地 Python 环境中输入以下命令确认客户端是否重建:直接查看chat_models.py中是否引入了用于清空客户端字段并重新构建的辅助函数(如_with_beta_endpoint())。 - 若未修复,可优先尝试应用 PR #40034 的补丁方案:在 strict 模式切换时,复制模型后手动将
root_client、root_async_client、client、async_client四个字段设为None,然后调用validate_environment()使其基于 beta base URL 重建客户端。 - 确保自定义
api_base不会进入该切换分支,以免第三方 DeepSeek 兼容端点受影响。 - 等待并关注官方 Issue #40031 与 PR #40034 的合并进展,使用官方发布的修复版本。
验证方法
使用 Issue 中提供的本地 HTTP 服务器复现脚本(无需 DeepSeek 账号或网络访问)可以验证请求实际路径。修复前请求会到达 /v1/chat/completions,修复后应到达 /beta/chat/completions。确认请求正确到达 beta 端点,即说明 strict 模式路由问题解决。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


