赞
踩
LangGraph 是 LangChain 的一个扩展,旨在通过将步骤建模为图中的边缘和节点,构建具有大型语言模型(LLMs)的强大和有状态的多角色应用程序。LangGraph 提供了用于创建常见类型代理的高级接口,以及用于组合自定义流程的低级 API。
LangGraph 将应用程序的工作流程表示为一个图结构,其中:
这种图形结构允许创建复杂的、有状态的多角色应用程序,每个角色可以独立执行操作,互相通信,并根据前一步骤的结果动态调整。
以下是一个基本的 LangGraph 用法示例,展示了如何创建一个简单的图结构,并使用 LLM 进行文本生成:
pip install langchain langgraph
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!"})
在这个示例中,我们创建了一个包含三个节点的简单图结构:起始节点、生成文本节点和结束节点。每个节点通过边进行连接,并定义了每个步骤的操作。
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!"})
在这个高级示例中,我们通过状态管理和条件边实现了一个简单的情感分析流程,生成文本后,根据文本内容的情感决定下一步的操作。
通过 LangGraph,开发者可以灵活构建复杂的多角色应用程序,并利用 LLM 的强大功能实现智能化和自动化。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。