当前位置: 首页 > backend >正文

LangGraph(一)——QuickStart样例中的第一步

目录

  • 1. LangGraph简介
  • 2. 使用uv初始化项目
  • 3. 官网QuickStart——第一步:构建一个ChatBot(仅关注Graph的构建即可)
    • 3.1 配置大模型API_KEY
    • 3.2 初始化StateGraph
    • 3.3 添加chatbot node
    • 3.4 添加edges
    • 3.5 可视化StateGraph
    • 3.6 构建聊天循环
  • 参考

1. LangGraph简介

  LangGraph是一个用于构建可控Agent的底层编排框架。LangGraph支持Agent编排——提供可定制的框架、长期记忆和人机协同功能,以达到可靠处理复杂任务的目的。同时,LangChain提供集成和可组合的组件,以达到简化LLM应用程序开发的目的。

2. 使用uv初始化项目

  Windows上安装uv管理器:
  powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  使用uv初始化项目:
  uv init <your-project-name>
  安装项目依赖:
  uv add langgraph langchain-deepseek

3. 官网QuickStart——第一步:构建一个ChatBot(仅关注Graph的构建即可)

3.1 配置大模型API_KEY

  在Windows上配置环境变量XXX_API_KEY,LangGraph是通过环境变量来获取大语言模型的API_KEY。下面的代码是官网上配置API_KEY环境变量的代码。

import getpass
import osdef _set_env(var: str):if not os.environ.get(var):os.environ[var] = getpass.getpass(f"{var}: ")_set_env("DEEPSEEK_API_KEY")

  如果没有事先在Windows上配置好环境变量,会弹出一个输入框,然后将该变量的值写入到环境变量中。

3.2 初始化StateGraph

  构建一个ChatBot的第一步是创建一个StateGraph。StateGraph将ChatBot的结构定义为一个状态机,接着需要添加表示ChatBot调用的大语言模型和函数的nodes,以及表示该Bot在这些函数之间如何变化的edges。

from typing import Annotatedfrom typing_extensions import TypedDictfrom langgraph.graph import StateGraph, START, END
from langgraph.graph.message import add_messagesclass State(TypedDict):# Messages have the type "list". The `add_messages` function# in the annotation defines how this state key should be updated# (in this case, it appends messages to the list, rather than overwriting them)messages: Annotated[list, add_messages]graph_builder = StateGraph(State)

  上面代码中的StateGraph处理两个关键任务:
  1. 每个node能接收作为输入的当前State,输出对State的更新。
  2. 对messages的更新将被追加到已经存在的list中。

3.3 添加chatbot node

  Nodes代表工作单元,通常是常规的Python函数。通过如下的代码在StateGraph中添加chatbot node:

from langchain_deepseek import ChatDeepSeekllm = ChatDeepSeek(model="deepseek-chat")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)

  上面定义的chatbot node函数以当前State作为输入,输出一个键为messages,值为更新后messages列表的字典。这是LangGraph中典型的node函数。此外,State中的add_messages函数会追加大语言模型的响应消息。

3.4 添加edges

  添加进入点以告诉StateGraph何处开始工作:
  graph_builder.add_edge(START, "chatbot")
  添加结束点以告诉StateGraph运行哪个node时结束:
  graph_builder.add_edge("chatbot", END)
  在运行StateGraph之前需要调用compile()函数以获取编译后的Graph:
  graph = graph_builder.compile()

3.5 可视化StateGraph

  可以通过如下的代码可视化前面构建的Graph:

from IPython.display import Image, displaytry:display(Image(graph.get_graph().draw_mermaid_png()))
except Exception:# This requires some extra dependencies and is optionalpass

  Graph的可视化结果:
在这里插入图片描述

3.6 构建聊天循环

  可以通过如下的代码构建聊天循环,当输入quit、exit或q时,结束聊天:

def stream_graph_updates(user_input: str):for event in graph.stream({"messages": [{"role": "user", "content": user_input}]}):for value in event.values():print("Assistant:", value["messages"][-1].content)while True:try:user_input = input("User: ")if user_input.lower() in ["quit", "exit", "q"]:print("Goodbye!")breakstream_graph_updates(user_input)except:# fallback if input() is not availableuser_input = "What do you know about LangGraph?"print("User: " + user_input)stream_graph_updates(user_input)break

  运行后,在输入框内输入目前的AI Agent框架有哪些?
在这里插入图片描述
  得到大模型的响应消息后,重新弹出输入框,在其中输入exit。
在这里插入图片描述
  结束聊天循环的同时输出如下的文本:

