OpenAgents 框架完整指南:輕量級多代理系統實戰

OpenAgents 框架完整指南:輕量級多代理系統實戰

什麼是 OpenAgents?

OpenAgents 是 2026 年初嶄露頭角的開源 AI 代理框架,專為構建輕量級多代理協作系統而設計。與 LangGraph 的複雜狀態圖和 CrewAI 的角色扮演範式不同,OpenAgents 採用訊息驅動架構,讓代理之間的通訊更加直觀和靈活。

核心特點

  • 🚀 輕量級設計:核心庫僅 5MB,啟動速度快於同類框架 40%
  • 💬 訊息驅動:基於結構化訊息的代理通訊,支援非同步對話
  • 🔌 外掛系統:內建工具庫 + 自訂工具熱插拔
  • 📊 可觀察性:內建追蹤和日誌,無需額外配置
  • 🌐 多模型支援:相容 OpenAI、Anthropic、Ollama 及本地模型

為什麼選擇 OpenAgents?

特性OpenAgentsLangGraphCrewAIAutoGen
學習曲線⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
執行時開銷
多代理協作原生支援需手動編排角色固定靈活但複雜
可觀察性內建需 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 構建你的第一個多代理工作流,體驗訊息驅動架構的魅力!