一文搞懂 LangChain 新利器:LangGraph

▼最近直播超级多,预约保你有收获

今天直播:《RAG和GPTs构建Agent产业应用落地实战

1

LangGraph  技术架构解读

LangGraph 是一个有用于构建有状态和多角色的 Agents 应用,它并不是一个独立于 Langchain 的新框架,而是基于 Langchain 之上构建的一个扩展库,可以与 Langchain 现有的链(Chains)、LangChain Expression Language(LCEL)等无缝协作。LangGraph 能够协调多个 Chain、Agent、Tool 等共同协作来完成输入任务,支持 LLM 调用“循环”和 Agent 过程的更精细化控制。

LangGraph 的实现方式是把之前基于 AgentExecutor 的黑盒调用过程,用一种新的形式来构建:状态图(StateGraph)。把基于 LLM 的任务(比如:RAG、代码生成等)细节用 Graph 进行精确的定义(定义图的节点与边),最后基于这个图来编译生成应用。在任务运行过程中,维持一个中央状态对象(state),会根据节点的跳转不断更新,状态包含的属性可自行定义。

我们一起剖析下官方 RAG 应用的 Graph 案例,如下图所示,从而更好理解 LangGraph。

a483b43a860c7e8d4bbdb472d91be190.png

上图 RAG Graph 中体现了 LangGraph 的几个基本概念:

  • StateGraph:代表整个状态图的基础类。

  • Nodes:节点。有了图之后,可以向图中添加节点,节点通常是一个可调用的函数、一个可运行的 Chain 或 Agent。有一个特殊的节点叫END,进入这个节点,代表运行结束。

    • 在上图中,推理函数调用、调用检索器、生成响应内容、问题重写等都是其中的任务节点。

  • Edges:边。有了节点后,需要向图中添加边,边代表从上一个节点跳转到下一个节点的关系。目前有三种类型的边:

    • Starting Edge、一种特殊的边。用来定义任务运行的开始节点,它没有上一个节点。

    • Normal Edge:普通边。代表上一个节点运行完成后立即进入下一个节点。比如在调用 Tools 后获得结果后,立刻进入 LLM 推理节点。

    • Conditional Edge:条件边。代表上一个节点运行完成后,需要根据条件跳转到某个节点,因此这种边不仅需要上游节点、下游节点,还需要一个条件函数,根据条件函数的返回来决定下游节点。

    • 在上图中,Check Relevance 就是一个条件边,它的上游节点是检索相关文档,条件函数是判断文档是否相关,如果相关,则进入下游节点【产生回答】;如果不相关,则进入下游节点【重写输入问题】。

在构建好 StateGraph,并增加 Node 和 Edge 后,可以通过 compile 编译成可运行的应用:

aa1008e8c14813c6f604c82a7d82cfdd.png

app = graph.compile()

接下来可以调用这个 app 来完成你的任务。

2

LangGraph 构建 Agent 应用

LangGraph 其实就是把现在黑盒的 AgentExecutor 透明化,允许开发者定义内部的细节结构(用图的方式),从而实现更强大的功能。那么就可以用LangGraph 来重新实现原来的 AgentExecutor,即实现一个最基础的 ReAct范式的 Agent 应用。

对应的 Graph 如下:

d1b60223e5b57dbaf4ce82dc9ccae21f.png

伪代码实现如下:

55d47d1e6c633843773a13fc614d6e7e.png

代码中的注释对 graph 构建的细节做了解释。显然,这要比简单的使用 agentExecutor 要复杂的多,但同时也展示了 LangGraph 在构建 LLM 应用时强大的控制能力:通过 Graph 的定义,可以对一个 LLM 应用的处理过程进行非常细节的编排设计,从而满足大量复杂场景的 AI Agent 产业应用落地。

更详细的实操步骤,放在今晚20点直播实操进行,直播精彩看点

1、基于 RAG 实现 AI Agent 技术架构深度剖析

2、AI Agent 重构 AI 电商中台产业落地案例实战

3、基于 GPTs 实现 AI Agent 技术架构深度剖析 

请同学点击下方按钮预约直播,咱们今晚20点直播见!

4

领取《AI 大模型技术直播

我们梳理了下 AI 大模型应用开发的知识图谱,包括12项核心技能:大模型内核架构、大模型开发 API、开发框架、向量数据库、AI 编程、AI Agent、缓存、算力、RAG、大模型微调、大模型预训练、LLMOps 等。

ea547bbe614c4a32d3587fd14de64dfc.png

为了帮助同学们掌握 AI 大模型应用开发技能,我们准备了一系列免费直播干货扫码全部领取

b7416d5cdf8d29175a8d9f5b67fbd1fd.png

参考链接:

https://github.com/langchain-ai/langgraph/blob/main/examples/rag/langgraph_agentic_rag.ipynb

https://mp.weixin.qq.com/s/MzLz4lJF0WMsWrThiOWPog

END

### SQL 注入攻击的类型及其难度 #### 1. 基于错误消息的经典 SQL 注入 这种类型的攻击依赖于应用程序返回详细的数据库错误信息给用户。通过分析这些错误信息,攻击者可以构建有效的恶意查询来操纵数据库行为。 对于攻击者的技能要求较低,因为只需理解基本的 SQL 结构以及如何解析常见的 DBMS 错误响应即可成功实施此类攻击[^1]。 ```sql ' OR '1'='1 ``` #### 2. 联合查询(UNION-based)SQL 注入 利用 UNION 运算符将多个 SELECT 查询的结果组合在一起显示出来。此方法允许攻击者从不同表中提取数据并将其附加到原始查询结果之后呈现给用户查看。 实现起来相对复杂一些,因为它不仅涉及到对目标站点逻辑结构的理解,还需要掌握多种 SQL 技巧才能绕过潜在的安全措施完成整个过程。 ```sql 1 UNION ALL SELECT NULL, version(), database(); ``` #### 3. 时间盲注(Time-based Blind)SQL 注入 当无法直接看到任何反馈时采用这种方法。它基于延迟函数如 SLEEP() 来判断条件表达式的真假情况从而推断出有关底层系统的敏感信息。 这类技术挑战较大,需要耐心等待每次请求的时间消耗变化来进行猜测验证;而且为了提高效率通常还会结合二分法或其他算法优化测试流程。 ```sql IF((SELECT COUNT(*) FROM users)>0,SLEEP(5),NULL); ``` #### 4. 基于带外通道(Out-of-band OOB)的 SQL 注入 OOB 攻击是指那些不依赖于原 HTTP 请求/响应链路传递额外载荷的方式。例如 DNS 或 HTTP 外部连接可用于泄露内部网络配置详情等机密资料。 执行这样的操作往往具有较高的门槛,除了要熟悉各种协议之外还可能涉及社会工程学手段获取必要的权限以建立可靠的通信路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值