返回博客

LangChain 替代方案:为网络数据选择代理框架

Daniel Kim
Daniel Kim

Lead Scraping Automation Engineer

30-Sep-2026

TL;DR:

  • 一个 LangChain 替代品应该匹配你需要替换的责任。 经过类型化的代理控制、检索和组件编排是不同的工作。
  • PydanticAI、LlamaIndex 和 Haystack 适合不同的应用形状。 比较你能解释和维护的数据流,而不是最长的集成列表。
  • Scrapeless MCP 为框架提供了网络工具。 它并不替换框架的推理或检索层。
  • 真正的工具握手与代理答案分开。 该示例附加了一个发现的、有命名空间的工具,但并不声称进行模型运行。
  • 免费开始。 新的 Scrapeless 账户包括免费的 Scraping Browser 运行时间 — 在 app.scrapeless.com 注册。

介绍:在替换框架之前命名层

一个代理框架连接模型调用、工具和应用状态。检索框架组织文档和搜索。工作流层在组件之间路由执行。应用可以使用所有这些责任,但替换一个并不会自动替换其他。

考虑 LangChain 替代品的团队应该首先开始简化他们需要的代码。困难是经过类型化的工具合同、文档摄取、检索评估,还是分支管道?答案为比较提供了有用的边界。

本指南比较 PydanticAI、LlamaIndex 和 Haystack 以用于网络数据应用,然后将 PydanticAI 连接到一个真实的 Scrapeless MCP 流程。如果现有应用已适合其框架,带有 Scrapeless MCP 的 LangChain 可能比完全迁移要小得多的变化。

每个替代品强调什么责任?

PydanticAI 强调经过类型化的代理构建,LlamaIndex 强调数据和检索工作流,而 Haystack 强调组件管道。这些是主要的适配判断,而不是声称一个工具在其强调之外缺乏每项能力。

选项 良好的起始问题 用于测试的应用问题
PydanticAI 具有窄工具集的经过类型化的 Python 代理 工具和输出合同可以保持明确吗?
LlamaIndex 以文档摄取和检索为中心的应用 来源身份能在摄取和检索中存活吗?
Haystack 用于检索和生成的可见组件管道 每个组件的输入/输出能否单独评估?
现有框架 有一个缺失数据源的工作应用 添加一个工具是否比迁移更便宜和安全?

PydanticAI 和 LlamaIndex 为其核心库发布 MIT 许可证;Haystack 发布 Apache-2.0。托管服务和可选集成可能有单独的条款和费用。核心许可标签并不定价完整部署的应用程序。

PydanticAI:保持代理边界的类型化

当应用希望在 Python 中保持类型化的依赖关系、工具曝光和输出合同时,PydanticAI 是一个合适的起点。当前的 PydanticAI MCP 客户端集成 使用可以附加到代理的 MCP 工具集。

当代理的任务是特定时,窄工具集是有价值的。一个文档检索助手不需要每个可用的集合和自动化操作。在附加之前过滤所发现的工具定义减少了模型可以选择的操作。

经过类型化的输出有助于检查答案的形状,但并不能证明答案是基于当前网页证据的。保持捕获和接受检查在模型决策之外,以便它们可以确定性地拒绝不支持的输出。

LlamaIndex:围绕文档组织检索

当文档摄取、索引和检索主导应用时,LlamaIndex 是一个合适的选择。框架的数据焦点使文档生命周期成为一个有用的评估点:源标识符、元数据、节点关系和检索行为在代理编排之前值得关注。

迁移到以检索为导向的框架应保留应用已经持有的源证据。数据来源关系 将检索到的段落连接到提供它的捕获文档。不要让便利加载器剥离解释结果所需的 URL、文档版本或章节标题。嵌入文本仅是该合同的一部分。

当 LlamaIndex 的摄取和检索抽象适合你的语料库时选择它。如果工作负载是一个工具调用后跟一个经过类型化的答案,请测试在采用它之前,是否需要额外的检索结构。

Haystack:暴露组件管道

当一个团队希望将检索和生成阶段表示为明确的管道组件时,Haystack是合适的选择。这使得组件边界成为评估单元:收集器、检索器或排序器的输出可以独立于最终生成的答案进行检查。

