谈及Agent开发框架,LangChain总是绕不开的话题。作为过度设计的典型案例,其不必要的抽象封装、紧密耦合的架构以及频繁的重大版本变更,曾让许多开发者对Agent框架望而却步。
大多数Agent的核心是一个带循环的大模型工作流,并辅以与外部信息(如向量数据库、工具)的交互。对于有经验的开发者而言,实现这种范式并不困难,因此许多人选择直接“手搓轮子”。然而,在开发过程中,诸如提示词迭代、工具管理、状态维护、日志监控、错误处理、质量评估与故障追踪等大量重要但繁琐的“脏活”,会显著拖慢项目进度。
成熟的框架通常会系统性地解决上述问题,这些功能经过社区上千次提交与迭代才得以完善。开发者在项目初期往往专注于核心流程,容易忽视后期的可维护性,最终导致项目陷入困境。此时,开发者开始转向模块化、专注特定功能的框架,避免对单一臃肿框架的强依赖,旨在寻求自由度与可维护性之间的平衡。例如,专注于流程编排的PocketFlow、专注于简化模型交互的ELL,以及专注于结果验证与依赖注入的Pydantic AI。它们不追求大而全,而是以解决问题为导向,这种模块化组合的思路正成为Agent开发框架演进的重要方向。
在详细介绍之前,我们先统一对两个关键范式——Workflow(工作流)与Agent(智能体)——的理解与定义。
当我们在谈论Agent时,我们在谈论什么?

Workflows v.s. Agents
- Workflow(工作流):针对固定任务遵循既定范式的流程,其每一个原子化任务都严格遵循预设路径,流程本身不会出现偏差。
- Agent(智能体):拥有更高的自主性(Agency)与自由度,能够根据环境反馈自主调度和编排工具,使得其原子化任务路径不再固定,执行过程更具动态性与随机性。
具体到设计模式上(参考PocketFlow Cookbook的定义):
- 最基础的Chat模式本质上是处理输入输出的循环,加上对话历史管理。
- RAG和Chat Memory模式在Chat基础上引入了向量数据库,分别用于检索外部知识和管理长期记忆。
- 对于复杂逻辑问题,常采用 CoT + ReAct范式,在循环中增加“思考历史”,让模型在行动前进行推理。
- 针对长上下文或大规模任务,Map-Reduce模式借鉴了系统领域的“分而治之”思想,将大任务拆解并行处理后再合并。
- 当需要处理非线性流程时,通用Agent模式采用循环+分支结构,允许系统根据判断走向不同路径,包括调用工具或并发执行预定义的子流程。
- 更复杂的Multi-Agent系统通常利用发布/订阅(Pub/Sub)机制实现协作,或采用Supervisor模式,由上层管理者规划并分发任务给子Agent完成。

