Owl: Optimized Workforce Learning for multi-agent collaboration
Owl:面向多智能体协作的优化劳动力学习
camel-ai/owl
- Notifications You must be signed in to change notification settings
- Fork 1.3k
- Star 11.8k
🦉 OWL: Optimized Workforce Learning for General Multi-Agent Assistance in Real-World Task Automation
11.8k stars 1.3k forks Branches Tags Activity
camel-ai/owl
main
Go to file
Code
Folders and files
Name | Name | Last commit message | Last commit date ---|---|---|--- .container | .container | | assets | assets | | community_usecase | community_usecase | | licenses | licenses | | owl | owl | | .gitignore | .gitignore | | .pre-commit-config.yaml | .pre-commit-config.yaml | | README.md | README.md | | README_zh.md | README_zh.md | | pyproject.toml | pyproject.toml | | requirements.txt | requirements.txt | | run_app.py | run_app.py | | run_app_zh.py | run_app_zh.py | | uv.lock | uv.lock | |
View all files
🦉 OWL: 用于真实世界任务自动化的通用多智能体辅助优化劳动力学习
中文阅读 | Community | Installation | Examples | Paper | Citation | Contributing | CAMEL-AI
🏆 OWL 在 GAIA 基准测试中取得了 58.18 的平均分,并在开源框架中排名第一!🏆
🦉 OWL 是一个先进的多智能体协作框架,它突破了任务自动化的界限,构建在 CAMEL-AI Framework 之上。
我们的愿景是彻底改变 AI 智能体协作解决现实世界任务的方式。通过利用动态的智能体交互,OWL 能够在各种领域实现更自然、高效和强大的任务自动化。
📋 目录
- 📋 目录
- 🔥 最新动态
- 🎬 演示视频
- ✨️ 核心功能
- 🛠️ 安装
- 🚀 快速开始
- 🧰 工具集和能力
- 🌐 Web 界面
- 🧪 实验
- ⏱️ 未来计划
- 📄 许可证
- 🖊️ 引用
- 🤝 贡献
- 🔥 社区
- ❓ 常见问题
- 📚 探索 CAMEL 依赖
- ⭐ Star History
🔥 最新动态
🌟🌟🌟 社区征集用例! 🌟🌟🌟
我们邀请社区为 OWL 贡献创新的用例!前十名提交者将获得特别的社区礼物和认可。
提交截止日期:2025 年 3 月 31 日
- [2025.03.12] : 在 SearchToolkit 中添加了 Bocha 搜索,集成了火山引擎模型平台,并使用结构化输出和工具调用增强了 Azure 和 OpenAI Compatible 模型。
- [2025.03.11] : 我们添加了 MCPToolkit、FileWriteToolkit 和 TerminalToolkit,以增强具有 MCP 工具调用、文件写入功能和终端命令执行的 OWL 智能体。
- [2025.03.09] : 我们添加了一个基于 Web 的用户界面,可以更轻松地与系统交互。
- [2025.03.07] : 我们开源了 🦉 OWL 项目的代码库。
- [2025.03.03] : OWL 在 GAIA 基准测试中获得了开源框架中的第一名,得分为 58.18。
🎬 演示视频
OWL.main.mp4 d106cfbff2c7b75978ee9d5631ebeb75.mp4
✨️ 核心功能
- 实时信息检索:利用 Wikipedia、Google Search 和其他在线资源获取最新信息。
- 多模态处理:支持处理互联网或本地视频、图像和音频数据。
- 浏览器自动化:利用 Playwright 框架模拟浏览器交互,包括滚动、单击、输入处理、下载、导航等。
- 文档解析:从 Word、Excel、PDF 和 PowerPoint 文件中提取内容,将其转换为文本或 Markdown 格式。
- 代码执行:使用解释器编写和执行 Python 代码。
- 内置工具集:访问一套全面的内置工具集,包括:
- 模型上下文协议 (MCP):一个通用的协议层,用于标准化 AI 模型与各种工具和数据源的交互
- 核心工具集:ArxivToolkit、AudioAnalysisToolkit、CodeExecutionToolkit、DalleToolkit、DataCommonsToolkit、ExcelToolkit、GitHubToolkit、GoogleMapsToolkit、GoogleScholarToolkit、ImageAnalysisToolkit、MathToolkit、NetworkXToolkit、NotionToolkit、OpenAPIToolkit、RedditToolkit、SearchToolkit、SemanticScholarToolkit、SymPyToolkit、VideoAnalysisToolkit、WeatherToolkit、BrowserToolkit 以及更多用于专门任务的工具。
🛠️ 安装
OWL 支持多种安装方法,以适应您的工作流程偏好。选择最适合您的选项。
选项 1:使用 uv (推荐)
# 克隆 github 仓库
git clone https://github.com/camel-ai/owl.git
# 切换到项目目录
cd owl
# 如果您还没有安装 uv,请安装它
pip install uv
# 创建一个虚拟环境并安装依赖
# 我们支持使用 Python 3.10、3.11、3.12
uv venv .venv --python=3.10
# 激活虚拟环境
# 对于 macOS/Linux
source .venv/bin/activate
# 对于 Windows
.venv\Scripts\activate
# 安装 CAMEL 及其所有依赖项
uv pip install -e .
# 完成后退出虚拟环境
deactivate
选项 2:使用 venv 和 pip
# 克隆 github 仓库
git clone https://github.com/camel-ai/owl.git
# 切换到项目目录
cd owl
# 创建一个虚拟环境
# 对于 Python 3.10(也适用于 3.11、3.12)
python3.10 -m venv .venv
# 激活虚拟环境
# 对于 macOS/Linux
source .venv/bin/activate
# 对于 Windows
.venv\Scripts\activate
# 从 requirements.txt 安装
pip install -r requirements.txt --use-pep517
选项 3:使用 conda
# 克隆 github 仓库
git clone https://github.com/camel-ai/owl.git
# 切换到项目目录
cd owl
# 创建一个 conda 环境
conda create -n owl python=3.10
# 激活 conda 环境
conda activate owl
# 选项 1:作为包安装(推荐)
pip install -e .
# 选项 2:从 requirements.txt 安装
pip install -r requirements.txt --use-pep517
# 完成后退出 conda 环境
conda deactivate
设置环境变量
OWL 需要各种 API 密钥才能与不同的服务进行交互。owl/.env_template
文件包含所有必需 API 密钥的占位符,以及注册这些服务的链接。
选项 1:使用 .env
文件 (推荐)
- 复制并重命名模板:
cd owl
cp .env_template .env
- 配置您的 API 密钥:在您喜欢的文本编辑器中打开
.env
文件,并将您的 API 密钥插入到相应的字段中。
注意:对于最小示例 (
run_mini.py
),您只需要配置 LLM API 密钥(例如,OPENAI_API_KEY
)。
选项 2:直接设置环境变量
或者,您可以直接在终端中设置环境变量:
- macOS/Linux (Bash/Zsh):
export OPENAI_API_KEY="your-openai-api-key-here"
- Windows (命令提示符):
set OPENAI_API_KEY="your-openai-api-key-here"
- Windows (PowerShell):
$env:OPENAI_API_KEY = "your-openai-api-key-here"
注意:直接在终端中设置的环境变量仅在当前会话中持续存在。
使用 Docker 运行
# 克隆仓库
git clone https://github.com/camel-ai/owl.git
cd owl
# 配置环境变量
cp owl/.env_template owl/.env
# 编辑 .env 文件并填写您的 API 密钥
# 选项 1:直接使用 docker-compose
cd .container
docker-compose up -d
# 在容器内运行 OWL
docker-compose exec owl bash
# 激活虚拟环境
cd .. && source .venv/bin/activate && cd owl
playwright install-deps
# 运行示例演示脚本
xvfb-python run.py
# 选项 2:使用提供的脚本构建和运行
cd .container
chmod +x build_docker.sh
./build_docker.sh
# 在容器内运行 OWL
./run_in_docker.sh "your question"
有关更详细的 Docker 使用说明,包括跨平台支持、优化配置和故障排除,请参阅 DOCKER_README.md。
🚀 快速开始
尝试 MCP (Model Context Protocol) 集成
通过运行我们的示例来体验 MCP 的强大功能,该示例演示了多智能体信息检索和处理:
# 设置 MCP 服务器(一次性设置)
npx -y @smithery/cli install @wonderwhy-er/desktop-commander --client claude
npx @wonderwhy-er/desktop-commander setup
# 运行 MCP 示例
python owl/run_mcp.py
此示例展示了 OWL 智能体如何通过 MCP 协议无缝地与文件系统、Web 自动化和信息检索进行交互。查看 owl/run_mcp.py
以获取完整的实现。
基本用法
安装并设置您的环境变量后,您可以立即开始使用 OWL:
python owl/run.py
使用不同的模型运行
模型要求
- 工具调用:OWL 需要具有强大的工具调用功能的模型才能与各种工具集进行交互。模型必须能够理解工具描述,生成适当的工具调用,并处理工具输出。
- 多模态理解:对于涉及 Web 交互、图像分析或视频处理的任务,需要具有多模态能力的模型来解释视觉内容和上下文。
支持的模型
有关配置 AI 模型的信息,请参阅我们的 CAMEL 模型文档。
注意:为了获得最佳性能,我们强烈建议使用 OpenAI 模型(GPT-4 或更高版本)。我们的实验表明,其他模型在复杂的任务和基准测试中的性能可能会显著降低,尤其是那些需要高级多模态理解和工具使用的任务。
OWL 支持各种 LLM 后端,但功能可能因模型的工具调用和多模态能力而异。您可以使用以下脚本来使用不同的模型运行:
# 使用 Qwen 模型运行
python owl/run_qwen_zh.py
# 使用 Deepseek 模型运行
python owl/run_deepseek_zh.py
# 使用其他 OpenAI 兼容模型运行
python owl/run_openai_compatiable_model.py
# 使用 Azure OpenAI 运行
python owl/run_azure_openai.py
# 使用 Ollama 运行
python owl/run_ollama.py
对于只需要 LLM API 密钥的更简单版本,您可以尝试我们的最小示例:
python owl/run_mini.py
您可以通过修改 run.py
脚本来使用 OWL 智能体运行您自己的任务:
# 定义您自己的任务
question = "Task description here."
society = construct_society(question)
answer, chat_history, token_count = run_society(society)
print(f"\033[94mAnswer: {answer}\033[0m")
对于上传文件,只需提供文件路径以及您的问题:
# 具有本地文件的任务(例如,文件路径:`tmp/example.docx`)
question = "What is in the given DOCX file? Here is the file path: tmp/example.docx"
society = construct_society(question)
answer, chat_history, token_count = run_society(society)
print(f"\033[94mAnswer: {answer}\033[0m")
然后,OWL 将自动调用与文档相关的工具来处理文件并提取答案。
示例任务
以下是一些您可以尝试使用 OWL 完成的任务:
- "查找苹果公司的最新股价。"
- "分析最近关于气候变化的推文的情绪。"
- "帮我调试这段 Python 代码:[你的代码]"
- "总结这篇研究论文的要点:[论文 URL]"
- "为此数据集创建数据可视化:[数据集路径]"
🧰 工具集和能力
模型上下文协议 (MCP)
OWL 的 MCP 集成为 AI 模型与各种工具和数据源交互提供了一种标准化的方式:
尝试我们在 owl/run_mcp.py
中的综合 MCP 示例,以了解这些功能的实际应用!
可用工具集
重要:有效使用工具集需要具有强大的工具调用功能的模型。对于多模态工具集(Web、Image、Video),模型还必须具有多模态理解能力。
OWL 支持可以通过修改脚本中的 tools
列表来自定义的各种工具集:
# 配置工具集
tools = [
*BrowserToolkit(headless=False).get_tools(), # 浏览器自动化
*VideoAnalysisToolkit(model=models["video"]).get_tools(),
*AudioAnalysisToolkit().get_tools(), # 需要 OpenAI Key
*CodeExecutionToolkit(sandbox="subprocess").get_tools(),
*ImageAnalysisToolkit(model=models["image"]).get_tools(),
SearchToolkit().search_duckduckgo,
SearchToolkit().search_google, # 如果不可用,请注释掉
SearchToolkit().search_wiki,
*ExcelToolkit().get_tools(),
*DocumentProcessingToolkit(model=models["document"]).get_tools(),
*FileWriteToolkit(output_dir="./").get_tools(),
]
可用工具集
关键工具集包括:
多模态工具集(需要多模态模型能力)
- BrowserToolkit:用于 Web 交互和导航的浏览器自动化
- VideoAnalysisToolkit:视频处理和内容分析
- ImageAnalysisToolkit:图像分析和解释
基于文本的工具集
- AudioAnalysisToolkit:音频处理(需要 OpenAI API)
- CodeExecutionToolkit:Python 代码执行和评估
- SearchToolkit:Web 搜索(Google、DuckDuckGo、Wikipedia)
- DocumentProcessingToolkit:文档解析(PDF、DOCX 等)
其他专门的工具集:ArxivToolkit、GitHubToolkit、GoogleMapsToolkit、MathToolkit、NetworkXToolkit、NotionToolkit、RedditToolkit、WeatherToolkit 等。有关完整列表,请参见 CAMEL 工具集文档。
自定义您的配置
要自定义可用工具:
# 1. 导入工具集
f