首页 > 科技周边 > 人工智能 > Langgraph教程:Langgraph是什么,如何使用它?

Langgraph教程:Langgraph是什么,如何使用它?

Jennifer Aniston
发布: 2025-03-06 10:57:10
原创
749 人浏览过

想象您正在构建一个复杂的,多功能的大语言模型(LLM)应用程序。令人兴奋,但面临挑战:管理各种代理的状态,协调他们的互动,并有效地处理错误。这是Langgraph可以提供帮助的地方。

Langgraph是Langchain生态系统中的图书馆,旨在正面应对这些挑战。 Langgraph提供了一个以结构化的方式定义,协调和执行多个LLM代理(或链)的框架。

>它通过启用周期性图的创建来简化开发过程,这对于开发代理的运行时间至关重要。使用Langgraph,我们可以轻松地构建健壮,可扩展和灵活的多代理系统。

如果您想了解有关Langchain生态系统的更多信息,我建议您对Langchain介绍。

>

什么是langgraph?

图形结构

想象您的应用程序作为有向图。在langgraph中,每个节点代表LLM代理,边缘是这些试剂之间的通信通道。这种结构允许清晰可管理的工作流程,每个代理执行特定的任务并根据需要将信息传递给其他代理。

状态管理

Langgraph的出色功能之一是其自动状态管理。此功能使我们能够在多个交互之间跟踪和持久信息。当代理执行任务时,状态将动态更新,确保系统保持上下文并适当响应新的输入。

协调

为什么langgraph?

正如我上面提到的那样,Langgraph为使用复杂LLM应用程序的开发人员提供了一些重要的优势。这是Langgraph提供的一些现实世界的好处。

简化的开发

灵活性

在Langgraph的情况下,开发人员可以灵活地定义自己的代理逻辑和通信协议。这允许针对特定用例量身定制的高度定制应用程序。无论您是否需要一个可以处理各种用户请求的聊天机器人,还是执行复杂任务的多代理系统,Langgraph都提供了构建所需内容的工具。这一切都是为了赋予您创建的力量。

>

可伸缩性

langgraph旨在支持大规模多代理应用程序的执行。其强大的架构可以处理大量的交互和复杂的工作流程,从而可以开发可扩展的系统,这些系统可以随您的需求而增长。这使其适用于企业级应用程序和方案,而性能和可靠性至关重要。

容错

可靠性是Langgraph设计中的核心考虑因素。该库包括用于优雅处理错误的机制,确保您的应用程序即使在各个代理遇到问题时也可以继续运行。这种容错性对于维持复杂多代理系统的稳定性和鲁棒性至关重要。安心只是一个功能。

开始使用langgraph

>让我们看看如何设置langgraph以及基本概念是什么。

>

>安装

要安装langgraph,您可以使用pip:

基本概念

pip install -U langgraph
登录后复制
登录后复制
登录后复制
>节点:节点代表langgraph中工作单位。它们通常是执行特定任务的Python函数,例如:

与LLM

互动

调用工具或API
  • 执行一些数据操作
  • 接收用户输入
  • >执行业务逻辑
  • 在langgraph中,您可以使用graph.add_node(name,value)语法添加节点。
  • 边缘:边缘是节点之间的通信通道。他们定义信息流和执行顺序。您可以使用graph.add_edge(node1,node2)语法添加边缘。
  • >
状态:状态是图表中的节点随时间更新的中心对象。它管理您的应用程序的内部状态,并且可以根据申请的要求覆盖或添加。这种状态可以容纳以下内容:

  • 对话历史记录:代理与用户之间的消息列表。>
  • >上下文数据:与当前任务或交互有关的信息。
  • > 内部变量:标志,计数器或其他变量,以跟踪代理的进度和行为。
  • 构建一个简单的langgraph应用程序

这是使用langgraph创建基本聊天机器人应用程序的分步示例。

>步骤1:定义状态图

>定义一个状态图对象,以将聊天机器人构造为状态计算机。状态是一个类型列表的单个关键消息定义的类对象,并使用add_messages()函数来附加新消息,而不是覆盖它们。

>步骤2:初始化llm并将其添加为聊天机器人节点
pip install -U langgraph
登录后复制
登录后复制
登录后复制
>

>在这里,我们初始化AzureChatopenai模型,并创建一个简单的聊天机器人函数,该函数将状态消息作为输入输入并生成消息响应(随后将其应用于状态)。

此聊天机器人函数被添加为名为“聊天机器人”的节点。

步骤3:设置边缘

>由于我们正在构建一个简单的聊天机器人,因此我们将聊天机器人节点设置为图表的输入点和终点,以指示从哪里开始和结束过程。
from typing import Annotated
from typing_extensions import TypedDict
from langgraph.graph import StateGraph
from langgraph.graph.message import add_messages
class State(TypedDict):
    # messages have the type "list".
    # The add_messages function appends messages to the list, rather than overwriting them
    messages: Annotated[list, add_messages]
graph_builder = StateGraph(State)
登录后复制
登录后复制

步骤4:编译和可视化图

编译图以创建一个编译对象,并且可以选择地使用下面的代码可视化图形结构:>

from langchain_openai import AzureChatOpenAI
llm = AzureChatOpenAI(
    openai_api_version=os.environ["AZURE_OPENAI_API_VERSION"],
    azure_deployment=os.environ["AZURE_OPENAI_CHAT_DEPLOYMENT_NAME"],
)
def chatbot(state: State):
    return {"messages": [llm.invoke(state["messages"])]}
