源码级别解析 · 源码解析 · GAIA Benchmark #1 · NeurIPS 2025
2026-06-05 | 每日技术深度解读
OWL代表Optimized Workforce Learning,优化工作流学习
OWL建立在CAMEL-AI基础之上,提供多智能体协作能力
GAIA General Artificial Intelligence Assessment基准测试
# 克隆项目
git clone https://github.com/camel-ai/owl.git
cd owl
# 使用uv安装 (推荐)
pip install uv
uv venv .venv --python=3.10
source .venv/bin/activate
uv pip install -e .
# 运行示例
python examples/run.py
支持Python 3.10, 3.11, 3.12版本
OWL使用工作流模型,通过不同角色智能体协作完成任务
def construct_agent_list():
# Web Agent - 网络搜索与浏览器交互
web_agent = ChatAgent(
"""You are a web search expert...""",
model=web_model,
tools=[
FunctionTool(search_toolkit.search_duckduckgo),
FunctionTool(search_toolkit.search_wiki),
*browser_toolkit.get_tools(),
]
)
# Document Agent - 文档处理
document_agent = ChatAgent(
"""You are a document processing expert...""",
model=document_model,
tools=[
FunctionTool(document_processing_toolkit.extract_document_content),
FunctionTool(image_analysis_toolkit.ask_question_about_image),
]
)
# Reasoning Coding Agent - 代码执行
reasoning_agent = ChatAgent(
"""You are a coding and reasoning expert...""",
model=reasoning_model,
tools=[
FunctionTool(code_runner_toolkit.execute_code),
FunctionTool(excel_toolkit.extract_excel_content),
]
)
每个智能体都有明确的角色定位和专业工具
基于Playwright框架,支持Chrome, Edge, Chromium
browser_toolkit = BrowserToolkit(
headless=False, # 无头模式,适合服务器环境
web_agent_model=browsing_model,
planning_agent_model=planning_model,
)
# 使用浏览器工具
tools = [
*browser_toolkit.get_tools(),
# 具体工具包括:
# - browser_navigate
# - browser_click
# - browser_fill
# - browser_scroll
# - browser_download
# - browser_extract_text
# - browser_screenshot
]
支持多浏览器,自动处理JavaScript渲染页面
支持实时信息获取和知识库查询
search_toolkit = SearchToolkit()
# 配置搜索工具
tools = [
FunctionTool(search_toolkit.search_duckduckgo),
FunctionTool(search_toolkit.search_wiki),
FunctionTool(search_toolkit.search_bocha),
FunctionTool(search_toolkit.search_baidu),
]
# 搜索示例
search_results = search_toolkit.search_duckduckgo(
"最新AI技术发展趋势 2024"
)
# 维基百科搜索
wiki_results = search_toolkit.search_wiki(
"Multi-agent systems"
)
支持结构化搜索结果提取和过滤
支持本地和远程文档处理,自动格式转换
document_toolkit = DocumentProcessingToolkit(
model=document_model,
)
# 文档提取
tools = [
FunctionTool(document_toolkit.extract_document_content),
FunctionTool(image_analysis_toolkit.ask_question_about_image),
]
# 处理本地文档
task = "What is in the given DOCX file? Here is the file path: tmp/example.docx"
society = construct_society(task)
answer, chat_history = run_society(society)
# 支持的格式:
# - PDF: text extraction
# - DOCX: content extraction
# - XLSX: data extraction
# - PPTX: slide content
# - Images: visual analysis
支持OCR和内容理解,支持多语言
安全沙箱环境,防止恶意代码执行
code_toolkit = CodeExecutionToolkit(
sandbox="subprocess", # 使用子进程沙箱
verbose=True, # 详细输出
timeout=30, # 超时设置
working_dir="./tmp" # 工作目录
)
# 代码执行工具
tools = [
FunctionTool(code_toolkit.execute_code),
]
# 示例代码执行
python_code = '''
import pandas as pd
import matplotlib.pyplot as plt
data = {'A': [1, 2, 3, 4, 5], 'B': [2, 4, 6, 8, 10]}
df = pd.DataFrame(data)
plt.plot(df['A'], df['B'])
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('示例图表')
plt.savefig('chart.png')
print("图表已保存为 chart.png")
'''
result = code_toolkit.execute_code(python_code)
支持多种Python库,自动处理依赖
MCP提供标准化协议,简化AI工具集成
# 安装MCP服务
npm install -g @executeautomation/playwright-mcp-server
npx playwright install-deps
# MCP工具使用
tools = [
# MCP工具
*mcp_toolkit.get_tools(),
# 文件写入工具
*FileWriteToolkit(output_dir="./").get_tools(),
# 终端工具
*TerminalToolkit().get_tools(),
]
# MCP示例脚本
python examples/run_mcp.py
python examples/run_mcp_sse.py
支持SSE协议,支持远程服务调用
本地运行,数据安全,支持多语言界面
# 启动Web界面
# 中文版本
python owl/webapp_zh.py
# 英文版本 (默认)
python owl/webapp.py
# 日文版本
python owl/webapp_jp.py
# 界面特性:
# - 模型选择器
# - 环境变量管理
# - 对话历史
# - 实时日志
# - 任务状态显示
支持Chrome, Firefox, Safari等现代浏览器
支持工具调用和多模态理解能力
# OpenAI模型配置
openai_model = ModelFactory.create(
model_platform=ModelPlatformType.OPENAI,
model_type=ModelType.GPT_4O,
model_config_dict={"temperature": 0},
)
# Gemini模型配置
gemini_model = ModelFactory.create(
model_platform=ModelPlatformType.GEMINI,
model_type=ModelType.GEMINI_2_5_PRO,
model_config_dict={"temperature": 0},
)
# Claude模型配置
claude_model = ModelFactory.create(
model_platform=ModelPlatformType.ANTHROPIC,
model_type=ModelType.CLAUDE_3_OPUS,
model_config_dict={"temperature": 0},
)
# 本地Ollama模型
ollama_model = ModelFactory.create(
model_platform=ModelPlatformType.OLLAMA,
model_type=ModelType.LLAMA_3_8B,
model_config_dict={"temperature": 0},
)
建议使用GPT-4或更高版本以获得最佳性能
通过合理配置工具和模型提升性能
支持Web界面动态配置API密钥
# .env文件配置
OPENAI_API_KEY='your-openai-api-key'
AZURE_OPENAI_API_KEY='your-azure-key'
AZURE_OPENAI_BASE_URL='your-azure-endpoint'
QWEN_API_KEY='your-qwen-key'
DEEPSEEK_API_KEY='your-deepseek-key'
# 环境变量设置
# 方法1: 直接设置
export OPENAI_API_KEY="your-key"
# 方法2: .env文件
cp .env_template .env
# 编辑.env文件添加密钥
# 方法3: Web界面动态配置
# 通过Web界面直接添加和管理API密钥
支持多种API服务,可同时配置多个模型
OWL擅长复杂的多步骤任务处理
# 示例任务:分析GitHub项目数据并可视化
task = "使用Browser Toolkit总结camel-ai的owl框架的github stars、fork数量等信息,并使用plot包将数字写入python文件,保存到本地,然后运行生成的python文件。"
# 构建工作流
society = construct_society(task)
# 执行任务
answer, chat_history, token_count = run_society(society)
# 任务分解:
# 1. Web搜索GitHub项目信息
# 2. 浏览器访问GitHub页面
# 3. 提取stars和fork数据
# 4. 生成可视化代码
# 5. 执行代码生成图表
# 6. 保存结果到本地文件
OWL能够自动分解复杂任务并协调多智能体完成
支持高度自定义,适应不同应用场景
# 自定义工具开发示例
from camel.toolkits import FunctionTool
class CustomDataAnalysisTool:
def __init__(self, model):
self.model = model
def analyze_trends(self, data):
"""数据分析工具"""
analysis_result = self.model.generate_content(
f"分析以下数据趋势:{data}"
)
return analysis_result
def get_tools(self):
return [
FunctionTool(self.analyze_trends),
# 添加更多工具
]
# 使用自定义工具
custom_toolkit = CustomDataAnalysisTool(model)
tools = [
*custom_toolkit.get_tools(),
# 其他工具...
]
继承基础工具类,实现专业领域功能
持续优化,确保最佳性能表现
# 切换到GAIA专用分支
git checkout gaia69
# 运行GAIA基准测试
python run_gaia_workforce_claude.py
# 基准测试结果:
# - 总体得分: 69.09%
# - 排名: #1 among open-source frameworks
# - 测试案例数: 500+
# - 正确率: 69.09%
# 性能优化建议:
# 1. 使用GPT-4或更高版本
# 2. 优化工具选择策略
# 3. 改进错误处理机制
# 4. 增强上下文管理
gaia69分支包含专门优化的CAMEL框架版本
| 框架 | 分数 | 排名 | 是否开源 |
|---|---|---|---|
| OWL (Ours) | 69.09% | #1 | ✅ |
| GPT-4o Single Agent | 63.5% | #2 | ❌ |
| CAMEL-AI Workforce | 58.18% | #3 | ✅ |
| AutoGen | ~50% | #4+ | ✅ |
| LangGraph Agent | ~45% | #5+ | ✅ |
活跃的开源社区,持续发展完善
欢迎各种形式的贡献,从文档到代码
支持多种部署方式,满足不同需求
# 使用预构建镜像(推荐)
docker compose up -d
# 构建本地镜像
docker compose up -d --build
# 运行OWL容器
docker compose exec owl bash
cd .. && source .venv/bin/activate
playwright install-deps
xvfb-python examples/run.py
# Docker-compose.yml配置
services:
owl:
image: mugglejinx/owl:latest
ports:
- "7860:7860"
environment:
- OPENAI_API_KEY=${OPENAI_API_KEY}
volumes:
- ./data:/app/data
Docker提供标准化的部署环境
持续创新,引领多智能体技术发展
合理配置和使用,最大化发挥OWL能力
安全第一,谨慎使用自动化工具
详细监控,及时发现和解决问题
# 性能监控示例
import time
import logging
def performance_monitor(func):
def wrapper(*args, **kwargs):
start_time = time.time()
logging.info(f"开始执行: {func.__name__}")
try:
result = func(*args, **kwargs)
execution_time = time.time() - start_time
logging.info(
f"执行成功: {func.__name__}, "
f"用时: {execution_time:.2f}秒"
)
return result
except Exception as e:
execution_time = time.time() - start_time
logging.error(
f"执行失败: {func.__name__}, "
f"用时: {execution_time:.2f}秒, 错误: {str(e)}"
)
raise
return wrapper
@performance_monitor
def process_task(task):
society = construct_society(task)
answer, chat_history, token_count = run_society(society)
return answer
全面监控,确保系统稳定运行
系统化排查,快速定位和解决问题
# 系统诊断脚本
import sys
import importlib
def diagnose_environment():
"""诊断运行环境"""
issues = []
# 检查Python版本
if sys.version_info < (3, 10):
issues.append("Python版本过低,需要3.10+")
# 检查关键依赖
required_packages = [
'gradio', 'camel', 'playwright',
'dotenv', 'pandas', 'numpy'
]
for package in required_packages:
try:
importlib.import_module(package)
except ImportError:
issues.append(f"缺少依赖包: {package}")
# 检查API密钥
if not os.getenv('OPENAI_API_KEY'):
issues.append("未配置OPENAI_API_KEY")
return issues
# 运行诊断
diagnostic_results = diagnose_environment()
if diagnostic_results:
print("发现以下问题:")
for issue in diagnostic_results:
print(f"- {issue}")
else:
print("环境检查通过")
系统化诊断,快速定位环境问题
深度掌握,充分发挥OWL潜力
# 复杂任务链式调用
class TaskChain:
def __init__(self):
self.workforce = construct_workforce()
self.results = []
def add_task(self, task_description, agent_type=None):
"""添加任务到链中"""
task = Task(content=task_description)
self.results.append({
'task': task,
'agent_type': agent_type,
'status': 'pending'
})
def execute_chain(self):
"""执行任务链"""
for task_info in self.results:
if task_info['status'] == 'pending':
result = self.workforce.process_task(
task_info['task']
)
task_info['result'] = result
task_info['status'] = 'completed'
task_info['timestamp'] = time.time()
return self.results
# 使用任务链
chain = TaskChain()
chain.add_task("搜索最新的AI技术趋势")
chain.add_task("分析这些技术对软件开发的影响")
chain.add_task("生成技术应用报告")
results = chain.execute_chain()
支持复杂任务流程管理和状态跟踪
OWL代表了多智能体协作的最新技术成果
已在多个领域成功应用,效果显著
快速迭代,持续创新,学术认可
向着更强大的多智能体协作系统发展
OWL是多智能体协作框架的标杆之作
立即开始使用OWL,体验多智能体协作的强大能力
感谢阅读!
访问 https://atcfu.com/ai-articles/owl-multi-agent-framework/ 回顾本文