在什么业务场景下,你会建议直接使用 Python 原生代码加 LLM API,而不是引入 LangGraph 框架?
在进行大模型应用开发时,“到底是用框架还是用原生代码”是一个非常经典的架构决策。
LangGraph 的核心价值在于处理复杂的、有状态的、包含循环逻辑(Cyclic)的 Agent 协同。如果你的业务场景不需要这些高级特性,引入 LangGraph 反而会带来陡峭的学习曲线、调试困难和性能损耗。
以下业务场景下,我强烈建议直接使用 Python 原生代码 + LLM API(如 OpenAI SDK),而不是引入 LangGraph:
1. 单步或纯线性的数据处理流 (Linear Pipelines)
如果你的业务流程是典型的“输入 -> 处理 -> 输出”,或者是线性的步骤(A -> B -> C),完全不需要 Agent 的“自主决策”或“循环反思”。
- 具体场景:
- 信息抽取: 批量从发票、简历、合同中提取结构化字段(JSON)。
- 内容生成流水线: 比如写文章(生成大纲 -> 扩写段落 -> 润色)。
- 文本分类/情感分析: 将用户评论打上标签并存入数据库。
- 为什么不用 LangGraph: 普通的 Python 函数(
def step1(),def step2())或简单的异步代码(asyncio)就能完美解决。LangGraph 处理有向无环图(DAG)或者单步任务显得大材小用,徒增代码复杂度和抽象成本。
2. 标准的 RAG(检索增强生成)系统
基础的知识库问答系统,其核心逻辑非常明确且固定:用户提问 -> 向量检索 -> 拼接 Prompt -> LLM 回答。
- 具体场景:
- 企业内部规章制度问答助手。
- 电商平台的智能客服(查阅商品手册)。
- 为什么不用 LangGraph: 标准 RAG 不涉及“大模型自己决定是否去搜索、搜索什么”。使用原生代码控制数据库查询(比如原生接入 Qdrant/Milvus),再调用 LLM API,代码通常只有几十行,且排错(Debug)非常清晰。
3. 对延迟(Latency)和并发要求极高的场景
任何框架都会带来额外的运行时开销(Overhead),LangChain/LangGraph 生态底层的序列化、事件回调和状态机管理会消耗宝贵的毫秒级时间。
- 具体场景:
- 实时语音对话机器人: 要求极低的 TTFT(首字返回时间)。
- 代码补全工具(类似 Copilot): 在用户敲击键盘的瞬间需要返回结果。
- 高并发的 C 端应用: 比如日活百万的 AI 陪伴产品。
- 为什么不用 LangGraph: 原生 Python 结合异步 HTTP 请求(如
aiohttp或原生 SDK 的async模式)可以做到性能极限优化。在流式输出(Streaming)的处理上,原生代码也更容易与 Web 框架(如 FastAPI)无缝、高效地集成。
4. Serverless 或边缘计算部署环境
在 AWS Lambda、阿里云函数计算、Cloudflare Workers 等环境中,冷启动时间和包体积非常关键。
- 具体场景:
- 轻量级的定时巡检脚本。
- 基于 Webhook 触发的轻量级飞书/钉钉/微信机器人。
- 为什么不用 LangGraph: LangGraph 及其底层依赖的 LangChain 包体积庞大,极其拖慢 Serverless 的冷启动时间。原生代码仅需
requests或轻量级官方 SDK,体积小、启动快、资源消耗低。
5. 高度定制化与强安全合规要求的企业系统
在金融、医疗或大型政企项目中,往往需要对每一行代码的执行路径有 100% 的掌控力。
- 具体场景:
- 需要对所有的 Prompt、输入输出做严格的审计和日志记录。
- 需要接入企业内部复杂的鉴权(SSO)、限流和重试机制。
- 需要防范极其复杂的 Prompt Injection 攻击。
- 为什么不用 LangGraph: 框架往往是“黑盒”,LangGraph 内部状态管理和底层 Pydantic 版本的绑定可能会与企业现有架构冲突。使用原生代码,你可以精确控制请求重试(如使用
Tenacity)、异常捕获和日志切面(AOP),更容易满足审计要求。
6. 团队技术栈与维护成本考量(防患“框架衰老”)
AI 领域发展极快,LangChain/LangGraph 生态的 API 经常发生破坏性更新(Breaking Changes)。
- 具体场景:
- 初创团队快速验证产品需求(MVP)。
- 团队里大多是普通后端工程师,没有专门的 LangChain 专家。
- 为什么不用 LangGraph: 纯 Python 代码的生命周期远长于任何目前的 AI 框架。不用学习图(Graph)、状态(State)、节点(Node)、边(Edge)的概念,降低了交接和维护成本。当模型能力升级时(如原生支持了更强的 JSON Mode 或 Tool Calling),原生代码只需要改两行配置,而框架往往需要等待版本更新来适配。
💡 总结:何时该用什么?
- 坚决选择“原生代码 + LLM API”: 流程是确定的(Deterministic)、线性的、无复杂状态保持的,追求极致性能、高可控性和低依赖的系统。
- 才考虑引入“LangGraph”: 你的业务确实需要真正的 Agent 架构——即需要 LLM 在一个循环里自主决定下一步做什么(如 ReAct 模式),需要持久化复杂的对话历史状态(Checkpointing),需要“人类在环”(Human-in-the-loop)审批,或者需要多个不同角色的 Agent 互相辩论/协作(Multi-Agent System)时。