面对复杂的Agent范式与任务场景,从构建可落地、易迭代的大型系统角度出发,选择合适的开发框架至关重要。框架的选择需综合考虑业务需求、开发语言和项目规模。以下梳理了一些典型框架,供项目启动时参考。
(分类基于各框架最突出的优势,并非完全严谨)
01 全栈开发框架
涵盖从开发、维护、监控到前端落地的全流程。
LangGraph
GitHub: https://github.com/langchain-ai/langgraph
开发语言: Python
由LangChain团队开发的基于图论的编排框架,核心是将智能体流程建模为带有状态的有向循环图(StateGraph)。它支持循环逻辑、状态持久化和人在回路,允许定义细粒度的分支与合并逻辑,适用于需要高度确定性控制、复杂错误恢复及长时运行的生产级应用(如可自动修正错误的编码助手)。其优势在于对复杂逻辑的精确控制,但需要开发者显式定义状态模式和图结构。
基于图的Agent开发思路新颖,将流程包装为Graph设计,符合直觉,但在Agent自主性方面略有欠缺,学习成本依然较高。
from langgraph.graph import START, StateGraph
from typing_extensions import TypedDict
class State(TypedDict):
text: str
def node_a(state: State) -> dict:
return {"text": state["text"] + "a"}
def node_b(state: State) -> dict:
return {"text": state["text"] + "b"}
graph = StateGraph(State)
graph.add_node("node_a", node_a)
graph.add_node("node_b", node_b)
graph.add_edge(START, "node_a")
graph.add_edge("node_a", "node_b")
print(graph.compile().invoke({"text": ""}))
# {'text': 'ab'}
可结合LangChain生态的LangSmith等工具实现带监控的生产级应用。
CrewAI
GitHub: https://github.com/crewAIInc/crewAI
开发语言: Python
一个精简、高速的Python框架,完全独立构建。相比LangGraph,CrewAI主打Agent自主性和多智能体(Multi-Agents)角色扮演协作,通过YAML配置文件定义Agent(实现逻辑与提示词分离)。
# src/my_project/config/agents.yaml
researcher:
role: >
{topic} Senior Data Researcher
goal: >
Uncover cutting-edge developments in {topic}
backstory: >
You're a seasoned researcher with a knack for uncovering the latest
developments in {topic}. Known for your ability to find the most relevant
information and present it in a clear and concise manner.
通过其套件CrewAI AOP Suite可快速构建带前端的原型应用。
Haystack
GitHub: https://github.com/deepset-ai/haystack
开发语言: Python
一个用于构建可定制、生产级LLM应用的AI编排框架。它通过管道(Pipeline)或代理(Agent)连接各种组件(模型、向量数据库、文件转换器),特别适合构建RAG、问答系统、语义搜索或聊天机器人。
import os
from haystack.components.agents import Agent
from haystack.components.generators.chat import OpenAIChatGenerator
from haystack.dataclasses import ChatMessage
from haystack.tools import ComponentTool
from haystack.components.websearch import SerperDevWebSearch
os.environ["OPENAI_API_KEY"] = "<YOUR OPENAI API KEY>"
os.environ["SERPERDEV_API_KEY"] = "<YOUR SERPERDEV API KEY>"
search_tool = ComponentTool(component=SerperDevWebSearch())
basic_agent = Agent(
chat_generator=OpenAIChatGenerator(model="gpt-4o-mini"),
system_prompt="You are a helpful web agent.",
tools=[search_tool],
)
result = basic_agent.run(messages=[ChatMessage.from_user("When was the first version of Haystack released?")])
print(result['last_message'].text)
02 流程编排框架
专注于对Agent逻辑功能进行编排,封装Pipeline设计,以实现工作流为目的。通常较为轻量,主要解决并发逻辑和代码可读性问题。
PocketFlow
GitHub: https://github.com/The-Pocket/PocketFlow
开发语言: 多语言(Python, Typescript, Java, C++, Go, Rust and PHP)
仅约100行代码的极简LLM框架,主张零依赖。它通过嵌套有向图抽象来处理Agent编排中的批处理、并行和异步操作。PocketFlow旨在对抗框架臃肿,本质是一组抽象类(节点Node和流Flow),帮助开发者更清晰地实现流行设计模式。

其精简代码的另一好处是便于AI(如Vibe Coding)理解项目结构。但该框架主要优化了编码规范和逻辑清晰度,模型调用、会话管理、日志记录等具体实现仍需开发者完成,对新手可能不够友好。
microsoft-agent-framework
GitHub: https://github.com/microsoft/agent-framework/
开发语言: Python, C# ( .NET)
微软自用的Agent开发框架,同样基于图的工作流编排。它封装了流式传输、状态检查点、人在回路、时间回溯等功能,通过DevUI扩展包可构建前端界面,内置OpenTelemetry集成用于分布式追踪与监控,并采用中间件概念拦截请求以实现功能扩展。这是一个重量级的生产级框架。
03 模型交互框架
专注于封装大模型供应商的API调用,处理路由、错误重试、Token分析、响应反序列化等功能。通常可与流程编排框架集成。
ELL
GitHub: https://github.com/MadcowD/ell
开发语言: Python
一个轻量级提示工程框架,倡导“提示词即代码(Prompt as code)”。它以提示词函数为索引,并通过可视化日志追踪LLM调用表现,主要优势是提高代码可读性和便于后续分析。但项目近期迭代较少。
import ell
@ell.simple(model="gpt-4o")
def hello(world : str):
"""You are a helpful assistant that writes in lower case.""" # System Message
return f"Say hello to {world[::-1]} with a poem." # User Message
hello("sama")