管道可见性对可重复的应用程序流程非常有用。在内容到达生成器之前,仍然需要定义接受的源记录和权限边界。返回空结果的组件应区分合法的无匹配检索与缺失或失败的源获取。

当组件图反映您期望维护的应用程序时,选择Haystack。当执行简单且文档检索是附带时,较小的类型代理可能更可取。

开始使用Scrapeless抓取

使用Scrapeless增强您的网页抓取和自动化工作流程!
今天注册,获得5美元的免费积分——无需信用卡。

立即在Scrapeless仪表板领取您的免费积分。

Scrapeless MCP在技术栈中适合在哪里?

Scrapeless MCP提供一个可以附加到兼容框架的网页数据工具表面。Scrapeless的代理网页工具提供获取能力;代理或管道决定何时使用允许的工具以及如何处理其接受的输出。

MCP将工具发现与工具执行分开。MCP工具协议定义工具名称、模式和调用。列出一个工具表明服务器公开了一个契约;它并不能证明凭证可以访问远程目标,或模型将正确选择工具。

对于网页文档助手,首先公开一个Markdown捕获工具。只有在任务实际需要时,才能考虑更广泛的搜索和浏览器操作。如果其他服务器稍后提供类似名称的工具,则前缀可使应用程序面临的名称易于识别。

实际本地框架握手的先决条件

使用Python 3.12、Node.js、pydantic-ai-slim 2.52.0(带MCP支持)、fastmcp-slim 4.0.10和scrapeless-mcp-server 0.6.3。通过当前的Scrapeless MCP传输合同配置服务器。

进行身份验证的网页捕获需要真实的SCRAPELESS_KEY。生成代理答案需要配置的模型提供程序及其密钥。未凭证的情况下,这些步骤仍然待定实时验证;本地示例均不执行。

明显的值metadata-discovery-only仅用于让本地服务器公开工具元数据。它不是有效的服务凭证。不会尝试用它进行工具调用。

在一次性项目中安装确切的集成包:

bash Copy
python -m pip install 'pydantic-ai-slim[mcp]==2.52.0' fastmcp-slim==4.0.10
pnpm add scrapeless-mcp-server@0.6.3

将发现的工具附加到工作代理对象

当真实服务器的工具可以被发现、过滤、命名并附加到代理对象时,框架握手完成。这是在本示例中的承载步骤。

将以下完整脚本保存为pydantic_mcp.py。使用您的真实密钥或上述描述的本地发现值运行它。引导程序在导入服务器之前禁止普通控制台日志记录,使协议输出对stdio客户端可用。

python Copy
import asyncio
import json
import os
from pathlib import Path
from fastmcp.client.transports import StdioTransport
from pydantic_ai import Agent, RunContext
from pydantic_ai.mcp import MCPToolset
from pydantic_ai.models.test import TestModel
from pydantic_ai.usage import RunUsage

async def main():
    transport = StdioTransport(
        command='node',
        args=['--input-type=module', '-e',
              'console.log = () => {}; await import(process.argv[1]);',
              str(Path('node_modules/scrapeless-mcp-server/build/index.js').resolve())],
        env={**os.environ, 'SCRAPELESS_KEY': os.environ['SCRAPELESS_KEY']})
    mcp = MCPToolset(transport, tool_error_behavior='error')
    selected = mcp.filtered(lambda ctx, tool: tool.name == 'scrape_markdown')
    exposed = selected.prefixed('scrapeless')
    agent = Agent(toolsets=[exposed])
    async with agent:
        raw = await mcp.list_tools()
        # TestModel supplies only a local context; no generation is executed.
        context = RunContext(deps=None, model=TestModel(), usage=RunUsage(),
                             agent=agent, prompt='local tool registration check')
        tools = await exposed.get_tools(context)
        assert sorted(tools) == ['scrapeless_scrape_markdown']
        assert any(t.name == 'scrape_markdown' for t in raw)
        print(json.dumps({'discovered_tools': len(raw),
                          'agent_tools': sorted(tools), 'agent_constructed': True,
                          'model_executed': False, 'remote_capture_executed': False}))

asyncio.run(main())

