MiroFlow是一个专为简化复杂多智能体系统开发而设计的智能体框架。 它提供了一套经过测试的工具,能够可靠地完成需要使用多种工具的复杂任务。MiroFlow在GAIA验证集上取得了72.2%的pass@1(三次运行平均)的成绩,这个表现在开源智能体框架中处于前沿水平。 该框架具备高并发和容错能力,可以有效地进行大规模数据收集,并能处理API访问速率限制和网络不稳定的问题。 同时,MiroFlow内置了可观察性和评估功能,附带了用于基准测试的脚本和用于可视化调试智能体追踪数据的网页用户界面。 MiroFlow与MiroThinker系列开源智能体模型紧密集成,这些模型专门为处理复杂的多工具任务而构建,旨在提供一个从开发到部署的完整解决方案。
功能列表
- 可复现的性能: 在GAIA验证集上,使用Claude Sonnet 3.7作为其主要大型语言模型时,MiroFlow在三次运行中的平均pass@1得分率为72.2%,展示了其最先进的性能水平。
- 高并发与容错: 框架设计支持高效的数据收集扩展,并能妥善处理网络不稳定或API限流等问题。
- 内置可观察性与评估: 自带基准测试脚本和Web用户界面,方便开发者可视化分析和调试智能体的运行数据。
- 模块化架构: 采用复杂的模块化设计,支持多轮对话、全面的工具集成以及分层的子智能体结构。
- 工作流概览:
- 意图识别与查询增强: 使用大型语言模型分析用户输入,以确定意图并丰富查询内容。
- 规划与任务编排: 主智能体根据增强后的查询制定执行计划,并协调整个工作流程。
- 委派给子智能体: 对于复杂的领域特定任务,主智能体可以将任务委派给专门的子智能体。
- 通过MCP服务器访问工具: 当需要外部功能时,智能体通过连接到模型上下文协议(MCP)服务器来利用专门的工具。
- 结果综合与输出对齐: 任务完成后,一个专门的摘要流程会综合结果,确保输出质量并符合用户指令。
- 与MiroThinker集成: 与MiroThinker开源智能体模型无缝协作,这些模型专为执行复杂、多工具参与的任务而设计。
使用帮助
安装与环境设置
我们推荐使用uv
和python>=3.12
版本。
第一步:克隆仓库并准备Python环境
首先,克隆MiroFlow的GitHub仓库到本地,并进入相应的应用目录,然后使用uv
同步环境。
## 克隆仓库
git clone https://github.com/MiroMindAI/MiroFlow
cd MiroFlow/apps/run-agent
## 准备python环境
uv sync
第二步:设置环境变量
你需要设置一系列环境变量,以便MiroFlow能够访问所需的数据集和API服务。
必需的环境变量包括:
HF_TOKEN
: 用于从Hugging Face下载数据集。OPENROUTER_API_KEY
: 使用OpenRouter提供主要的智能体模型。ANTHROPIC_API_KEY
: 用于视觉工具。OPENAI_API_KEY
: 用于音频工具、意图识别和答案提取。GEMINI_API_KEY
: 用于处理YouTube相关任务。SERPER_API_KEY
: 用于Google搜索和网站内容抓取。JINA_API_KEY
: 用于网站内容抓取。E2B_API_KEY
: 用于Linux沙盒环境。
可选的环境变量:
HTTPS_PROXY
: 设置网络代理,默认为空。DATA_DIR
: 数据加载目录,默认为../../data
。
你需要将这些变量存储在.env
文件中。可以先从模板文件复制一份:
cd MiroFlow/apps/prepare-benchmark
cp .env.template .env
vim .env
cd ../run-agent
cp .env.template .env
vim .env
```如果你希望使用其他大型语言模型作为主要智能体模型,则需要提供相应的API密钥。
**第三步:准备E2B沙盒(可选)**
为了实现可复现的结果,官方推荐配置一个E2B沙盒。这需要你的本地环境装有`npm`和`Docker`。
1. **安装并登录E2B命令行工具:**
```bash
## 安装e2b
npm install -g @e2b/cli
## 检查是否可用
which e2b
```
2. **下载预设的Dockerfile:**
```bash
wget https://github.com/MiroMindAI/MiroFlow/blob/main/docs/e2b.Dockerfile
```
3. **构建模板:**
使用`e2b template build`命令来构建本地的Docker镜像。请将模板命名为`all_pip_apt_pkg`。
```bash
## 在本地使用`docker build`构建模板
E2B_ACCESS_TOKEN=${your-token} e2b template build -c "/root/.jupyter/start-up.sh" -n "all_pip_apt_pkg" -d ./e2b.Dockerfile
## 检查模板是否构建成功
E2B_ACCESS_TOKEN=${your-token} e2b template list
```
更多信息可以参考E2B Docker的官方文档。
### 运行与评估
**运行单个任务**
你可以通过命令行运行一个指定的任务。
```bash
## 使用指令运行一个任务
cd MiroFlow/apps/run-agent
uv run main.py trace --task="你的任务描述" --task_file_name="相关任务文件的路径"
在基准上进行评估
你可以使用预设的智能体在基准数据上运行评估。
- 下载数据:
## 下载数据 cd MiroFlow/apps/prepare-benchmark uv run main.py get gaia-val
- 运行代码:
## 运行代码 cd MiroFlow/apps/run-agent uv run main.py common-benchmark benchmark=gaia-validation
如果需要并行执行多次评估,可以使用提供的脚本:
cd MiroFlow/apps/run-agent
bash scripts/claude-sonnet-3.7/run_evaluate_multiple_runs_gaia-validation.sh
应用场景
- 复杂任务自动化
MiroFlow可以用于自动化处理需要多步骤、多工具协调的复杂任务,例如进行深入的课题研究。 智能体可以自主规划、执行搜索、分析数据并生成报告。 - 软件开发辅助
开发者可以利用MiroFlow构建能够辅助编程的智能体,例如自动编写代码、执行测试、调试以及修复漏洞等。 - 数据收集与分析
MiroFlow的高并发特性使其非常适合用于大规模的数据收集项目,例如从多个网站抓取信息、处理并进行结构化分析。 - 学术研究
研究人员可以利用MiroFlow复现和验证AI智能体的性能,或者基于该框架开发新的智能体模型和算法,推动AI领域的发展。
QA
- 为什么选择MiroFlow而不是其他智能体框架?
MiroFlow的核心优势在于其稳定且可复现的性能。 许多开源项目虽然在文档中列出了很高的基准分数,但通常缺乏明确的测试条件,难以复现。 MiroFlow提供完全开放的评估脚本和配置文件,并在HuggingFace上发布了多次独立的GAIA追踪运行数据,确保了结果的透明度和可靠性。 - MiroFlow支持哪些大型语言模型?
MiroFlow的LLM Client
提供了一个统一的接口,支持多种大型语言模型提供商,包括Anthropic, OpenAI, Google, Qwen, DeepSeek以及本地部署的模型。 - 什么是MiroThinker?它与MiroFlow有什么关系?
MiroThinker是MiroMindAI推出的开源智能体模型系列,专门为处理复杂的多工具任务而设计。 MiroFlow作为智能体框架,与MiroThinker模型无缝集成,提供了一个从模型到框架的端到端解决方案,用于构建高性能、可复现的AI智能体。