本系列教程将带你了解 LangChain 和 LangGraph 的基础知识,学习如何构建智能体应用。
在 LangChain,致力于让构建大语言模型应用变得简单。你可以构建的一种大语言模型应用是智能体(agent)。构建智能体令人兴奋,因为它们可以自动化许多以前不可能完成的任务。
但在实践中,构建能够可靠执行这些任务的系统是极其困难的。在与用户合作将智能体投入生产的过程中,我们了解到通常需要更多的控制。你可能需要智能体:
为了解决这个问题,构建了 LangGraph —— 一个用于构建智能体和多智能体应用的框架。
LangGraph 的特点:
课程结构化为一系列模块,每个模块专注于与 LangGraph 相关的特定主题:
LangGraph Studio 是专门用于构建 LangGraph 应用的集成开发环境(IDE)。
开始学习之前,请确保完成以下设置步骤:
按照项目 README
中的说明创建 Python 环境并安装依赖项。
pip install --quiet -U langchain_openai langchain_core langchain_community tavily-python
你需要设置以下 API 密钥:
OPENAI_API_KEY
:用于访问 OpenAI 的聊天模型TAVILY_API_KEY
:用于搜索功能(可选)在本课程中,我们将使用聊天模型,它们的工作原理是:
重要说明:LangChain 不托管任何聊天模型,而是依赖第三方集成。
查看完整的集成列表:LangChain 聊天模型集成
默认情况下,课程使用 ChatOpenAI,原因:
import os
os.environ["MOONSHOT_API_KEY"] = "..."
from langchain_community.chat_models.moonshot import MoonshotChat
from langchain_core.messages import HumanMessage, SystemMessage
chat = MoonshotChat(model="kimi-k2-0711-preview")
Temperature(温度)参数:
from langchain_core.messages import HumanMessage
# 创建一条消息
msg = HumanMessage(content="你好", name="Lance")
# 消息列表
messages = [msg]
# 用消息列表调用模型
chat.invoke(messages)
# 回复:
AIMessage(content='你好!很高兴见到你 😊 \n有什么我可以帮你的吗?', additional_kwargs={}, response_metadata={'token_usage': {'completion_tokens': 15, 'prompt_tokens': 8, 'total_tokens': 23, 'completion_tokens_details': None, 'prompt_tokens_details': None}, 'model_name': 'kimi-k2-0711-preview', 'system_fingerprint': None, 'finish_reason': 'stop', 'logprobs': None}, id='run--106bd2c7-2d6d-4ba5-b6f9-7345256be5f8-0')
# 直接传入字符串(会自动转换为 HumanMessage)
chat.invoke("介绍一下自己")
LangChain 聊天模型提供多种默认方法:
stream
:流式返回响应块invoke
:在输入上调用链(最常用)所有聊天模型的接口都是一致的,这意味着:
Tavily 是一个专为大语言模型和 RAG(检索增强生成)优化的搜索引擎。
_set_env("TAVILY_API_KEY")
from langchain_community.tools.tavily_search import TavilySearchResults
# 创建搜索工具(最多返回3个结果)
tavily_search = TavilySearchResults(max_results=3)
# 搜索 LangGraph 相关信息
search_docs = tavily_search.invoke("LangGraph是什么?")
print(search_docs)
[{'title': 'langgraph设计解读-简介以及示例- 解码AI | 无限可能的创造力与想象力',
'url': 'https://yang20150702.github.io/2024/04/22/langgraph-part1/',
'content': 'langgraph 是一个使用LLM来构建有状态的、multi-actor应用程序的库。\n它扩展了 LangChain Expression Language的能力,能够以循环的方式跨多个计算step来协调多个chains(或者actors)。\nlanggraph 的灵感来自 Pregel 和 Apache Beam。暴露的接口借鉴了 NetworkX。\n\nPregel 是由Google发布的大规模图处理系统,基于BSP(Bulk Synchronous Parallel,整体同步并行)模型来实现。\nApache Beam:一个用于定义批处理和流数据并行处理管道的统一模型。\nNetworkX是一个 Python 包,用于创建、操作和研究复杂网络的结构、动态和功能。\n\nlanggraph的核心点是为LLM应用程序添加了循环。',
'score': 0.9094659},
{'title': '彻底搞懂LangGraph【之三】:构建一个创作电影脚本的多智能体应用',
'url': 'https://developer.volcengine.com/articles/7389518901443231781',
'content': 'LangGraph是著名的大模型开发框架LangChain推出的用于构建基于复杂工作流的LLM应用的开发库。LangGraph把任务的节点与关系用Graph结构来定义以支持更多样更复杂的应用场景,特别是:\n\n 实现包含循环、迭代等复杂工作流的高级RAG范式\n 需要更灵活控制的Agent应用,如指定Tool、增加人机交互等\n 多智能体系统(Multi-Agent System)的构建\n\n我们在之前的文章中曾经介绍过LangGraph实现C-RAG,本文将分享一个如何使用LangGraph构建 一个创作电影场景与脚本的多智能体应用 。\n\nImage 7: picture.image\n\nImage 8: picture.image\n\n如果你需要回顾LangGraph,请参考:\n\n彻底搞懂LangGraph:构建强大的Multi-Agent多智能体应用的LangChain新利器\n\n彻底搞懂LangGraph【之二】:构建一个可自我纠正的增强知识库RAG应用\n\nImage 9: picture.image\n\nImage 10: picture.image\n\n关于多智能体系统',
'score': 0.8991304},
{'title': '一文搞懂LangChain 新利器:LangGraph 原创 - CSDN博客',
'url': 'https://blog.csdn.net/musicml/article/details/136441895',
'content': '[from _langgraph_.graphimportSTART, END # 定义输入的模式 classInputState(TypedDict)_:_ question _:_ str llm_answer _:_ Optional[str]# 表示 answer 可以是 str 类型,也可以是 None # 定义输出的模式 classOutputState(TypedDict)_:_ answer _:_ str #将 InputState 和 OutputState 这两个 TypedDict 类型合并成一个更全面的字典类...](\n\n_LangGraph_ 简介\n\n大多_C的博客\n\n06-01Image 49 1607 \n\n_LangGraph_ 是 _LangChain_ 的一个扩展,旨在通过将步骤建模为图中的边缘和节点,构建具有大型语言模型(LLMs)的强大和有状态的多角色应用程序。_LangGraph_ 提供了用于创建常见类型代理的高级接口,以及用于组合自定义流程的低级 API。 [...] Image 11Image 12点赞数 21 \n\n文章标签:langchain\n\n 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。 \n\n 本文链接:\n\n版权\n\nImage 13MCP技术社区 文章已被社区收录\n\n加入社区\n\n▼最近直播超级多,预约保你有收获\n\n今天直播:《RAG和GPTs构建Agent产业应用落地实战》\n\n_\\_—\\_ \\_1\\__ _—_\n\nLangGraph 技术架构解读\n\nLangGraph 是一个有用于构建有状态和多角色的 Agents 应用,它并不是一个独立于 Langchain 的新框架,而是基于 Langchain 之上构建的一个扩展库,可以与 Langchain 现有的链(Chains)、LangChain Expression Language(LCEL)等无缝协作。LangGraph 能够协调多个 Chain、Agent、Tool 等共同协作来完成输入任务,支持 LLM 调用“循环”和 Agent 过程的更精细化控制。 [...] _LangGraph_ 是一个基于 _LangChain_ 构建的扩展。_LangGraph_ 是一个用于构建具有状态和多参与者应用程序的 LLM 库,它允许创建具有循环的图,这在大多数智能体架构中是必需的。_LangGraph_ 提供了对应用程序流程和状态的细粒度控制,这对于创建可靠的智能体至关重要,并且 _LangGraph_ 还内置了包括持久化对话,支持高级的人机交互和记忆功能。\n\n_langchain_ 系列(六)- _LangGraph_ 入门以及介绍\n\n5-23\n\n二、LangGrah介绍 1、基础介绍 2、_LangChain_ 各版本图示 三、为什么使用 _LangGraph_ 1、链(Chain)的局限性 2、AgentExecutor的局限性 3、_LangGraph_ 解决的问题 四、_LangGraph_ 核心思想 1、核心概念 (1)state 状态 (2)node 节点 (3)edge 边 2、流程说明\n\n一步步教你 _LangGraph_ Studio _:_ 可视化调试基于 _LangGraph_ 构建的AI智能...\n\n5-25',
'score': 0.8893851}]
通过本教程,你已经学会了:
现在你已经掌握了基础知识,可以继续学习: