4.3K+ Star!LangGraph:一个用于构建具有状态、多参与者应用程序的库,使用大型语言模型来创建代理和多代理工作流

项目简介

LangGraph[1] 是一个用于构建具有状态、多参与者应用程序的库,它使用大型语言模型(LLMs)来创建代理和多代理工作流程。

4.3K+ Star!LangGraph:一个用于构建具有状态、多参与者应用程序的库,使用大型语言模型来创建代理和多代理工作流

项目特点

主要特点

与其它LLM框架相比,LangGraph 提供了循环、可控性和持久性这三个核心优势。

LangGraph 允许定义涉及循环的流程,这对于大多数代理架构至关重要,这与基于有向无环图(DAG)的解决方案不同。

作为一个非常底层的框架,LangGraph 提供了对应用程序流程和状态的细粒度控制,这对于创建可靠的代理至关重要。

此外,LangGraph 还包括内置的持久性功能,支持高级的人工干预和记忆特性。

使用场景

LangGraph 可以用于创建需要复杂工作流程和状态管理的智能代理系统,例如:

  • 客户服务聊天机器人,能够记住用户之前的查询并提供连贯的回答。
  • 数据分析工具,可以执行复杂的查询并记住中间状态以供进一步分析。
  • 多步骤决策支持系统,允许用户在决策过程中进行人工干预。

使用方法

安装使用

  1. 安装:首先,你需要通过 pip 安装 LangGraph:
pip install -U langgraph
  1. 初始化模型和工具:创建一个代理需要使用的工具和模型。例如,你可以使用 langchain-anthropic 包中的 ChatAnthropic 模型,并设置一个搜索工具。

  2. 定义图节点:在 LangGraph 中,节点是执行特定任务的单元。你需要定义代理将要使用的节点,例如调用模型的节点和搜索工具的节点。

  3. 定义图的入口点和边:设置图的入口点,即首先被调用的节点。然后,定义节点之间的边,包括条件边和普通边,这些边决定了节点的执行顺序。

  4. 编译图:将定义好的图编译成一个可执行的 LangChain Runnable 对象。

  5. 执行图:使用编译后的 Runnable 对象来执行图,并传入初始状态和配置。

简单示例

以下是一个简单的示例代码,展示了如何使用 LangGraph 创建一个能够使用搜索工具的代理:

from langchain_core.tools import tool
from langchain_anthropic import ChatAnthropic
from langgraph.checkpoint import MemorySaver
from langgraph.graph import StateGraph, MessagesState
from langgraph.prebuilt import ToolNode

# 定义搜索工具
@tool
def search(query: str):
    # 这里是占位符实现,实际使用时需替换为真实的搜索逻辑
    if "sf" in query.lower() or "san francisco" in query.lower():
        return ["It's 60 degrees and foggy."]
    return ["It's 90 degrees and sunny."]

# 定义模型
model = ChatAnthropic(model="claude-3-5-sonnet-20240620", temperature=0)

# 创建图和节点
workflow = StateGraph(MessagesState)
tool_node = ToolNode()
workflow.add_node("agent", model.invoke)
workflow.add_node("tools", tool_node)

# 设置入口点和边
workflow.set_entry_point("agent")
# 定义条件边和普通边的逻辑

# 初始化内存以持久化状态
checkpointer = MemorySaver()

# 编译图
app = workflow.compile(checkpointer=checkpointer)

# 执行图
final_state = app.invoke(
    {"messages": [HumanMessage(content="what is the weather in sf")]},
    config={"configurable": {"thread_id"42}}
)

print(final_state["messages"][-1].content)
  • 这个示例展示了如何创建一个简单的代理,它可以接收关于天气的查询,并使用搜索工具返回结果。
  • 然后,代理可以根据搜索结果调用模型生成回答。通过使用内存持久化功能,即使在多次调用之间,代理也能够记住之前的交互状态。

文档和资源

  • 教程[2]
  • 操作指南[3]
  • 概念指南[4]
  • API 参考[5]
  • 云服务(beta)[6]

注:本文内容仅供参考,具体项目特性请参照官方 GitHub 页面的最新说明。

欢迎关注&点赞&在看,感谢阅读~


资源列表
[1]

Github 项目地址: https://github.com/langchain-ai/langgraph

[2]

教程: https://langchain-ai.github.io/langgraph/tutorials/

[3]

操作指南: https://langchain-ai.github.io/langgraph/how-tos/

[4]

概念指南: https://langchain-ai.github.io/langgraph/concepts/

[5]

API 参考: https://langchain-ai.github.io/langgraph/reference/graphs/

[6]

云服务(beta): https://langchain-ai.github.io/langgraph/cloud/

原文始发于微信公众号(AIGC创想者):4.3K+ Star!LangGraph:一个用于构建具有状态、多参与者应用程序的库,使用大型语言模型来创建代理和多代理工作流

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/315372.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!