LangChain createAgent 源码(上):初始化与状态 Schema
《Agent 大模型 0 到 1 系统课》 · 程序员 Sunday
你正在阅读本节的免费试读。完整课程 ¥499,可在文末添加作者微信购买。
其实在之前的 04 小节里面,咱们已经看过一些 LangChain 源码了,只不过看的比较糙。
当时是通过 node_modules/langchain/dist 来看的 createAgent()。
看了:
- 创建 ReactAgent
- ReactAgent 内部使用 LangGraph 构建执行图
大致是这么两部分。
但是,dist 目录里的代码是 打包以后真正交给 Node.js 执行的 JavaScript。
咱们可以通过它来看一下大致的执行路径,但是不太适合用来系统阅读源码
所以,咱们正式学习源码的时候,必须得换一种方式才可以。
从 Github 上下载制定版本的 LangChain 源码,然后再从业务代码里的
createAgent()开始,一点点去看。
咱们在前面课程中使用的一直是 1.5.5 的版本,这个版本对应的是 langchain@1.5.5 Tag。
这个 Tag 最终指向的 Git Commit 是:
62fc484b2a0d1ec5b8bebff4a8a0efe6300ada72
因此,想要直接拉取源码,可以直接通过下面的命令进行拉取:
git clone \
--depth 1 \
--branch "langchain@1.5.5" \
--single-branch \
https://github.com/langchain-ai/langchainjs.git \
langchainjs-1.5.5
这里的 --branch 指定了要下载的 Tag,--depth 1 则表示只拿当前版本需要的提交
PS:当前代码已拉取完成,存放在课程源码库
https://github.com/lgd8981289/Agent--Code的Node/第五章/langchainjs-1.5.5路径下
下载完成以后,进入源码目录:
cd langchainjs-1.5.5
然后执行:
git tag --points-at HEAD --list 'langchain@1.5.5'
正常情况下会看到:
langchain@1.5.5
这样就没啥问题
有些同学可能网络不太好。
如果通过指令下载失败的话,那么可以直接打开这个
langchain@1.5.5Tag ,直接下载 ZIP。![]()
这样也是一种简单的方式,完全足够咱们用
分析源码结构
打开刚刚下载的 langchainjs-1.5.5,会看到很多目录。
这是因为 LangChain.js 使用的是 Monorepo,也就是把多个相互关联的 Package 放在同一个仓库里维护。
而对咱们来说,只需要关注两个文件夹就行:
-
libs/langchain对应咱们安装的langchain包,createAgent()、ReactAgent和 Agent Middleware 的上层实现都在这里。 -
libs/langchain-core放的是模型、Message、Tool、Runnable 等公共抽象。第 03 小节已经讲过他俩的职责,这里先不往core里面继续看了。
从业务代码进入 createAgent()
源码已经准备好,接下来咱们从自己最熟悉的代码开始。
前面的项目中,Agent 是这样创建的:
import { createAgent } from 'langchain'
const agent = createAgent({
model,
tools,
systemPrompt,
stateSchema,
contextSchema,
responseFormat,
middleware
})
这里的 createA
本节试读已结束
继续学习,解锁完整课程
购买《Agent 大模型 0 到 1 系统课》,
继续阅读本节剩余内容与后续课程。