执行的握手发现了25个服务器工具,并准确向代理暴露了scrapeless_scrape_markdown。代理成功构建,并通过异步上下文关闭了传输。服务器计数特定于版本;断言保护了应用程序的单工具曝光合同。

TestModel提供了检查附加工具集所需的本地上下文。未执行模型生成,未伪造答案,也没有捕获远程页面。打印的布尔值明确了这些边界。

对于经过身份验证的模型运行,在代理上配置模型,用真实服务密钥替换发现值,并请求一个获得批准的公共URL。一条有用的指令是:“使用允许的Scrapeless Markdown工具捕获此批准的公共文档,报告其源URL,并在返回的内容不是预期文档时停止。”在接受最终答案之前,检查实际的工具参数和结果。

在应用边界比较迁移成本

一个有用的迁移评估衡量了应用程序的责任变化。框架切换可以保持相同的获取和证据层,因此没有理由仅仅为了重命名代理类而重写收集器。

边界 在迁移中保留 迁移后评估
工具注册 允许的操作和参数合同 发现的名称和前缀行为
源接受 批准的 URL 和预期内容检查 缺失、被阻止和有效空状态
检索语料库 文档身份和版本元数据 检索的证据和源关系
模型输出 必需字段和接受规则 不支持的断言和工具使用行为
操作 日志、成本核算和访问范围 变化的部署或依赖责任

JSON 语法 是一种传输合同,而不是有根据输出的证据。返回的对象可以正确解析,同时抱有一个不支持的声明。框架迁移应该保持这一区别。

运营成本包括模型调用、数据获取、存储以及维护应用程序所需的工作。使用 Scrapeless 定价 来获取获取条款和所选模型的当前商业条款;没有框架声称使这些下游服务免费。

您应该如何选择 LangChain 替代品?

选择最小的框架,以明确应用程序的主要责任。当输入的代理控制占主导地位时选择 PydanticAI,当文档检索占主导地位时选择 LlamaIndex,当组件管道使工作流程更易于检查时选择 Haystack。

如果实际缺失的部分是一个网络数据工具,则保留现有的工作框架。对于迁移,从一个批准的源和一个允许的工具开始。比较旧应用程序和新应用程序接受的证据,而不仅仅是查看两者是否产生流利的答案。

结论:通过切换保留数据合同

当选择遵循具体的应用程序边界时,LangChain 替代品最为有用。类型代理、检索系统和组件管道重叠,但它们最强的起点不同。

PydanticAI 示例建立了真实的 MCP 发现和附加。经过身份验证的捕获和模型生成是随后具有自身前提条件的检查。保持这些检查的明确性使迁移审查能够获得实际可以评估的证据。


准备好构建您的 AI 驱动的数据管道了吗?

加入我们的社区以申请免费计划,并与构建网络数据管道的开发者联系:Discord · Telegram。

在 app.scrapeless.com 注册以获取免费的爬虫浏览器运行时,并将上述模式应用于您自己的公共数据工作流程。


常见问题

问:针对网络数据代理,最佳的 LangChain 替代品是什么?

最佳选择取决于主导责任:PydanticAI 适用于类型代理控制,LlamaIndex 适用于以检索为中心的应用,Haystack 适用于组件管道。在选择之前评估应用程序的实际数据流。

问:Scrapeless MCP 是 LangChain 替代品吗?

不是。Scrapeless MCP 是一个框架可以使用的网络工具接口。它提供获取工具,而框架提供代理或管道行为。

问:成功的工具列表是否证明网络捕获有效?

不。工具发现证明本地服务器暴露了列出的合同。经过身份验证的获取需要真正的密钥和单独检查的工具结果。

问:这个例子是否产生了 AI 答案?

不。该示例构建了一个代理并检查其工具集,而没有运行模型。模型提供者、凭证和经过身份验证的获取路径是额外的前提条件。

问:这些框架可以免费使用吗?

它们的核心开源许可证并没有消除模型、基础设施或收集成本。单独评估完整的部署和任何托管服务条款。

问:同一个收集器能否在框架迁移中生存?

是的。一个具有明确输入、输出、源和接受合同的收集器可以在代理或管道层发生变化时保持稳定。在部署之前确认新框架的工具命名空间和参数处理。

在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。

最受欢迎的文章

目录