Aller au contenu

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 构建你的第一个多代理工作流,体验消息驱动架构的魅力!