当前位置:   article > 正文

LangGraph简介

langgraph

LangGraph 概述及用法

LangGraph 是 LangChain 的一个扩展,旨在通过将步骤建模为图中的边缘和节点,构建具有大型语言模型(LLMs)的强大和有状态的多角色应用程序。LangGraph 提供了用于创建常见类型代理的高级接口,以及用于组合自定义流程的低级 API。

LangGraph 的核心概念

LangGraph 将应用程序的工作流程表示为一个图结构,其中:

  • 节点(Nodes):代表不同的操作或步骤,例如调用一个 LLM、访问一个数据库、处理用户输入等。
  • 边(Edges):代表步骤之间的关系或流程,例如数据流、决策路径等。

这种图形结构允许创建复杂的、有状态的多角色应用程序,每个角色可以独立执行操作,互相通信,并根据前一步骤的结果动态调整。

LangGraph 的主要特点
  1. 高级接口:LangGraph 提供了用于创建常见代理的高级接口,使开发者可以快速构建代理应用。
  2. 低级 API:允许开发者自定义和组合自己的工作流程,以满足特定需求。
  3. 状态管理:支持构建有状态的应用程序,能够在多步骤和多角色之间传递和管理状态。
  4. 动态调整:基于前一步骤的结果,可以动态调整工作流程,适应不同的情况和需求。
用法示例

以下是一个基本的 LangGraph 用法示例,展示了如何创建一个简单的图结构,并使用 LLM 进行文本生成:

  1. 安装依赖
pip install langchain langgraph
  • 1
  1. 导入模块并定义图结构
from langgraph import Graph, Node, Edge
from langchain.llms import OpenAI

# 初始化一个 OpenAI 模型
llm = OpenAI(api_key="your-api-key")

# 创建图结构
graph = Graph()

# 定义节点
node_start = Node("Start")
node_generate_text = Node("GenerateText", llm)
node_end = Node("End")

# 添加节点到图中
graph.add_node(node_start)
graph.add_node(node_generate_text)
graph.add_node(node_end)

# 定义边并连接节点
edge_1 = Edge(node_start, node_generate_text, "Start to Generate Text")
edge_2 = Edge(node_generate_text, node_end, "Generate Text to End")

# 添加边到图中
graph.add_edge(edge_1)
graph.add_edge(edge_2)

# 执行图
graph.execute({"input_text": "Hello, world!"})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

在这个示例中,我们创建了一个包含三个节点的简单图结构:起始节点、生成文本节点和结束节点。每个节点通过边进行连接,并定义了每个步骤的操作。

高级用法

LangGraph 还提供了更高级的功能,例如状态管理、动态调整工作流程、集成其他组件等。以下是一个更复杂的示例,展示了如何使用状态管理和动态调整:

from langgraph import Graph, Node, Edge, State

# 初始化图和状态
graph = Graph()
state = State()

# 定义节点和操作
node_start = Node("Start")
node_generate_text = Node("GenerateText", llm)
node_decision = Node("Decision")
node_end_positive = Node("EndPositive")
node_end_negative = Node("EndNegative")

# 添加节点到图中
graph.add_node(node_start)
graph.add_node(node_generate_text)
graph.add_node(node_decision)
graph.add_node(node_end_positive)
graph.add_node(node_end_negative)

# 定义边和条件
edge_1 = Edge(node_start, node_generate_text, "Start to Generate Text")
edge_2 = Edge(node_generate_text, node_decision, "Generate Text to Decision")
edge_positive = Edge(node_decision, node_end_positive, "Decision to End Positive", condition=lambda state: state["sentiment"] == "positive")
edge_negative = Edge(node_decision, node_end_negative, "Decision to End Negative", condition=lambda state: state["sentiment"] == "negative")

# 添加边到图中
graph.add_edge(edge_1)
graph.add_edge(edge_2)
graph.add_edge(edge_positive)
graph.add_edge(edge_negative)

# 定义决策节点的操作
def decision_action(state):
    generated_text = state["generated_text"]
    # 简单的情感分析逻辑(这里只是一个示例,可以使用更复杂的分析方法)
    if "good" in generated_text:
        state["sentiment"] = "positive"
    else:
        state["sentiment"] = "negative"

node_decision.set_action(decision_action)

# 执行图
graph.execute({"input_text": "The weather is good today!"})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

在这个高级示例中,我们通过状态管理和条件边实现了一个简单的情感分析流程,生成文本后,根据文本内容的情感决定下一步的操作。

通过 LangGraph,开发者可以灵活构建复杂的多角色应用程序,并利用 LLM 的强大功能实现智能化和自动化。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/965774
推荐阅读
相关标签
  

闽ICP备14008679号