首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Agent快速构建框架的langGraph到底是什么及案例

1. LangGraph是什么

为啥要用LangGraph?

使用类似langchain框架开发智能体存在开发量大、灵活的性差、修改tools成本高等问题,如何降低开发量提高agent的灵活性是agent推广的一个关键点。

LangGraph 为生产级代理提供支持,受到 Linkedin、Uber、Klarna、GitLab 等的信任。LangGraph 对代理应用程序的流程和状态提供细粒度控制。它实现了一个中央持久层,支持大多数代理架构所共有的功能:

内存

:LangGraph 可以保存应用程序状态的任意方面,支持用户交互内部和跨用户交互的对话和其他更新的内存;

人在链条

:由于状态有检查点,因此可以中断和恢复执行,从而允许通过人工输入在关键阶段进行决策、验证和更正。

LangGraph是什么?

LangGraph是一个使用 LLM 构建有状态、多参与者应用程序的库,用于创建代理和多代理工作流。请在此处查看入门教程。

LangGraph 的灵感来自Pregel和Apache Beam。公共接口灵感来自NetworkX。LangGraph 由 LangChain 的创建者 LangChain Inc 构建,但可以在没有 LangChain 的情况下使用。

LangGraph核心组件

LangGraph的核心组件包括Graphs、State、Nodes、Edges、Send、Checkpointer。LangGraph有哪些优点:可控性、持久性、Human-in-the-loop、ReactAgent。

state

from langgraph.graph import StateGraph

from typing import TypedDict, List, Annotated

import Operator

class State(TypedDict):

  input: str

  all_actions: Annotated[List[str], operator.add]

graph = StateGraph(State)

Node

# 添加节点

graph.add_node("model", model)

graph.add_node("tools", tool_executor)

Edges

起始边:将图形的起点连接到特定节点。这使得该节点成为在输入传递到图形时首先被调用的节点。伪代码如下:

graph.set_entry_point("model")

正常边:在这些边上,一个节点应始终在另一个节点之后被调用。例如,在基本代理运行时,我们通常希望在调用工具后再调用模型:

graph.add_edge("tools", "model")

条件边:这些边使用函数(通常由LLM提供支持)来确定首先转到哪个节点。要创建这样的边,需要传入三个参数:

上游节点:它查看此节点的输出以确定下一步应该做什么。

一个函数:该函数将被调用以确定接下来要调用哪个节点。它应该返回一个字符串。

映射:此映射将用于将第二个参数中函数的输出映射到另一个节点。键应该是函数可能返回的可能值。如果返回了某个值,那么这些值应该是要转到的节点的名称。

compile

定义好的状态图按编译成可执行的代码,类似编程语言的编译。

app = graph.compile()

Agent React 代理执行器

from typing import TypedDict, Annotated, List, Union

from langchain_core.agents import AgentAction, AgentFinish

from langchain_core.messages import BaseMessage

import operator

class AgentState(TypedDict):

 input: str

 chat_history: list[BaseMessage]

 agent_outcome: Union[AgentAction, AgentFinish, None]

 intermediate_steps: Annotated[list[tuple[AgentAction, str]], operator.add]

LangGraph案例

Chatbots、Multi-agentSystems、Planning Agent;

2. 典型应用场景

ReAct 架构智能体

通过循环执行推理(Reasoning)-行动(Acting)-观察(Observing)步骤完成任务,例如结合 Google 搜索和 DALL-E 生成图像的智能体1。

多智能体系统

构建协作网络,如一个智能体生成代码,另一个测试并反馈错误,形成自我修正循环38。

长时任务处理

支持中断与恢复,适用于数据分析、自动化流程等需要人工介入的场景38。

3.与传统 LangChain Agent 的对比

4. 快速上手示例

通过预构建函数快速创建 ReAct 智能体:

python

复制

from langgraph import StateGraph, ToolNode

# 定义状态、工具和模型

graph = StateGraph(initial_state={"messages": []})

graph.add_node("agent",  run_llm)

graph.add_node("tools",  ToolNode([search_tool, image_generator]))

# 设置边和条件

graph.add_conditional_edge("agent",  decide_next_step)

graph.compile()

# 执行任务

response = graph.invoke({"input":  "生成一张雪山湖泊的图片"})

总结

LangGraph 通过图结构解决了传统 Agent 框架在复杂流程控制上的不足,特别适合需要循环、多角色协作或人工干预的场景。其设计理念在可控性、可靠性和灵活性之间取得了平衡

  • 发表于:
  • 原文链接https://page.om.qq.com/page/ORyeyC_4ofan0YK_4Vs8YuGw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券