讲师中心 微信公众号
AI工具推荐 视频效率加速

Grok与LangGraph结合:构建支持循环与分支的复杂AI Agent

千敏酱_8097

千敏酱_8097

发布时间:2026-06-13 17:20:18

|

602人浏览过

|

来源于php中文网

原创

LangGraph可构建具备多轮自我修正、条件跳转与人工干预能力的AI Agent:需用TypedDict定义状态、add_conditional_edges实现分支、add_edge构造循环,并通过human_review节点与stream调试确保可控性。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

grok与langgraph结合:构建支持循环与分支的复杂ai agent

你需要让Grok大模型驱动的AI Agent具备多轮自我修正、条件跳转和人工干预能力,而不是写一堆if-else硬逻辑去模拟流程。LangGraph提供的图结构恰好能承载这种动态行为,而Grok可通过LangChain适配器无缝接入。

准备Grok模型接入环境

第一步,安装支持Grok的LangChain组件。Grok-2和Grok-3均通过xai官方API提供服务,必须使用langchain-xai包而非通用openai兼容层:
pip install langchain-xai

第二步,设置环境变量。XAI要求显式声明API密钥与模型版本,不能省略model参数:
【XAI_API_KEY必须设为有效密钥,否则后续所有节点调用会静默失败】
export XAI_API_KEY="your_actual_xai_key_here"
export GROK_MODEL_NAME="grok-beta"

第三步,初始化Grok LLM实例。注意:必须传入model_name,且不能使用ChatOpenAI类——它会绕过xai专用认证流程:
from langchain_xai import ChatXAI
llm = ChatXAI(model_name="grok-beta", temperature=0.3)

定义带循环与分支的状态结构

LangGraph不接受普通字典作为状态容器,必须用TypedDict严格声明字段类型和合并策略。messages字段若未标注operator.add,新消息将覆盖旧消息而非追加:
from typing import TypedDict, Annotated
import operator
from langchain_core.messages import AnyMessage

class AgentState(TypedDict):
  messages: Annotated[list[AnyMessage], operator.add]
  retry_count: int
  needs_human_review: bool

这一步漏掉Annotated和operator.add,会导致对话历史在节点间流转时丢失——你看到的“Agent突然忘记前文”问题几乎都源于此。

构建含条件边与循环边的图

方法一:用add_conditional_edges实现意图驱动分支
先注册基础节点:
graph.add_node("router", router_func)
graph.add_node("search", search_tool_node)
graph.add_node("analyze", analyze_node)
graph.add_node("human_review", human_review_node)

Grok
Grok

Grok是由埃隆·马斯克旗下xAI公司开发的AI助手,2023年11月推出。其最大特色是与X平台深度整合,可实时获取最新信息,并以幽默、直率的对话风格区别于其他AI。功能涵盖文本问答、图像生成、文档分析及语音交互,最新版本已具备多模态识别与深度推理能力。

下载

再添加条件边——注意返回值必须是字符串,且必须与已注册节点名完全一致:
graph.add_conditional_edges(
  "router",
  lambda state: "search" if "查" in state["messages"][-1].content else "analyze"
)

方法二:用add_edge实现强制循环回退
当分析结果置信度低于阈值时,需要回到router重新决策。此时不能用conditional edge(它只支持单次判断),而要用显式add_edge构造循环路径:
graph.add_edge("analyze", "router")
但必须配合状态更新逻辑:在analyze_node函数末尾手动设置state["retry_count"] += 1,并在router中检查该值是否超限,否则会无限循环。

方法三:插入人工干预节点并保留上下文
在关键决策点插入human_review节点后,必须确保其输出能被后续节点读取。LangGraph默认不自动传播状态,需显式返回完整state字典:
def human_review_node(state: AgentState) -> AgentState:
  # 调用外部审批接口或等待人工输入
  state["needs_human_review"] = False
  return state # 必须return,否则状态丢失

编译并运行支持流式输出的Agent

第一步:调用compile()生成可执行图实例。不调用compile就直接run会抛出AttributeError:
app = graph.compile()

第二步:启用stream()进行单步调试。这是排查死循环最有效的手段——每步执行后立即打印当前节点名和状态快照:
for chunk in app.stream({"messages": [HumanMessage(content="帮我查上海今天天气")]}, stream_mode="values"):
  print("→", list(chunk.keys())[-1])

第三步:传入config参数启用检查点持久化。没有这个参数,中断后无法恢复状态:
config = {"configurable": {"thread_id": "abc123"}}
result = app.invoke({"messages": [...]}, config=config)

第四步:验证循环退出机制。向router节点注入伪造的低置信度响应,观察是否在retry_count达到3时跳转至human_review节点——这是唯一能确认循环控制逻辑生效的操作。

热门AI工具

更多
音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
Grok使用教程大全
Grok使用教程大全

从注册登录到高级提示词应用,全面讲解Grok使用教程、常见问题解决方案和效率提升技巧。

482

2026.06.12

Grok工具推荐合集
Grok工具推荐合集

本专题整合了Grok工具合集,阅读专题下面的文章了解更多详细内容。

402

2026.06.12

Grok AI模型选择推荐
Grok AI模型选择推荐

本专题整合了Grok模型推荐指南,阅读专题下面的文章了解更多详细内容。

582

2026.06.12

grok搭建部署教程合集
grok搭建部署教程合集

本专题整合了grok搭建部署教程合集,阅读专题下面的文章了解更多详细内容。

598

2026.06.12

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

120

2026.09.30

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

100

2026.09.30

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

80

2026.09.30

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

60

2026.09.30

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

80

2026.09.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Grok官方手册
Grok官方手册

共0课时 | 0人学习

文心快码产品文档
文心快码产品文档

共0课时 | 0人学习

扣子入门级教程
扣子入门级教程

共0课时 | 272人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn