结论
首先show结论,笔者确实在比赛开打时间之前,通过Magentic-One预测中国VS巴林的比赛胜率结果,预测成功!
China's probability of winning the away match against Bahrain is approximately 70.34%, while Bahrain's chanczs are about 29.66%。
比赛过程,张玉宁错失上半场单刀+下半场结束前的绝杀,加上巴林全场几乎没有像样的进球机会,场面上确实配对上这个概率分析。
也恭喜中国队,离美加墨世界杯又近了一步~~!!
背景
笔者是一位被国足血虐几十年的老球迷,目前美加墨世界杯亚洲区18强预选赛已进入到如火如荼的阶段,随着上一场中国2:1战胜印尼,将于11-14进行的巴林vs中国的比赛也将成为中国队保持晋级希望的重要比赛,既然这么重要的比赛,那中国队的获胜概率能有多少呢,既然已经进入全民AI时代了,那必须要让AI来分析一下呀,既然想要用AI分析,那就要选择用何种形态的AI产品来分析了。
- 基础模型:直接pass,预训练的数据集老旧,无法获取最新的数据进行分析,有的模型可能都不知道美加墨世界杯是什么
- 模型+RAG:效果可能也不行,先不谈RAG的知识库时效问题,就分析推理能力层面,可能也达不到分析这么复杂问题的层度,也基本可以pass
- AI Agent:从市面常见的解决方案来看,Agent可能是目前仅存的比较好解决此类复杂问题的AI方案,但使用成本还是略微有点高,不仅各种tools需要自己编写或者配置,一些Agent推理的思维链也需要不断的调优,距离低成本、开箱即用层面还是有者不少的差距,哪怕一些低代码拖拽的Agent Builder工作流也无法达到。
那市面上有没有一种简单高效的AI解决方案来处理上面的场景呢,这不巧了么,在2024-11月初,微软研究团队发布了一种名为 Magnetic-One 的新型多智能体系统。旨在处理跨多个领域的各种基于网络和文件的任务,其设计初衷是助力解决人们在日常工作和个人场景中面临的类似任务。它构建在微软的 AutoGen 框架之上,以开源的形式为开发者和研究人员提供了强大的工具。
Magnetic-One
Blog:www.microsoft.com/en-us/resea…
Github:github.com/microsoft/a…
Magnetic-One主要由以下部分组成:
- Orchestrator:主导智能体,负责任务分解和整体规划,分配子任务给其他智能体,并在必要时采取纠正措施。
- WebSurfer:基于LLM的智能体,能够操控Chromium浏览器执行网页浏览操作,如导航、点击和输入。WebSurfer使用浏览器辅助树和标记提示来执行这些操作,从而能快速响应任务需求。
- FileSurfer:同样基于LLM的智能体,专为读取和操作本地文件而设计。FileSurfer能够导航文件夹结构、列出目录内容,方便对文件系统进行预览和操作。
- Coder:一个专门用于代码生成和信息分析的LLM智能体,可以编写代码、生成文档或基于其他智能体收集的信息创建新的输出。
- ComputerTerminal:提供对控制台的访问,使系统能够执行Coder生成的程序并安装新的编程库,进一步增强系统的操作能力。
工作原理
Magnetic-One的核心架构基于多智能体系统,其中主导的Orchestrator智能体负责总体任务规划,指导其他智能体并跟踪任务进度。Orchestrator在启动任务时首先制定整体计划,收集任务所需的事实信息和合理假设,记录在任务台账(Task Ledger)中。每一步执行过程中,Orchestrator都会在进度台账(Progress Ledger)中记录当前任务状态和进展,检查任务是否已完成。
如果任务尚未完成,Orchestrator会将子任务分配给系统中的其他智能体,如WebSurfer或Coder等。完成子任务后,Orchestrator更新进度台账,并继续下一步,直到任务全部完成。若Orchestrator在任务执行中发现长时间没有实质性进展,会重新评估任务台账,调整计划。这一双层循环设计包括外层循环用于维护和更新任务台账,内层循环用于实时跟踪和更新进度台账,使Orchestrator能够在任务管理过程中灵活响应变化和错误。
Magnetic-One 与 AutoGen 的对比
Magnetic-One目前是基于AutoGen框架开发出来的Agent方案,其相应的技术融合工作也在进行当中,目前是可以通过Autogen源码中“autogen/python/packages/autogen-magentic-one”的路径独立体验的,那为什么不直接使用AutoGen呢
(一)易用性差异
AutoGen 作为一款已有的框架,在使用过程中可能不够直观。而 Magnetic - One 的出现正是为了解决这一问题,其设计更加注重用户体验,使得多代理的编排和任务管理更加便捷。例如,在任务定义和代理分配方面,Magnetic - One 提供了更清晰的界面和操作流程,降低了用户的学习成本。
(二)架构与功能差异
- 基础架构:Magnetic - One 构建于 AutoGen 框架之上,借助 AutoGen 提供的底层架构实现多代理之间的通信与合作;而 AutoGen 本身是一个独立的框架,提供了更广泛的基础能力。
- 目的定位:Magnetic - One 是一个专门设计用于处理复杂多步骤任务的通用多代理系统,通过专业代理的协作完成任务;AutoGen 则更侧重于创建各种类型的 AI 代理,对任务执行的针对性不如 Magnetic - One 强。
- 代理结构:Magnetic - One 采用结构化的方法,由编排器代理管理四个专业代理协同工作;AutoGen 对其代理的架构没有如此明确的规定,开发者在使用 AutoGen 时需要自行设计和管理代理之间的协作关系。
- 评估工具:Magnetic - One 包含 AutoGenBench 这一专用评估工具,用于在 GAIA 和 AssistantBench 等基准上评估代理性能;AutoGen 虽然允许创建代理,但缺乏内置的性能评估工具,开发者需要自行构建或使用外部工具进行评估。
- 灵活性与适应性:Magnetic - One 的模块化架构使其在添加或删除代理时更加轻松,对整体性能影响较小,适应性更强;AutoGen 虽然具备基础能力,但在实现类似的灵活性时可能需要更多的手动调整。
- 模型无关性:两者都具有模型无关性,但 Magnetic - One 目前针对特定模型(如 GPT - 4o)进行了优化,并可根据任务需求集成其他语言模型;AutoGen 则更注重一般性地支持多种模型,对特定模型的优化相对较少。
实战操作
好了,介绍了那么多,下面开始通过实际场景的使用来实战搭建一个基于Magentic-One的应用吧,首先声明一点,目前由于Magentic-One还处于刚刚发布阶段,目前仅推荐使用例如 OpenAI 的GPT-4o或者o1-preview模型的API方式,并不支持本地模型的使用。所以大家想体验的前提,还是能准备好能直接调用的GTP-4o的Apikey。
环境配置
# 安装 Homebrew(如果没有)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 安装 Python3(如果没有)
brew install python
# 安装 ffmpeg(用于音视频处理)
brew install ffmpeg
# 确保 Docker 已安装并运行,如Dock没有安装,可以看https://juejin.cn/post/7414048597971845160这篇文章,有docker安装介绍
安装依赖
# 1. 克隆代码仓库
git clone https://github.com/microsoft/autogen.git
# 2. 进入项目目录
cd autogen/python/packages/autogen-magentic-one
# 3. 安装项目依赖
pip3 install -e .
# 4. 安装 playwright 及其依赖
playwright install --with-deps chromium
当然,目前上述都是Magentic-One的GithubSetup and Usage指导,实际运行过程中,可能由于个人本地研发环境的问题,会碰到如下报错 Traceback (most recent call last): File "/Users/xxxxx/Downloads/AI Demo/Magentic-One/autogen/python/packages/autogen-magentic-one/examples/example.py", line 8, in from autogen_core.application import SingleThreadedAgentRuntime ModuleNotFoundError: No module named 'autogen_core'
解决方案如下:
#1、Install 'uv' by referencing uv installation
curl -LsSf https://astral.sh/uv/install.sh | sh
#2、add $HOME/.local/bin to your PATH
source $HOME/.local/bin/env
#3、Locate at "autogen/python/" and install all dependencies,
uv sync --all-extras
#4、问题解决,执行代码
source .venv/bin/activate
cd packages/autogen-magentic-one
配置OPEN AI相关字段
export CHAT_COMPLETION_PROVIDER='openai'
export CHAT_COMPLETION_KWARGS_JSON='{"api_key": "YOUR_API_KEY", "model": "gpt-4o-2024-05-13"}'
运行代码
# 进入项目目录
cd ~/autogen/python/packages/autogen-magentic-one
# 基本运行(需要指定日志目录)
python3 examples/example.py --logs_dir ./my_logs
# 启用人工监督模式
python3 examples/example.py --logs_dir ./my_logs --hil_mode
# 保存浏览器截图
python3 examples/example.py --logs_dir ./my_logs --save_screenshots
由于笔者想看一下Magentic-One执行过程访问了哪些页面,所以采用的命令行是: python3 examples/example.py --logs_dir ./my_logs --save_screenshots,并且执行的时间确实在中国队比赛开打之前。
执行过程
以下是Magentic-One分析过程,由于Orchestrator thought了太多次,并且也调用了多次WebSurfer,甚至为了算出具体概率,还执行了如下python代码,我就不解读Magentic-One的具体分析流程了,有兴趣的同学可以自行阅读日志进行思考理解,我将Magentic-One的分析流程日志贴在下面
日志截图
日志目录文件如下
以下是Magentic-One的分析过程的全部截图
截图分析
从截图过程来看,分析决策的过程还是比较符合常规人类思考逻辑,会直接搜索关键字去获取最新Web页面信息,甚至还会通过FIFA的官网比较两队的世界排名来做参考决策,目前对于这种开箱即用的复杂类型Agent框架,在未经过优化之前,能达到这种使用效果,本人觉得已经超越市面同类产品很多了。
如果想达到更好的预测效果,还需要针对此类场景进行更专业的策略优化:
- Agent对搜索到的页面内容进行详细分析,而不是停留在分析搜索结果的标题等信息
- 分析两队球员之间的状态、伤病、身价等因素
- 两队阵型之间的克制关系
- 两队的历史战绩对比分析
- 博彩盘口赔率 通过以上策略优化,相信能达到更客观、更真实的分析效果
写在最后
笔记通过一个实际生活中的使用场景,验证了Magentic-One这个Agent框架的强大与便利之处,AI的技术生态正在以大家难以想象的速度迅猛发展,可能以前花了几个月菜鸟实现的技术效果,过不了多久就被AI大厂做成方案进行开源了,目前我们能做的,就是了解AI底层原理,对AI技术持续保持关注。