快速结论:该报错通常出现在自建 LangChain 网页抓取 Loader/Tool 时,调用 r.json() 但目标网站(如 Cloudflare 防护页面)返回了 HTML 或非 JSON 内容。优先在 r.json() 外层增加 try/except ValueError 并回退到 r.text,同时为 requests.post 设置 timeout,避免抓取请求长时间阻塞 Agent 循环。
适用环境:LangChain 自定义 BaseTool / Loader;Python 环境;依赖为 requests、langchain-core。Issue 中未确认具体操作系统、CUDA、显卡等硬件信息。
最快修复方案:暂无确认的一步修复方案。可优先尝试在 Loader 的 load() 方法中使用评论中给出的包装方式:先 r.raise_for_status(),再用 try/except ValueError 包裹 r.json(),失败时回退为 r.text,并设置默认 timeout=30。
注意事项:该方案来自 Issue 讨论中的建议,未经过官方集成验证;LangChain 官方已明确不再接受额外集成到 monorepo,需要自行发布 PyPI 包。Cloudflare 防护页面首次渲染较慢,可能需要把超时调整到 45–60 秒;抓取内容应在 metadata 中标记 trust_level: "untrusted",避免下游将外部抓取内容等同于内部数据。
问题场景
用户在 LangChain Agent 或研究链中使用自定义网页抓取 Loader/Tool(例如访问 LinkedIn、Amazon、政府页面等 Cloudflare 防护站点)时,调用 requests.post(...).json() 解析响应。如果目标站点返回的不是 JSON(例如 Cloudflare 返回 HTML 错误块),代码会抛出 ValueError,导致抓取任务失败,甚至可能让整个 Agent 循环中断。
报错原文
ValueError: content = r.text # fallback if response isn't valid JSON
原因分析
可能原因:requests 的 response.json() 要求响应体必须是合法 JSON;当目标站点受到 Cloudflare 保护或返回非 200 错误页时,响应体通常是 HTML 或纯文本,此时 r.json() 会抛出 ValueError。另外,若请求没有设置 timeout,慢速站点可能让抓取请求无限挂起,阻塞整个 Agent 执行。
环境排查
- 确认 Python 版本以及
requests库是否已安装。 - 确认是否使用
langchain-core中的Document类。 - 确认目标 URL 是否确实返回 non-JSON 内容(可在浏览器 DevTools 或 curl 中查看响应头与正文)。
- 如使用 API Key,确认请求头中
Authorization是否正确设置。 - 确认当前 LangChain 版本是否已停止接受新的社区工具集成(该 Issue 已标记 external,官方建议另建仓库并通过 PyPI 分发)。
解决步骤
- 在自定义 Loader/Tool 的请求处理中,先调用
r.raise_for_status()显式检查 HTTP 状态码。 - 使用
try/except ValueError包裹r.json(),捕获解析失败后回退到r.text:try: data = r.json() content = data.get("markdown", "") except ValueError: content = r.text # fallback if response isn't valid JSON - 为
requests.post增加timeout参数,默认可设置为 30 秒;遇到 Cloudflare 防护页面可适当提高到 45–60 秒。 - 同时捕获
requests.exceptions.Timeout和requests.exceptions.RequestException,避免未处理异常中断 Agent 循环。 - 在返回的
Document.metadata中加入"trust_level": "untrusted",标识外部抓取内容不可直接信任。 - 如果打算将工具发布给他人使用,不要提交到 LangChain 主仓库,而是创建独立仓库并发布到 PyPI。
验证方法
用受 Cloudflare 保护的测试 URL 调用自定义 Loader,确认不再抛出 ValueError,而是返回 markdown 或原始响应文本;再模拟慢速站点或超时场景,确认返回超时错误信息,且 Agent 循环不会被阻塞。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。

![[Agent v2]pydantic_core._pydantic_core.ValidationError: 3 validation errors for AgentSoulConfig](https://www.chat-gpts.plus/wp-content/uploads/2026/08/38354-97620399-768x403.jpg)