Strands
GitHub: https://github.com/strands-agents/sdk-python
开发语言: Python, Typescript
采用模型驱动方法构建和运行AI代理的SDK。它主要为开发者封装了模型调用、工具依赖注入和观察调试功能,将具体的Agent逻辑和编排交由开发者实现,在抽象粒度和自由度之间取得了较好平衡。
from strands import Agent
from strands_tools import calculator
agent = Agent(tools=[calculator])
agent("What is the square root of 1764")
以下是用Strands实现的一个简易版代码生成Agent(SWE-Agent思路),仅需约10行代码:
import subprocess, sys
from strands import Agent, tool
from strands.models.openai import OpenAIModel as OAI
@tool
def bash(cmd: str) -> str:
"""Run a bash command and returns results"""
return subprocess.run(["bash", "-lc", cmd], capture_output=True)
Agent(tools=[bash], model=OAI(model_id="gpt-5.2"))(f"One-shot SWE agent: {sys.argv[1:]}")
Pydantic AI
GitHub: https://github.com/pydantic/pydantic-ai/
开发语言: Python
旨在将FastAPI式的开发体验带入GenAI应用。它从Pydantic的数据验证功能出发,对LLM输出结果进行结构化验证。其依赖注入设计非常直观(类似Golang风格),缓解了因工具增减而手动迭代提示词的压力,并附带完整的LLM日志追踪功能。
from dataclasses import dataclass
from pydantic import BaseModel, Field
from pydantic_ai import Agent, RunContext
from bank_database import DatabaseConn
@dataclass
class SupportDependencies:
customer_id: int
db: DatabaseConn
class SupportOutput(BaseModel):
support_advice: str = Field(description='Advice returned to the customer')
block_card: bool = Field(description="Whether to block the customer's card")
risk: int = Field(description='Risk level of query', ge=0, le=10)
support_agent = Agent(
'openai:gpt-5',
deps_type=SupportDependencies,
output_type=SupportOutput,
instructions=(
'You are a support agent in our bank, give the '
'customer support and judge the risk level of their query.'
),
)
@support_agent.instructions
async def add_customer_name(ctx: RunContext[SupportDependencies]) -> str:
customer_name = await ctx.deps.db.customer_name(id=ctx.deps.customer_id)
return f"The customer's name is {customer_name!r}"
@support_agent.tool
async def customer_balance(
ctx: RunContext[SupportDependencies], include_pending: bool) -> float:
"""Returns the customer's current account balance."""
return await ctx.deps.db.customer_balance(
id=ctx.deps.customer_id,
include_pending=include_pending,
)
# ... 运行示例
async def main():
deps = SupportDependencies(customer_id=123, db=DatabaseConn())
result = await support_agent.run('What is my balance?', deps=deps)
print(result.output)
# support_advice='Hello John, your current account balance...' block_card=False risk=1
04 外部工具模板
提供安全、可复用的工具实现参考。这对于Agent应用的安全性至关重要,特别是执行bash、文件操作等命令时,需注意访问控制,避免危险操作。
GitHub: https://github.com/strands-agents/tools
Strands的生态工具库,集成了多种常用工具的安全实现代码,可供参考或直接复用。
awesome-mcp-servers
GitHub: https://github.com/punkpeye/awesome-mcp-servers
收集了多语言的MCP(Model Context Protocol)服务器。每个服务器即是一个工具的标准化封装,当不确定某个工具如何安全实现时,可参考对应MCP服务器的代码。
05 低代码/无代码开发框架
支持通过拖拽等方式可视化编排LLM Agent工作流,无需编码或少量编码即可快速构建带前端界面的业务应用,通常集成多种业务模板。
Dify
GitHub: https://github.com/langgenius/dify
用于开发智能体工作流的生产就绪型平台,集成了AI工作流编排、RAG管道、模型管理、可观测性等功能。提供丰富的工作流模板,可一键导入部署。

n8n
GitHub: https://github.com/n8n-io/n8n
强大的工作流自动化平台,支持低代码/无代码构建。能够与Slack等办公软件深度集成,在海外应用广泛。

RAGFlow
GitHub: https://github.com/infiniflow/ragflow
以深度文档理解为核心的RAG兼智能体引擎。其显著特性是集成了DeepDoc文档解析技术,能精确处理复杂PDF布局和表格。它结合了基于图的任务编排与可视化工作流编辑器,特别适合法律、医疗、金融等依赖深度文档分析的场景。

Langflow
GitHub: https://github.com/langflow-ai/langflow
一个拖拽式构建和部署AI代理与工作流的可视化工具。
