- 上一章讲解了如何调用向量模型、使用向量数据库等,并将其融入到 langchain 的链式操作中
- 本章将讲解使用联网搜索和模型进行交互,并如何创建代理,使 langchain 自动操作模型获得我们想要的结果
- 需要了解构建 LangChain 的一些用法,可以阅读本专栏内容,欢迎订阅
- pip安装LangChain:
- 调用大模型key,我们主要是学习为主,能白嫖自然白嫖,不需要多么快速的响应,下面是对应的申请方式,都是免费的,其他模型都是需要对应token花费钱的。注意:我们只要申请openai的key,openai更加通用
- 腾讯元宝:hunyuan-lite,申请地址
- 智谱AI:GLM-4-Flash-,申请地址,更推荐,响应速度快,更精准,对 openai 接口兼容性更好
- 以上模型都是免费的,可以放心使用,注意申请 openai 访问方式的key,
- 需要申请Tavily(一个搜索引擎)作为工具来配合 LangChain 进行联网搜索,Tavily每个月有一千条免费次数,足够我们学习使用了
- 建议使用 Jupyter Notebook,更加方便,安装教程
语言模型本身其实做不了什么实际动作,它们能做的不过是输出一些文字而已。但 LangChain 有个挺重要的用法,就是搭建出一种 “代理” 机制。这种代理会把大型语言模型当成思考的核心,让它来判断该做哪些事,以及具体要给这些事提供什么信息。等这些事做完之后,得到的结果还能再送回给大型语言模型,让它接着判断:是还得再做点什么,还是说这事到这儿就可以结束了。
可以通过传入消息列表来调用语言模型,而且还能看到这模型调用工具的具体情况。为了实现这一点,我们使用 .bind_tools 来让语言模型了解这些工具。
可以看到我们现在的问题没有触发搜索服务
我们将问题换一下
可以看到已经成功触发搜索服务
现在这儿没什么文本内容,但有个工具调用的提示 —— 它想让我们用 Tavily Search 这个工具。 不过这还不算真的调用了工具,只是告诉我们该去调用而已。要想真把这个工具用起来,还得我们自己来创建代理才行。
工具和大型语言模型都定义好了,接下来就能创建代理了。使用 LangGraph 来做这个事。目前用的是高级接口来代理,不过 LangGraph 有个好处,就是这个高级接口背后有套低级的 API 支撑着,可控性很强。 现在,咱们可以用大型语言模型和工具来初始化代理了。
通过返回值,可以看到模型现在并没有调用搜索服务,因为我们问的问题不对
我们将问题换一下
现在成功触发搜索服务
咱们已经知道怎么用.invoke 调用代理来拿到最终的回应了。但要是代理得走好几个步骤,那可能就得等上一会儿。想实时看到中间的进展也不难,只要在消息产生的时候,让它们一条条流式返回就行。
返回值 
除了流式返回消息,流式返回令牌也是有用的。 我们可以使用 .astream_events 方法来实现这一点。
返回值,是不是有点像我们常用的的一些ai助手深度思考的模样 智谱 AI GLM 教程
代理本身是没什么记忆的,之前的互动它都记不住。要是想让它能记住东西,就得给它传个检查点。传检查点的时候,调用代理时还得带上 thread_id,这样它才知道该从哪个对话线程接着来。
返回值 
本章讲解使用联网搜索和模型进行交互,如何创建代理,使 langchain 自动操作模型获得我们想要的结果,至此我们基础部分已经讲完,接下来我们将讲解进阶部分,包括构建检索增强生成 (RAG) 、操作sql数据库、图数据库、分析pdf等文档、B站视频分析等,欢迎持续关注
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/268102.html原文链接:https://javaforall.net