Assistant: 目前AI Agent框架发展迅速,涵盖从研究原型到工业级应用的多种工具。以下按类别整理主要框架,并附关键特点:---### **一、通用型开发框架**
1. **LangChain**  - 特点:模块化设计,支持多模型、工具调用和记忆管理  - 场景:快速构建RAG应用、自动化工作流  - 新增:LangGraph支持复杂Agent工作流编排  2. **AutoGen (Microsoft)**  - 特点:多Agent对话框架,支持自定义角色协作  - 优势:内置优化的人机交互模式  3. **Semantic Kernel (Microsoft)**  - 定位:企业级插件编排框架  - 集成:深度兼容Azure OpenAI服务  4. **LlamaIndex**  - 专长:数据连接与检索增强生成(RAG)  - 进阶:支持结构化/非结构化数据混合查询  ---### **二、智能体平台(低代码/云服务)**
1. **ReAct (Google Research)**  - 学术框架:基于"Reasoning + Acting"的经典范式  - 影响:成为后续许多框架的理论基础  2. **AutoGPT**  - 标志性项目:首个展示自主目标分解的Agent  - 局限:高token消耗,适合实验性场景  3. **BabyAGI**  - 轻量化:基于任务队列的简约实现  - 衍生:TaskWeaver等专业框架的前身  ---### **三、垂直领域框架**
1. **Hugging Face Transformers Agents**  - 优势:直接调用数千个HF模型作为工具  - 生态:无缝衔接开源模型库  2. **JARVIS (Microsoft)**  - 特色:多模态任务规划(CV+NLP+机器人控制)  3. **Voyager (Minecraft AI)**  - 案例:游戏内自主探索的具身智能体  ---### **四、新兴研究方向**
1. **CrewAI**  - 创新点:面向企业流程的Agent角色编排  2. **GPT Engineer**  - 代码生成:通过自然语言生成完整代码库  3. **OpenAI Assistant API**  - 商业化方案:内置持久化记忆和文件处理  ---### **五、底层支持库**
1. **PyTorch Lightning + RLlib**  - 适用:需要强化学习的Agent开发  2. **DSPy (Stanford)**  - 突破:将提示词优化转化为可训练模块  ---### **选择建议**
- **快速验证**:LangChain + OpenAI API  
- **复杂系统**:AutoGen多Agent协作  
- **生产部署**:Semantic Kernel + Azure集成  
- **开源可控**:LlamaIndex + 本地LLM  2024年趋势关注:  
- Agent间通信协议标准化  
- 长周期记忆存储方案  
- 与机器人系统的深度集成  需要具体场景的框架推荐,可进一步说明需求细节。
Goodbye!

参考

https://langchain-ai.github.io/langgraph/tutorials/introduction/

http://www.xdnf.cn/news/929.html

相关文章:

  • linux sysfs的使用
  • XAttention
  • 初识Redis · C++客户端list和hash
  • 爬楼梯(每日一题-简单)
  • 240422 leetcode exercises
  • 13 数据存储单位与 C 语言整数类型:从位到艾字节、常见整数类型及其范围、字面量后缀、精确宽度类型详解
  • Kotlin基础(①)
  • 条件变量底层实现原理
  • 2025 年职业院校技能大赛网络建设与运维赛项Docker赛题解析
  • Spark SQL概述(专业解释+生活化比喻)
  • Redis专题
  • NLP高频面试题(四十九)大模型RAG常见面试题解析
  • 基于大模型的血栓性外痔全流程风险预测与治疗管理研究报告
  • 检测IP地址欺诈风险“Scamalytics”
  • M2N2 解读
  • 卷积神经网络--手写数字识别
  • Spark-SQL(四)
  • 微服务架构下数据库范式的失效与反范式设计的崛起
  • 将长循环任务拆分成多个小步骤,以非阻塞的方式执行,在裸机环境下的实现方法
  • 【第16届蓝桥杯C++C组】--- 2025
  • vue2练习项目 家乡特色网站—前端静态网站模板
  • 8. ROS中常见命令
  • Vue中如何优雅地阻止特定标签的移除并恢复其原始位置
  • 代码随想录算法训练营Day32
  • 在线查看【免费】 txt, xml(渲染), md(渲染), java, php, py, js, css 文件格式网站
  • CFIS-YOLO:面向边缘设备的木材缺陷检测轻量级网络解析
  • 从零开始了解数采(十七)——工业数据清洗
  • 【计算机网络】第五章 局域网技术
  • 你学会了些什么220622?--搭建UI自动化
  • 设计模式深度总结:概念、实现与框架中的应用