‘’’The first argument is the unique node name
# The second argument is the function or object that will be called whenever the node is used.’’’
graph_builder.add_node("chatbot", chatbot)
登录后复制

步骤5:运行聊天机器人

最后,我们实现一个循环,以连续提示用户输入,通过图形处理并打印助手的响应。当用户键入“退出”,“退出”或“ Q”。
# Set entry and finish points
graph_builder.set_entry_point("chatbot")
graph_builder.set_finish_point("chatbot")
登录后复制

高级langgraph功能Langgraph教程:Langgraph是什么,如何使用它?

>现在我们涵盖了基础知识,让我们看一下一些高级功能。>

自定义节点类型

langgraph允许您创建自定义节点类型来实现复杂的代理逻辑。这提供了对应用程序行为的灵活性和控制。

>
graph = graph_builder.compile()
from IPython.display import Image, display
try:
    display(Image(graph.get_graph().draw_mermaid_png()))
except Exception:
    pass
登录后复制

>在这里,我们定义了一个封装自定义逻辑并与LLM交互的类mycustomnode。这提供了实施复杂节点行为的更具结构化和可维护的方法。

>

边缘类型

要创建一个条件边缘,您需要三个组件:

>
  1. 上游节点:节点的输出决定下一步。
  2. a函数:此函数评估上游节点的输出并确定下一个要执行的节点,返回一个代表决策的字符串。
  3. 映射:此映射将函数的可能结果链接到要执行的相应节点的结果。
  4. 这是伪代码中的一个示例:

>在这里,在调用“模型”节点之后,我们可以退出图(“ end”),然后返回用户,或者我们可以继续(“继续”)并调用工具 - 对用户的决定!
pip install -U langgraph
登录后复制
登录后复制
登录后复制
状态管理

Langgraph提供强大的状态管理技术,其中包括使用SQLITE,PostgreSQL和MongoDB等外部数据库,或使用Amazon S3,Google Cloud Storage和Azure Blob存储等云存储解决方案存储并检索您的代理商的状态,可靠性和可伸缩性。

这是使用SQLITE数据库进行状态管理的一个示例:>

错误处理

langgraph还提供了错误处理的机制:

from typing import Annotated
from typing_extensions import TypedDict
from langgraph.graph import StateGraph
from langgraph.graph.message import add_messages
class State(TypedDict):
    # messages have the type "list".
    # The add_messages function appends messages to the list, rather than overwriting them
    messages: Annotated[list, add_messages]
graph_builder = StateGraph(State)
登录后复制
登录后复制
>例外:节点函数可以在执行过程中提出异常来发出错误。您可以捕获并处理以下例外,以防止图形崩溃。

重试机制:您可以在节点中实现重试逻辑来处理瞬态错误,例如网络问题或API超时。

>记录:使用日志记录记录错误并跟踪图形的执行。
  • Langgraph
  • 的现实世界应用
  • langgraph可用于构建广泛的应用程序。
  • 聊天机器人
  • Langgraph是开发可以处理各种用户请求的复杂聊天机器人的理想选择。通过利用多个LLM代理,这些聊天机器人可以处理自然语言查询,提供准确的响应,并在不同的对话主题之间无缝切换。管理状态和协调交互的能力确保聊天机器人维护上下文并提供连贯的用户体验。
  • >自主剂

>对于需要自主决策的应用程序,langgraph可以创建可以根据用户输入和预定义的逻辑独立执行任务的代理。

这些代理可以执行复杂的工作流程,与其他系统进行交互,并动态适应新信息。 Langgraph的结构化框架可确保每个代理都可以有效地运行,从而适合自动化客户支持,数据处理和系统监控等任务。

>

多代理系统

Langgraph在构建应用程序中擅长于多个代理以实现共同目标的构建应用程序。例如,不同的代理可以在供应链管理系统中管理库存,过程订单和协调交货。 Langgraph的协调能力确保每个代理商都有有效的交流,共享信息并以同步方式做出决策。这会导致更有效的操作和更好的整体系统性能。

>工作流动自动化工具

>随着langgraph,自动化业务流程和工作流程变得很简单。智能代理可以设计用于处理诸如文档处理,批准工作流和数据分析之类的任务。通过定义清晰的工作流并利用Langgraph的国家管理,这些工具可以执行复杂的动作序列,而无需人为干预,降低错误并提高生产率。

推荐系统

个性化推荐系统可以从Langgraph的功能中受益匪浅。通过使用多个代理来分析用户行为,偏好和上下文数据,这些系统可以为产品,内容或服务提供量身定制的建议。 Langgraph的灵活性允许整合各种数据源和算法,增强了建议的准确性和相关性。 个性化的学习环境 在教育平台中,Langgraph可用于创建适合单个学习风格和需求的自适应学习环境。多个代理商可以评估学生的进度,提供定制的练习并提供实时反馈。 Langgraph的状态性质确保系统保留有关每个学习者的表现和偏好的信息,从而实现更个性化和有效的教育经验。

结论

通过提供一个结构化的框架来管理状态和协调代理相互作用,> Langgraph的潜在发展包括与其他Langchain组件集成,对新LLM模型的支持以及从学术界引入更高级的代理运行时间。

如果您想了解有关Langchain生态系统中开发应用程序的更多信息,我建议您使用Langchain开发LLM应用程序的课程。

>

以上是Langgraph教程:Langgraph是什么,如何使用它?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板