LangGraph基础教程
LangChain 基础教程
本系列教程将带你了解 LangChain 和 LangGraph 的基础知识,学习如何构建智能体应用。
🌟 背景介绍
在 LangChain,致力于让构建大语言模型应用变得简单。你可以构建的一种大语言模型应用是智能体(agent)。构建智能体令人兴奋,因为它们可以自动化许多以前不可能完成的任务。
🤔 现实挑战
但在实践中,构建能够可靠执行这些任务的系统是极其困难的。在与用户合作将智能体投入生产的过程中,我们了解到通常需要更多的控制。你可能需要智能体:
- 总是先调用特定工具
- 根据其状态使用不同的提示
- 具备更精确的控制能力
💡 解决方案:LangGraph
为了解决这个问题,构建了 LangGraph —— 一个用于构建智能体和多智能体应用的框架。
LangGraph 的特点:
- 独立于 LangChain 包
- 核心设计理念:帮助开发者在智能体工作流中添加更好的精确性和控制
- 适用于现实世界系统的复杂性
📖 课程结构
课程结构化为一系列模块,每个模块专注于与 LangGraph 相关的特定主题:
📁 文件组织
- 模块文件夹:每个模块都有独立的文件夹
- 笔记本系列:每个文件夹包含一系列教学笔记本
- 视频配套:每个笔记本都配有讲解视频
- 独立学习:笔记本可以独立于视频查看
- Studio 文件夹:包含可加载到 LangGraph Studio 的图形文件
LangGraph Studio 是专门用于构建 LangGraph 应用的集成开发环境(IDE)。
⚙️ 环境设置
开始学习之前,请确保完成以下设置步骤:
1. 创建环境
按照项目 README
中的说明创建 Python 环境并安装依赖项。
2. 安装必要的包
pip install --quiet -U langchain_openai langchain_core langchain_community tavily-python
3. 配置 API 密钥
你需要设置以下 API 密钥:
OPENAI_API_KEY
:用于访问 OpenAI 的聊天模型TAVILY_API_KEY
:用于搜索功能(可选)
🤖 聊天模型详解
什么是聊天模型?
在本课程中,我们将使用聊天模型,它们的工作原理是:
- 输入:接受一系列消息
- 输出:返回聊天消息
🔗 第三方集成
重要说明:LangChain 不托管任何聊天模型,而是依赖第三方集成。
查看完整的集成列表:LangChain 聊天模型集成
🎯 推荐模型:ChatOpenAI
默认情况下,课程使用 ChatOpenAI,原因:
- ✅ 受欢迎且广泛使用
- ✅ 性能优异
- ✅ 稳定可靠
💰 费用说明
- 新用户福利:首次注册 API 可获得免费积分
- 定价信息:查看官方定价页面
- 模型推荐:
gpt-4o
:质量、价格、速度的最佳平衡(推荐)gpt-3.5-turbo
:更经济的选择
🛠️ 实践操作
配置聊天模型
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(温度)参数:
- 低温度(接近 0):
- 更确定性和专注的输出
- 适用于需要准确性或事实性回应的任务
- 高温度(接近 1):
- 更有创造性和多样性
- 适用于创造性任务或生成多样化回应
步骤 3:使用聊天模型
方法一:使用消息对象
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
Tavily 是一个专为大语言模型和 RAG(检索增强生成)优化的搜索引擎。
✨ Tavily 的优势
- 🚀 高效快速:专为 LLM 优化的搜索结果
- 🎯 持久稳定:提供可靠的搜索服务
- 💰 慷慨免费层:注册简单,免费额度充足
- 🔧 易于集成:与 LangChain 无缝集成
🛠️ 配置和使用
步骤 1:设置 API 密钥
_set_env("TAVILY_API_KEY")
步骤 2:创建搜索工具
from langchain_community.tools.tavily_search import TavilySearchResults# 创建搜索工具(最多返回3个结果)
tavily_search = TavilySearchResults(max_results=3)
步骤 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}]
🎓 课程总结
🎉 恭喜!你已经完成了基础教程
通过本教程,你已经学会了:
✅ 核心概念
- 理解了 LangChain 和 LangGraph 的作用和价值
- 掌握了智能体应用的基本概念
- 了解了课程的整体结构
✅ 技术技能
- 配置和使用 chat聊天模型
- 理解温度参数对输出的影响
- 掌握消息对象和字符串输入的使用方法
- 集成和使用 Tavily 搜索工具
✅ 实践能力
- 环境设置和依赖管理
- API 密钥的安全配置
- 基本的模型调用和结果处理
🚀 下一步学习
现在你已经掌握了基础知识,可以继续学习:
- 模块 1:深入了解 LangGraph 的核心功能
- 模块 2:构建你的第一个智能体
- 模块 3:多智能体协作
- 模块 4:高级搜索和 RAG 应用