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

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/

相关文章:

  • Lucky配置反向代理+Https安全访问AxureCloud服务(解决证书续签问题)
  • 基于Hadoop的音乐推荐系统(源码+lw+部署文档+讲解),源码可白嫖!
  • Linux基础学习--linux的文件权限与目录配置
  • C++ 封装成DLL,C#调用
  • Linux卸载删除gitlab
  • JVM内存模型与垃圾回收
  • cgroup threaded功能例子
  • 工厂模式:简单工厂模式
  • 使用纯前端技术html+css+js实现一个蔬果商城的前端模板!
  • 【LeetCode】1.两数之和
  • 重新定义户外防护!基于DeepSeek的智能展开伞棚系统技术深度解析
  • Cpp实现window上cmd执行效果
  • 2025.4.21日学习笔记 JavaScript String、Array、date、math方法的使用
  • linux基础学习--linux文件与目录管理
  • 目标检测篇---Fast R-CNN
  • 四元数转旋转矩阵
  • 第一篇:从哲学到管理——实践论与矛盾论如何重塑企业思维
  • Java高频面试之并发编程-04
  • 瑞吉外卖-分页功能开发中的两个问题
  • Python爬虫实战:获取高考网专业数据并分析,为志愿填报做参考
  • 上海开展数据产品知识产权登记存证试点,243个产品许可收益超20亿元
  • 花3000元就能买“国际机构”的证书?揭秘假证产业链
  • 全球安全倡议提出三周年,外交部介绍有关情况
  • 人均300+的日料,是后厨拆开的预制料理包
  • 承认出现误判,以军公布加沙救护车队遭袭事件调查结果
  • “明制美学”的舞台呈现,陆川导演首部舞剧《天工开物》