LangChain.js 智能代理实战指南:快速搭建能调用工具的 AI 应用
【免费下载链接】langchainjsThe agent engineering platform项目地址: https://gitcode.com/GitHub_Trending/la/langchainjs
当你想让 AI 不只是聊天,还要查数据、调接口、记住多轮上下文时,LangChain.js 的智能代理(Agent)能力能帮你用极少的配置把这些环节串成一条能跑的流程。今天我们不讲概念,直接以实践者的角度,一起看看它到底怎么把模型变成会干活的智能代理。
一句话:它替你解决了什么
它替你省掉"模型和外部世界之间的所有胶水代码"——你声明好模型和工具,它负责让模型自己决定何时调用什么工具、按什么参数调用,再把结果喂回给模型继续推理。你只需要关注业务规则,不用手写轮询、解析和重试。
三步把 LangChain.js 装进项目
上手路径很短,核心改动就两处:
- 装包:在 Node.js(20.x 及以上)项目里执行
npm install -S langchain,再按你用的模型装一个 provider 包,比如 OpenAI 对应@langchain/openai,仓库里 libs/providers/ 目录下可以看到全部支持的 provider 包,Anthropic、Google、Ollama、Groq 等都在其中。 - 配模型:在代码里用一个 Chat 模型实例指定 provider 和模型名,这一步就是"配置驱动"的全部——换一个模型,通常只是换一行实例化。
- 建代理:用主包导出的
createAgent,把模型和工具列表交给它,就能invoke发消息。没有链式调用样板,没有初始化仪式。
它能替你完成的四件事
让模型用上实时数据:连接外部数据源
大模型训练截止后的世界,它一无所知。LangChain.js 把向量库、检索器、HTTP 接口、数据库等接成统一的数据源接口,模型在推理过程中可以主动去查。下面这张图就是一个典型的场景:搜索结果页这类实时信息,正是模型自己"够不着"、必须由框架帮它取回来的东西。
让模型记得上文:会话内存与状态管理
多轮对话里"它"指谁、"上次"是哪次,靠的是状态。createAgent支持挂一个 store(如InMemoryStore),工具读写它,模型就能跨会话引用之前存下的信息——记忆不再是一段段字符串拼接,而是结构化的键值存取。
让模型输出可控:工具调用与结构化结果
用 zod schema 给每个工具声明参数结构,模型给出的调用参数会先过校验再执行,脏参数进不了你的业务函数。最终答复也可以声明responseFormat,让代理直接返回符合 schema 的结构化对象,而不是让你再去正则解析一段自然语言。
换模型不用改业务代码:多模型互操作
所有 provider 的 Chat 模型都实现同一套接口,你在业务层写的工具、提示、流程与具体模型解耦。今天用 GPT-4o 验证逻辑,明天换 Claude 或 Gemini 压成本,业务代码基本不动——这在模型迭代飞快的阶段是很实在的保险。
完整走读:一个带记忆的工具代理
以仓库里的 examples/src/createAgent/tools.ts 为例,把它拆开看就是"输入 → 处理 → 输出"三步:
- 输入:第一次调用
agent.invoke,消息是一句自然语言:"Save the following user: userid: abc123, name: Foo, age: 25, email: foo@langchain.dev"。 - 处理:代理把这句话解析为对
saveUserInfo工具的调用,参数经 zod 校验后写入挂着的InMemoryStore,工具返回 "Successfully saved user info."。 - 输出:另起一次
invoke(模拟新会话),问 "Get user info for user with id 'abc123'",模型这次选择调用getUserInfo,从 store 里读回数据,最终消息输出姓名、年龄、邮箱的结构化摘要。
整个过程你没写任何"如果用户说保存就写库"的分支——路由决策是模型做的,你只提供工具和存储。这就是智能代理和普通"模型 + if 判断"脚本的分界线。
进阶与避坑:两个容易踩的地方
- 分清 langchain 和 langchain-classic:仓库里同时存在 libs/langchain/ 和 libs/langchain-classic/。新版
createAgent、中间件(middleware)等代理 API 在主包里;chains、memory、classic prompts 那套传统写法在 langchain-classic 里,示例集中在 examples/src/langchain-classic/。网上大量旧教程的代码是 classic 版本,和新代理 API 的导入路径不通用,照抄会拿到不存在的导出。新代码建议直接走主包。 - 注意 zod 版本对齐:工具 schema 全部基于 zod,仓库专门有 environment_tests/test-zod-compat/ 目录,分别验证 zod v3、v4 以及版本不匹配的场景。如果你的项目里已有别的库锁定了 zod 版本,安装前先确认版本是否落在 provider 包的兼容范围内,否则类型校验会在运行时悄悄失效。
生态与延伸阅读
想动手跑代码,仓库自带一套可直接执行的示例:examples/src/createAgent/ 下有工具调用、中间件(限流、摘要、人工介入)、多智能体(handoffs、supervisor)等几十个小而完整的案例,每个文件独立成篇,比长文档更适合边读边改。另外两处值得翻一翻:internal/standard-tests/ 展示了官方如何给 LLM 集成写标准化测试,对你评估"某个模型接入是否靠谱"很有参考价值;internal/model-profiles/ 则是一套模型特性档案工具,帮你判断某个模型到底支不支持工具调用、流式等能力。如果想拿到完整源码在本地跑,可以克隆仓库:
git clone https://gitcode.com/GitHub_Trending/la/langchainjs落地建议:从哪一步开始
- 如果你是初学者:先别碰 RAG 和多智能体,从 examples/src/createAgent/tools.ts 这个最简工具代理跑通起,把"一个工具、一次存储、两次 invoke"完整复现一遍,代理的循环机制你就理解了。
- 如果你已有项目要接入:优先评估你现有系统里哪些"固定流程"其实是"决策流程"——比如需要根据用户措辞分派到不同接口的那段 switch-case,那是第一个适合换成带工具代理的点,改动面小、收益立竿见影。
【免费下载链接】langchainjsThe agent engineering platform项目地址: https://gitcode.com/GitHub_Trending/la/langchainjs
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考