简介
Langgraph是langchain框架提供的一个组件,langgraph能够解决AI执行流程中迭代、循环或者根据结果返回上一步,与之前讲的chain链相比,能够实现更加复杂的AI执行流。
langgraph
从chain转到langgraph从数学的角度上来讲,执行流从线性流程转到了流程图。
langgraph的组成主要有三部分:
Langgraph=节点+边+状态
节点: 一个节点就是一个执行单元,相当于一次函数的调用。(可以是一次模型的调用,一次搜索,一次加密等等)
边: 边能够连接一个个节点,它决定了下一个应该去到哪个节点执行
状态: 实现数据共享,是实现AI短期记忆的灵魂
乍一看好像有些云里雾里的,我打个比方:玩家(状态),在玩一个大富翁,每个节点和边组成地图,玩家初始资金(数据)有1000块钱,玩家每走一格可能会发生一些事件,比如说后退一步,被小偷偷300块钱,买房子等等,这些事件相当于节点,走的方向相当于边,最后玩家成功走到了终点END,你可以得知玩家(状态)最后还有多少钱,有多少资产。
下面用一个示例来演示。
改造RAG知识库
示例
这个是之前文章中构建知识库的相关代码,本次用langgraph改造流程
[code]import osimport operatorfrom typing import TypedDict, Annotatedfrom langchain_community.chat_models.tongyi import ChatTongyifrom langchain_community.embeddings import DashScopeEmbeddingsfrom langchain_community.vectorstores import FAISSfrom langchain_core.messages import ToolMessagefrom langchain_core.tools import toolfrom langchain_core.messages import HumanMessage, ToolMessage, BaseMessagefrom langchain_core.documents import Documentfrom langchain_text_splitters import RecursiveCharacterTextSplitterfrom langgraph.graph import StateGraph, ENDfrom langgraph.prebuilt.tool_node import ToolNodeos.environ["DASHSCOPE_API_KEY"] = "sk-b07b9caab2144ff096002f81cb70b0af"@tooldef calculator(expression: str) -> str: """ 计算数学表达式。需要精确计算时使用。 参数: expression: 数学算式,如 "2 + 2" 或 "500 * 0.8"。 返回: str: 计算结果,如 "4.0" 或 "400.0"。 """ print(f"[
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |