langchain-decodo 是面向 Decodo Web Data API 的 Python LangChain 软件包。它为 LangChain 智能体提供六个工具——网页抓取、两种搜索、站点地图和爬取——并附带一个文档加载器,可将网页转换为 LangChain Document 对象,用于 RAG 流程。
源代码和最新版本请参阅 langchain 仓库。使用 Node.js 开发?请参阅 LangChain(TypeScript)。
功能
- 网页抓取:抓取任何 URL,并以 Markdown 格式返回页面内容
- 解析式搜索:Google 搜索和 Amazon 搜索,返回结构化结果
- 网页搜索:搜索网络,返回带标题、链接和描述的排序结果
- 站点地图:列出网站上的 URL,而不获取其内容
- 爬取:爬取网站,并获取找到的每个页面的内容
- 文档加载器:将一个或多个 URL 加载为 LangChain
Document对象,用于 RAG - LangChain 集成:标准的
BaseTool和BaseLoader类,可接入任何智能体或链
要求
- Python 3.10 及以上版本
- Decodo Web Data API 计划。控制面板提供免费试用。
安装
身份验证
从 Web Data API 演练场复制您的 Web Data API 密钥,并将其存储在DECODO_API_TOKEN 环境变量中。软件包中的每个类都从该变量读取密钥:
抓取工具和加载器
DecodoWebScrapeTool、DecodoSearchTool 和 DecodoLoader 支持两种凭据类型,通过 auth_mode 选择。使用 API 密钥时需传入 auth_mode="token":
username:password)。请将其放入 DECODO_API_TOKEN 并省略 auth_mode,因为 "basic" 就是默认值。
您也可以直接传入凭据,而不使用环境变量:两个工具使用 decodo_api_token=,加载器使用 api_token=。
Web Data API 工具
DecodoWebSearchTool、DecodoMapTool、DecodoCrawlTool 和 DecodoCrawlCancelTool 调用的端点仅存在于 data.decodo.com 上,而该主机只接受 API 密钥。这四个工具没有 auth_mode 参数,也无法配合基本身份验证令牌使用。它们从环境变量读取 DECODO_API_TOKEN,或直接接受 decodo_api_token=:
ValueError: A Decodo Web Data API key is required.。如果提供的是基本身份验证令牌,API 会拒绝该请求,并返回错误说明较旧计划的基本身份验证令牌在此处不可用。
快速开始
下面的 LangChain 智能体会搜索网络、挑选一个页面并抓取它。本示例通过langchain-openai 使用 OpenAI,但 LangChain 支持的任何聊天模型都可以:
DecodoWebSearchTool 不接受 auth_mode,而 DecodoWebScrapeTool 需要 auth_mode="token"。两者读取的都是同一个 DECODO_API_TOKEN。
可用工具
这些工具分为两组,区别在于身份验证方式和返回内容:
- 抓取工具:
DecodoWebScrapeTool和DecodoSearchTool。它们通过抓取端点抓取页面或搜索引擎的结果页,并接受两种凭据类型。 - Web Data API 工具:
DecodoWebSearchTool、DecodoMapTool、DecodoCrawlTool和DecodoCrawlCancelTool。每个都有自己的输入结构,且四个都需要 API 密钥。
DecodoLoader 不是工具,而是 LangChain 文档加载器,详见下文的“文档加载器”一节。
您也可以不经智能体直接调用任何工具:
抓取工具
DecodoWebScrapeTool
接受单个 url,必须包含 http:// 或 https://。它会调用 universal 目标并设置 markdown: true,以 Markdown 字符串的形式返回页面。当 API 没有返回内容时,该工具不会抛出异常,而是返回字符串 (No content returned by Decodo API)。
DecodoSearchTool
接受以下输入:
它始终发送
parse: true,并返回一个 JSON 字符串:一个列表,每个结果对应一个条目,包含 content、status_code 和 url。解析后的结果位于 content 中,例如 Google 自然搜索结果在 content.results.results.organic。
如果搜索失败,该工具会抛出带有状态码的 RuntimeError。失败的搜索可能以 HTTP 200 的形式从 API 返回,因此抛出异常可以让智能体重试,而不是将其视为“没有结果”。
请在每次调用时传入
engine,如上面的示例所示。在创建工具时设置(DecodoSearchTool(engine="amazon"))不会生效,搜索仍会发送到 Google。工具无法识别的
engine 值不会被拒绝,而是回退到 Google。num_results 并不限制返回的结果数量。即使将 num_results 设置为 3,Google 搜索仍会返回第一页的全部自然搜索结果。Web Data API 工具
DecodoWebSearchTool
搜索网络并返回一份规范化的结果文档,而不像 DecodoSearchTool 那样抓取特定引擎的结果页。
返回一个 JSON 字符串。排序后的结果位于
organic 之下,每条包含标题、链接和描述;当搜索包含相应内容时,还会有 top_stories、people_also_ask 和 related_searches。若要读取某条结果,请用 decodo_scrape_url 抓取它的链接。
当 API 报告搜索失败时,会抛出 RuntimeError: Decodo search failed: ...。
DecodoMapTool
列出网站上的 URL 而不获取其内容——适合在只抓取所需页面之前,先缩小大型网站的范围。
DecodoMapTool 和 DecodoCrawlTool 都从一个 URL 开始并由此发现页面,因此共用以下输入:
DecodoMapTool 另外增加:
RuntimeError: Decodo map failed (status ...)。
DecodoCrawlTool
从起始 URL 爬取网站,并返回找到的每个页面的内容。除上述共用的站点发现输入外,还接受:
与其他工具不同,它还接受两个控制等待时长的构造函数参数:
爬取行为
该工具会等待爬取完成,然后返回形如{"status": {...}, "pages": [...]} 的 JSON 字符串。status 是爬取任务的状态响应,其中包含 crawl_id;pages 中的每个条目都是 API 返回的页面,带有各自的状态。
当无法读取状态时——例如爬取完全没有收集到页面——status 为 null。
timeout 还会作为爬取任务的 max_duration 发送给 API,并以 API 的四小时上限为限,因此 Decodo 会停止该工具已不再等待的爬取任务。timeout 用尽时仍在运行的爬取会以 pending 返回,并附带已收集的页面,Decodo 随后会在同一上限处停止它。若要更早停止,请将 status.crawl_id 传给 DecodoCrawlCancelTool。
DecodoCrawlCancelTool
停止正在运行的爬取任务,使其不再爬取更多页面。
DecodoCrawlTool 一同注册,让智能体能够停止自己已不再等待的爬取任务。任何不是爬取任务 ID 的值都会在发送请求之前抛出 ValueError: Not a crawl id: ...。
文档加载器
DecodoLoader 抓取一个或多个 URL,并将每个页面作为 LangChain Document 返回,可直接用于切分、嵌入并存入 RAG 流程:
Document 都在 page_content 中以 Markdown 保存页面内容。其 metadata 包含 source、url 和 status_code;当 API 返回时,还会包含 task_id、created_at 和 updated_at。URL 会按顺序逐个抓取。使用 load() 获取包含全部文档的列表,或使用 lazy_load() 在文档到达时逐个处理。
启用
continue_on_error 时,失败的 URL 仍会生成一个 Document,其 page_content 为空,错误信息位于 metadata["error"]。请在嵌入之前将其过滤掉。若要在首次失败时抛出异常,请设置 continue_on_error=False。
错误处理
对于 API 错误、超时和网络故障,每个工具都会抛出RuntimeError,消息前缀会说明出了什么问题,例如 Decodo API error: ... 或 Decodo API network error: ...。四个 Web Data API 工具在响应不是 JSON 时也会抛出该异常。
有两种情况会在发送请求之前抛出 ValueError:缺少 API 密钥,以及 crawl_id 不是有效的爬取任务 ID。
四个 Web Data API 工具之一发生身份验证失败时,返回的错误会指出可能的原因——密钥无效、计划不包含该端点,或在只能使用 API 密钥的地方使用了基本身份验证令牌。
相关内容
- LangChain(TypeScript):Node.js 版 LangChain 工具。
- MCP 服务器:将 AI 智能体和兼容 MCP 的工具连接到 Decodo。
- AI 集成:Decodo 的全部 AI 集成。
- GitHub 仓库:查看源代码和最新版本。
支持
需要帮助或只是想打个招呼?我们的支持团队全天候为您服务。
您也可以随时通过电子邮件 support@decodo.com 联系我们。
您也可以随时通过电子邮件 support@decodo.com 联系我们。
反馈
找不到您要找的内容?请求一篇文章!
有反馈意见?分享您对我们如何改进的想法。
有反馈意见?分享您对我们如何改进的想法。