1. 学习背景
LangGraph最近出来后如火如荼,最近AndrewNg又出了新鲜的学习课程,于是乎先了解一波。
学习地址:传送门
代码地址: 传送门
废话不多说,开始干活。
2. 从头开始构建代理(Build an Agent from Scratch)
2.1 准备初始环境
python环境大于等于3.10,其他包自行安装,本实验基于jupyternotebook,接着导入包
2.2 基础配置及代理
接着构建一个Agent
至此,一个简单的Agent就构建完成了。
2.3 构建提示词和使用的函数
构建提示词
定义可调用的函数
2.4 实际测试
输出如下:
可以看到,模型按照提示词格式给出了回答。接着我们模仿代理,调用对应的函数。
输出如下:
接着给出对应的观测内容:
输出如下:
接着模型会将调用函数结果作为输出送入大模型。
输出如下:
我们可以尝试查看对话内容:
输出如下:
至此,我们自行写的最简单的一个Agent就完成了,其流程是,模拟人的输入,得到Thought;其次执行Action,调用对应的函数得到结果,接着得到执行的结果,送入模型,判断是否需要继续执行,否则认为得到最终的答案结束。
3. 尝试深入学习稍微复杂点的任务
3.1 初始化
输出如下:
3.2 执行细节
按照上述Action执行,调用average_dog_weight函数,参数Border Colli
输出如下:
接下来则将结果反馈给模型:
输出如下:
按照上述Action执行,调用average_dog_weight函数,参数Scottish Terrier
输出如下:
接下来则将结果反馈给模型:
输出如下:
按照上述Action执行,调用eval函数,参数"37 + 20"
输出如下:
接下来则将结果反馈给模型:
输出如下:
4. 尝试循环,让Agent自动化执行
我们所谓的Agent,本质上其实就是用循环去执行任务,在这个过程中,使用关键词匹配,过滤多余信息后,执行对应的函数(其实就是让代理自动执行任务,并调用工具,最后返回结果)。
开始尝试!
4.1 正则过滤
4.2 定义可查询的循环函数
4.3 实例测试
输出如下:
5. 总结
上述执行流程如图所示:
手动写一个简单的Agent执行一次,终于明白了其中的奥秘,原来就是简单的提示词和一次次循环调用,即可完成Thought、Action、Observation等系列操作。