用 LangGraph 搭一套企业级 Coding Workflow,聊聊我的思路

公司前一阵子在折腾 LangGraph,想把团队里从需求到上线的整个编码流程串起来。传统的 CI/CD 管道大家都熟,但如果把 LLM 能力嵌进去,让每个环节都带上"智能判断",体验完全不一样。这里分享下我的方案和踩坑记录。

为什么选 LangGraph

LangChain 的 Chain 模式是线性的,而真实的开发流程充满分支——代码写完可能要打回重写,合规审查不过要回到开发阶段。LangGraph 天然支持有向图 + 条件路由,节点之间可以灵活跳转,非常适合这种有状态、有循环的工作流。

整体架构

我把流程拆成五个核心节点:

需求分析 → 代码开发 → Code Review → 合规审查 → 部署运维
              ↑            |              |
              └── 打回 ────┘              |
              ↑                           |
              └────── 合规不通过 ─────────┘

关键在于两个回路:Review 不通过回开发,合规不通过也回开发。这就是 LangGraph 比纯 Chain 强的地方。

核心代码

from langgraph.graph import StateGraph, END
from typing import TypedDict

class WorkflowState(TypedDict):
    requirement: str
    code: str
    review_passed: bool
    compliance_passed: bool
    deploy_status: str
    retry_count: int

def develop(state: WorkflowState) -> WorkflowState:
    """代码开发节点,基于需求生成/修改代码"""
    # 实际项目里这里调 LLM 生成代码
    state["code"] = f"generated code for: {state['requirement']}"
    return state

def code_review(state: WorkflowState) -> WorkflowState:
    """Code Review 节点,检查代码质量、规范、安全漏洞"""
    # LLM 做静态分析 + 规则引擎兜底
    state["review_passed"] = True  # 简化示意
    return state

def compliance_check(state: WorkflowState) -> WorkflowState:
    """合规审查,检查许可证、数据隐私、行业法规"""
    state["compliance_passed"] = True
    return state

def deploy(state: WorkflowState) -> WorkflowState:
    """部署上线"""
    state["deploy_status"] = "deployed"
    return state

def monitor(state: WorkflowState) -> WorkflowState:
    """运维监控,异常时可触发回滚"""
    state["deploy_status"] = "running_stable"
    return state

# 条件路由
def after_review(state: WorkflowState):
    return "compliance_check" if state["review_passed"] else "develop"

def after_compliance(state: WorkflowState):
    return "deploy" if state["compliance_passed"] else "develop"

# 构建图
graph = StateGraph(WorkflowState)
graph.add_node("develop", develop)
graph.add_node("code_review", code_review)
graph.add_node("compliance_check", compliance_check)
graph.add_node("deploy", deploy)
graph.add_node("monitor", monitor)

graph.set_entry_point("develop")
graph.add_edge("develop", "code_review")
graph.add_conditional_edges("code_review", after_review)
graph.add_conditional_edges("compliance_check", after_compliance)
graph.add_edge("deploy", "monitor")
graph.add_edge("monitor", END)

workflow = graph.compile()

# 执行
result = workflow.invoke({
    "requirement": "实现用户数据导出接口",
    "code": "", "review_passed": False,
    "compliance_passed": False, "deploy_status": "",
    "retry_count": 0
})

几个实践要点

1. 一定要加重试上限。 回路如果不设 retry_count 上限,Review 和合规反复打回会死循环。我一般设 3 次,超过直接走人工审批分支。

2. Review 节点别只靠 LLM。 纯 LLM 做 Code Review 会漏掉很多边界问题。我的做法是 LLM 负责逻辑和设计层面的审查,再叠一层 SonarQube 或 Semgrep 做规则扫描,两者结果合并判断。

3. 合规审查要结构化。 不同行业的合规要求差异很大,把检查项拆成 checklist 传给 LLM,让它逐项判断并给出理由,比丢一段代码让它"看看有没有问题"靠谱得多。

4. State 持久化。 企业场景下流程可能跨天执行,LangGraph 支持 checkpoint 机制,搭配 Redis 或 PostgreSQL 做状态持久化,中断后可以从断点恢复。

5. 部署运维节点考虑接真实工具链。 deploy 节点可以通过 Tool Calling 对接 Kubernetes API 或 Terraform,monitor 节点接 Prometheus 告警,形成闭环。

小结

LangGraph 的核心价值在于把"判断"和"流转"解耦了。每个节点专注做一件事,路由逻辑集中管理,扩展新节点几乎零成本。在企业场景里,配合状态持久化和重试机制,稳定性完全够用。

#AI求职实录#
全部评论
确实实用,蹲一个细节!
点赞 回复 分享
发布于 03-01 11:20 四川

相关推荐

昨天 16:19
已编辑
长沙学院 Java
如果你现在想入行AI,别一上来就啃什么反向传播、数学推导,大概率坚持不下来。直接奔着RAG去,这是企业最缺、上手最快、简历最好写的方向。RAG到底是啥?全称检索增强生成,说白了就一句话:让AI学会翻资料再回答问题。以前的大模型全凭“脑子里的知识”答题,问它“咱们公司年假怎么休”,它直接懵——它又没在你公司上过班。RAG不一样:你先把自己公司的员工手册、技术文档、会议纪要、客服聊天记录全喂进去,存在一个叫“向量数据库”的地方。员工来问问题,系统先去库里找相关材料,然后把材料+问题一起给大模型,模型照着材料回答。效果立竿见影:客服不用翻几百页手册了,秒回客户问题新员工入职,自己问AI就能熟悉业务代码报错了,AI自动查历史bug库给解决方案销售要写方案,AI去库里翻过往中标文档做参考为啥企业抢着要?因为每个公司都有自己的知识积累,通用的GPT用不上。而RAG能把公司内部经验和AI能力打通,成本低、见效快、不出错。老板一听就两眼放光。入门学啥?就两样:1. 向量数据库——存知识的地方。学学怎么把文档切碎、转成向量、存进去、搜出来。主流的Chroma、Milvus、Pinecone挑一个玩熟。2. LangChain——搭流程的工具。学学怎么把“查资料+问模型”串成一条流水线,文档怎么切、怎么搜、怎么拼给模型。怎么做项目?就做一个:公司内部知识库问答机器人。拿几百页员工手册或者技术文档,搭一个能回答任何内部问题的机器人。部署到飞书、钉钉或者企业微信上,真能让同事用起来。这个项目往简历上一写,面试官一看:这人来了就能干活。
现在入门AI应该走哪些方...
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务