想象您正在构建一个复杂的,多功能的大语言模型(LLM)应用程序。令人兴奋,但面临挑战:管理各种代理的状态,协调他们的互动,并有效地处理错误。这是Langgraph可以提供帮助的地方。
Langgraph是Langchain生态系统中的图书馆,旨在正面应对这些挑战。 Langgraph提供了一个以结构化的方式定义,协调和执行多个LLM代理(或链)的框架。>它通过启用周期性图的创建来简化开发过程,这对于开发代理的运行时间至关重要。使用Langgraph,我们可以轻松地构建健壮,可扩展和灵活的多代理系统。
如果您想了解有关Langchain生态系统的更多信息,我建议您对Langchain介绍。>
什么是langgraph?
想象您的应用程序作为有向图。在langgraph中,每个节点代表LLM代理,边缘是这些试剂之间的通信通道。这种结构允许清晰可管理的工作流程,每个代理执行特定的任务并根据需要将信息传递给其他代理。
>
容错
基本概念 互动
>步骤1:定义状态图
编译图以创建一个编译对象,并且可以选择地使用下面的代码可视化图形结构: 步骤5:运行聊天机器人 高级langgraph功能 langgraph允许您创建自定义节点类型来实现复杂的代理逻辑。这提供了对应用程序行为的灵活性和控制。 边缘类型
Langgraph提供强大的状态管理技术,其中包括使用SQLITE,PostgreSQL和MongoDB等外部数据库,或使用Amazon S3,Google Cloud Storage和Azure Blob存储等云存储解决方案存储并检索您的代理商的状态,可靠性和可伸缩性。
>
推荐系统 如果您想了解有关Langchain生态系统中开发应用程序的更多信息,我建议您使用Langchain开发LLM应用程序的课程。图形结构
Langgraph的出色功能之一是其自动状态管理。此功能使我们能够在多个交互之间跟踪和持久信息。当代理执行任务时,状态将动态更新,确保系统保持上下文并适当响应新的输入。
协调
正如我上面提到的那样,Langgraph为使用复杂LLM应用程序的开发人员提供了一些重要的优势。这是Langgraph提供的一些现实世界的好处。
简化的开发
在Langgraph的情况下,开发人员可以灵活地定义自己的代理逻辑和通信协议。这允许针对特定用例量身定制的高度定制应用程序。无论您是否需要一个可以处理各种用户请求的聊天机器人,还是执行复杂任务的多代理系统,Langgraph都提供了构建所需内容的工具。这一切都是为了赋予您创建的力量。
langgraph旨在支持大规模多代理应用程序的执行。其强大的架构可以处理大量的交互和复杂的工作流程,从而可以开发可扩展的系统,这些系统可以随您的需求而增长。这使其适用于企业级应用程序和方案,而性能和可靠性至关重要。
开始使用langgraph >
>安装
pip install -U langgraph
与LLM
状态:状态是图表中的节点随时间更新的中心对象。它管理您的应用程序的内部状态,并且可以根据申请的要求覆盖或添加。这种状态可以容纳以下内容:
这是使用langgraph创建基本聊天机器人应用程序的分步示例。
>定义一个状态图对象,以将聊天机器人构造为状态计算机。状态是一个类型列表的单个关键消息定义的类对象,并使用add_messages()函数来附加新消息,而不是覆盖它们。
pip install -U langgraph
>在这里,我们初始化AzureChatopenai模型,并创建一个简单的聊天机器人函数,该函数将状态消息作为输入输入并生成消息响应(随后将其应用于状态)。
此聊天机器人函数被添加为名为“聊天机器人”的节点。
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)
# Set entry and finish points
graph_builder.set_entry_point("chatbot")
graph_builder.set_finish_point("chatbot")
自定义节点类型
graph = graph_builder.compile()
from IPython.display import Image, display
try:
display(Image(graph.get_graph().draw_mermaid_png()))
except Exception:
pass
>在这里,我们定义了一个封装自定义逻辑并与LLM交互的类mycustomnode。这提供了实施复杂节点行为的更具结构化和可维护的方法。
>
要创建一个条件边缘,您需要三个组件:
>
pip install -U 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在构建应用程序中擅长于多个代理以实现共同目标的构建应用程序。例如,不同的代理可以在供应链管理系统中管理库存,过程订单和协调交货。 Langgraph的协调能力确保每个代理商都有有效的交流,共享信息并以同步方式做出决策。这会导致更有效的操作和更好的整体系统性能。
>随着langgraph,自动化业务流程和工作流程变得很简单。智能代理可以设计用于处理诸如文档处理,批准工作流和数据分析之类的任务。通过定义清晰的工作流并利用Langgraph的国家管理,这些工具可以执行复杂的动作序列,而无需人为干预,降低错误并提高生产率。
结论
通过提供一个结构化的框架来管理状态和协调代理相互作用,
以上是Langgraph教程:Langgraph是什么,如何使用它?的详细内容。更多信息请关注PHP中文网其他相关文章!