Sunday 的面试指南

LangChain createAgent 原理:执行循环与流式输出

《Agent 大模型 0 到 1 系统课》 · 程序员 Sunday

你正在阅读本节的免费试读。完整课程 ¥499,可在文末添加作者微信购买。

这一小节,咱们要浅尝一下 LangChain 的源码了,就从 createAgent 开始。

先回顾下咱们上一小节写的案例,上一小节实现的算是一个简单的 Tool Calling

模型先生成 Tool Call,应用程序执行 get_task,再把结果包装成 ToolMessage 交回模型。

不过,上一次只有一个 Tool,跑完一次就结束了。

但是咱们知道,实际开发中,不可能只调用一个单独的 Tool。

Tool 和 模型之间的循环,肯定会进行多次的。

而 createAgent() 真正接管的,正是这段多轮执行过程。

先把案例运行起来

本小节代码在:

/Code/Node/第五章/04-langchain-create-agent

进入项目目录,安装依赖:

cd /Code/Node/第五章/04-langchain-create-agent
npm install

这里必须要跟大家明确一下版本,因为在看源码的时候,不同的版本源码会有所不同

"dependencies": {
	"@langchain/core": "1.2.5",
	"@langchain/deepseek": "1.1.6",
	"langchain": "1.5.5",
	"zod": "4.4.3"
}

然后,在当前目录创建 .env:

DEEPSEEK_API_KEY=你的 DeepSeek API Key
DEEPSEEK_MODEL=deepseek-v4-flash

执行:

npm run demo

最终回答会根据模型生成结果略有变化,但是前面的执行顺序应该是稳定的:

LangChain createAgent 原理:执行循环与流式输出 配图 1

大家先看 Tool 的调用顺序。

第一次调用 get_task 时,模型只有任务编号 DEV-1024。

LangChain createAgent 原理:执行循环与流式输出 配图 2

等这个 Tool 返回以后,第二次调用参数才出现:

LangChain createAgent 原理:执行循环与流式输出 配图 3

这个 repository 是模型从第一次 Tool 返回的结果中拿到的。

而这一整的业务逻辑就是从 createAgent() 开始的

createAgent() 到底创建了什么

打开 create-agent.js,可以看到 Agent 的创建代码:

/**
 * 创建研发任务交付风险分析 Agent。
 *
 * 本例存在明确的数据依赖:
 *
 * get_task
 *    ↓ repository
 * get_latest_test_report
 *
 * 第二次 Tool 调用所需的 repository,
 * 只有第一次 Tool 执行完成之后才能得到。
 *
 * 因此整个 Agent Run 会经历多轮:
 *
 * Model → Tool → Model → Tool → Model → Final Answer
 */
const agent = createAgent({
	model: createModel(),

本节试读已结束

继续学习,解锁完整课程

购买《Agent 大模型 0 到 1 系统课》,
继续阅读本节剩余内容与后续课程。

扫码添加作者微信,备注「Agent 课程」

添加作者微信 · 购买完整课程

解锁完整课程 ¥499

《Agent 大模型 0 到 1 系统课》
扫码添加微信,备注「Agent 课程」,购买后由 Sunday 提供完整内容的学习方式。

扫码添加作者微信 LGD_Sunday,购买 499 元 Agent 课程

微信昵称:LGD_Sunday
手机上可长按保存二维码,再用微信扫一扫识别。

保存微信二维码