OpenAgents 框架完整指南:轻量级多代理系统实战
什么是 OpenAgents?
OpenAgents 是 2026 年初崭露头角的开源 AI 代理框架,专为构建轻量级多代理协作系统而设计。与 LangGraph 的复杂状态图和 CrewAI 的角色扮演范式不同,OpenAgents 采用消息驱动架构,让代理之间的通信更加直观和灵活。
核心特点
- 🚀 轻量级设计:核心库仅 5MB,启动速度快于同类框架 40%
- 💬 消息驱动:基于结构化消息的代理通信,支持异步对话
- 🔌 插件系统:内置工具库 + 自定义工具热插拔
- 📊 可观测性:内置追踪和日志,无需额外配置
- 🌐 多模型支持:兼容 OpenAI、Anthropic、Ollama 及本地模型
为什么选择 OpenAgents?
| 特性 | OpenAgents | LangGraph | CrewAI | AutoGen |
|---|---|---|---|---|
| 学习曲线 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ |
| 运行时开销 | 低 | 中 | 中 | 高 |
| 多代理协作 | 原生支持 | 需手动编排 | 角色固定 | 灵活但复杂 |
| 可观测性 | 内置 | 需 LangSmith | 有限 | 需配置 |
| 社区生态 | 快速增长 | 成熟 | 成熟 | 成熟 |
快速开始
安装
# 基础安装
pip install openagents
# 完整功能(含向量存储和高级工具)
pip install openagents[full]
# 验证安装
python -c "import openagents; print(openagents.__version__)"
第一个代理
创建一个简单的问答代理:
from openagents import Agent, Runner
# 定义代理
researcher = Agent(
name="研究助手",
description="负责搜索和整理信息",
instructions="你是一个专业的研究助手,擅长查找和总结技术文档。",
tools=["web_search", "file_reader"],
model="gpt-4o"
)
# 运行单次任务
result = Runner.run(
agent=researcher,
input="请总结 OpenAgents 框架的核心特性"
)
print(result.output)
多代理协作
OpenAgents 的核心优势在于多代理协作。以下是一个内容创作工作流:
from openagents import Agent, Runner, Handoff
# 定义专业代理
planner = Agent(
name="规划师",
instructions="分析需求,制定内容大纲和写作计划",
handoffs=["writer", "reviewer"]
)
writer = Agent(
name="作家",
instructions="根据大纲撰写高质量内容",
handoffs=["reviewer"]
)
reviewer = Agent(
name="审稿人",
instructions="审核内容质量,提出修改建议",
handoffs=["writer"] # 可退回重写
)
# 创建工作流
workflow = Runner(
agents=[planner, writer, reviewer],
entry_point="planner"
)
# 执行任务
result = workflow.run(
input="写一篇关于 AI 代理框架的技术博客"
)
print(f"最终输出:{result.output}")
print(f"迭代次数:{result.metadata['turns']}")
高级功能
工具定义
OpenAgents 支持灵活的工具定义方式:
from openagents import tool
@tool
def calculate_readability(text: str) -> dict:
"""计算文本的可读性分数"""
words = len(text.split())
sentences = text.count('.') + text.count('!') + text.count('?')
if sentences == 0:
return {"score": 0, "level": "N/A"}
avg_sentence_length = words / sentences
# Flesch 可读性公式简化版
score = 206.835 - 1.015 * avg_sentence_length
return {
"score": round(score, 2),
"level": "简单" if score > 70 else "中等" if score > 50 else "困难"
}
# 在代理中使用
editor = Agent(
name="编辑",
instructions="优化文本质量和可读性",
tools=[calculate_readability]
)
状态管理
from openagents import Agent, Runner, State
# 定义共享状态
class ArticleState(State):
topic: str
outline: list = []
draft: str = ""
revisions: int = 0
feedback: list = []
# 代理可以读写状态
writer = Agent(
name="作家",
state_schema=ArticleState,
instructions="""
1. 读取当前 state.topic 和 state.outline
2. 撰写草稿并更新 state.draft
3. 如果收到反馈,增加 state.revisions
"""
)
流式输出
from openagents import Agent, Runner
agent = Agent(name="助手", instructions="逐步解释复杂概念")
# 流式获取响应
for chunk in Runner.run_stream(
agent=agent,
input="解释量子计算的基本原理"
):
print(chunk.delta, end="", flush=True)
实战案例:自动化技术博客生成器
下面是一个完整的多代理内容生成系统:
from openagents import Agent, Runner, tool
from typing import List
# 工具:获取 trending 主题
@tool
def get_trending_topics(category: str) -> List[str]:
"""获取指定类别的热门话题"""
# 实际实现可连接 RSS、GitHub Trends 等
return ["AI 代理框架", "RAG 优化", "LLM 安全测试"]
# 工具:SEO 分析
@tool
def analyze_seo(content: str) -> dict:
"""分析内容的 SEO 友好度"""
return {
"keyword_density": 2.3,
"readability_score": 68,
"suggestions": ["增加 H2 标题", "添加内部链接"]
}
# 定义代理团队
topic_researcher = Agent(
name="主题研究员",
instructions="发现和分析热门技术话题",
tools=[get_trending_topics]
)
outline_creator = Agent(
name="大纲策划",
instructions="根据主题创建详细写作大纲",
handoffs=["writer"]
)
content_writer = Agent(
name="内容作家",
instructions="撰写 1500 字以上的技术文章",
handoffs=["seo_optimizer"]
)
seo_optimizer = Agent(
name="SEO 优化师",
instructions="优化文章 SEO 并提供修改建议",
tools=[analyze_seo],
handoffs=["content_writer"] # 可退回优化
)
final_reviewer = Agent(
name="终审编辑",
instructions="最终质量检查,确认发布",
)
# 构建工作流
blog_workflow = Runner(
agents=[
topic_researcher,
outline_creator,
content_writer,
seo_optimizer,
final_reviewer
],
entry_point="topic_researcher"
)
# 执行
result = blog_workflow.run(
input="生成一篇 AI 技术博客",
max_turns=10 # 限制最大迭代次数
)
print(f"✅ 完成!共 {result.metadata['turns']} 轮协作")
print(f"📄 最终字数:{len(result.output)}")
与竞品框架对比
OpenAgents vs LangGraph
LangGraph 优势: - 与 LangChain 生态深度集成 - 复杂状态图控制更精细 - 企业级支持完善
OpenAgents 优势: - 更简洁的 API,学习成本低 - 消息驱动更符合代理协作直觉 - 内置可观测性,无需 LangSmith
OpenAgents vs CrewAI
CrewAI 优势: - 角色扮演范式成熟 - 丰富的预定义角色模板 - 社区案例多
OpenAgents 优势: - 更灵活的代理通信模式 - 支持动态 handoff(CrewAI 需预定义流程) - 性能更优(无冗余抽象层)
OpenAgents vs AutoGen
AutoGen 优势: - 微软背书,稳定性高 - 支持代码执行沙箱 - 多语言代理支持
OpenAgents 优势: - 配置更简单(AutoGen 需大量样板代码) - 调试体验更好 - 文档更友好
生产环境部署
Docker 部署
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install openagents[full]
COPY . .
ENV OPENAI_API_KEY=${OPENAI_API_KEY}
ENV OPENAGENTS_LOG_LEVEL=info
CMD ["python", "main.py"]
监控和日志
import openagents
from openagents.tracing import TracingConfig
# 配置追踪
openagents.configure(
tracing=TracingConfig(
enabled=True,
export_to="otel", # OpenTelemetry
sample_rate=1.0
),
logging={
"level": "INFO",
"format": "json"
}
)
常见问题
Q: OpenAgents 支持哪些模型?
A: 支持所有主流模型提供商: - OpenAI (GPT-4o, GPT-4 Turbo) - Anthropic (Claude 3.5/3) - Google (Gemini Pro) - Ollama (本地模型) - 自定义 API 端点
Q: 如何处理长上下文?
A: OpenAgents 内置上下文压缩:
agent = Agent(
name="助手",
context_window=128000, # 设置上下文窗口
truncate_strategy="summary" # 超出时自动摘要
)
Q: 可以离线使用吗?
A: 可以,配合 Ollama 或本地模型:
agent = Agent(
name="本地助手",
model="ollama/llama3.1:8b",
base_url="http://localhost:11434"
)
总结
OpenAgents 作为 2026 年新兴的 AI 代理框架,在简洁性和灵活性之间找到了很好的平衡点。对于以下场景特别推荐:
✅ 推荐场景: - 快速原型开发 - 中小型多代理系统 - 需要灵活代理通信的项目 - 团队希望降低学习成本
❌ 不推荐场景: - 需要 LangChain 生态深度集成 - 超复杂状态图控制 - 企业级 SLA 支持需求
资源链接
下一步:尝试用 OpenAgents 构建你的第一个多代理工作流,体验消息驱动架构的魅力!