Featured image of post 微软重磅发布Magentic UI,交互式AI Agent助手实测!

微软重磅发布Magentic UI,交互式AI Agent助手实测!

何为Magentic UI?

Magentic UI 是微软于5.19重磅发布的开源Agent助手,并于24日刚更新了第二个版本0.04版

从官方的介绍来看,目标是打造一款 以人为中心 的智能助手,其底层由多个不同的智能体系统驱动,能够实现网页浏览与操作、代码生成与执行、文件生成与分析等功能。

它区别于其他一些AI浏览器工具的主要区别在于其 透明可控的交互界面,支持高效的人机协同参与。该系统基于微软的Agent构建框架 AutoGen 构建,目前还处在原型研究阶段。

核心功能包括:

🧑‍🤝‍🧑 协同规划:用户和AI通过聊天和计划编辑器协作创建并修订分步执行计划。
🤝 协同任务:用户可直接通过网页浏览器或聊天界面实时介入并指导任务执行。Magentic-UI 能在需要时主动确认或要求协助。
🛡️ 操作防护:敏感操作需经用户明确批准后方可执行。
🧠 计划学习与检索:从过往任务中学习经验以优化未来自动化流程,并将优秀方案保存至计划库。在后续任务中可自动或手动调用已存储的计划。
🔀 并行任务执行:支持多任务并行运行,会话状态指示器会实时提示 Magentic-UI 何时需要您的输入或任务已完成。

设计架构

Magentic-UI 的底层系统是由一组从 AutoGen 的 Magentic-One 系统(如上图所示)改造而来的专业化 Agent 组构成,各Agent通过模块化协作实现不同功能:

Agent功能说明

总控代理(Orchestrator)

  • 功能定位:基于大语言模型(LLM)的主控智能体,负责与用户协同制定计划、决策何时请求用户反馈,并向其他智能体分配子任务。
  • 协作流程
    1. 与用户共同制定分步执行计划;
    2. 动态判断需用户介入的节点;
    3. 将子任务分派至其他智能体执行。

网页浏览代理(WebSurfer)

  • 功能定位:配备网页浏览器的 LLM 智能体,支持多轮次网页交互操作。
  • 核心能力
    • 根据总控代理的指令,执行点击、输入、滚动、页面跳转等操作;
    • 超越 AutoGen 多模态网页浏览器:新增标签管理、选项选择、文件上传及多模态查询支持。

代码执行代理(Coder)

  • 功能定位:配备 Docker 代码执行容器的 LLM 智能体。
  • 核心能力
    • 编写并执行 Python 和 Shell 命令;
    • 将执行结果反馈至总控代理。

**文件处理代理(FileSurfer)

**

  • 功能定位:集成 Docker 容器与 MarkItDown 包文件转换工具的 LLM 智能体。
  • 核心能力
    • 定位 Magentic-UI 控制目录下的文件;
    • 将文件转换为 Markdown 格式并支持内容问答。

用户代理(UserProxy)

  • 功能定位:代表用户与系统交互的代理角色。
  • 协作模式:总控代理可将任务直接委派给用户(而非其他智能体)完成。

用户交互流程

用户利用 Magentic UI 的交互流程可以用下图表示:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
graph TD

    A[用户发起请求] --> B[输入文本/附加图片];

    B --> C{Magentic-UI 生成分步计划};

    C -- 生成成功 --> D[用户进入计划编辑界面];

    C -- 生成失败 --> C1[提示用户重新输入];

    C1 --> B;

  

    D -- 用户编辑计划 --> E{编辑操作};

    E -- 添加/删除/修改步骤 --> D;

    E -- 确认完成 --> F[总控代理存储计划];

  

    F --> G[启动计划执行引擎];

    G --> H{按顺序执行步骤};

  

    H --> I{当前步骤类型?};

    subgraph 具体步骤执行

        direction LR

        I -- WebSurfer --> J[执行网页操作];

        I -- Coder --> K[生成并执行代码];

        I -- FileSurfer --> L[处理文件];

        I -- UserProxy --> M[提示用户手动操作];

    end

  

    J --> N{步骤是否成功完成?};

    K --> N;

    L --> N;

    M --> N;

  

    N -- 是 --> O{所有步骤均已完成?};

    N -- 否 --> P[记录错误原因];

  

    P --> Q{是否需要重新规划?};

    Q -- 是 --> R[请求用户许可重新规划];

    R -- 同意 --> C;

    R -- 拒绝 --> S[终止流程];

    Q -- 否 --> S;

  

    O -- 是 --> T[生成最终结果];

    O -- 否 --> H;

  

    T --> U[向用户呈现结果];

    U --> V[结束];

  1. 输入与计划生成

    • 用户通过文本/图片触发流程,系统生成初始计划。若失败则提示用户重新输入。
    • 用户通过编辑界面迭代优化计划,确认后进入执行阶段。
  2. 计划执行逻辑

    • 总控代理按步骤分配任务至对应智能体(WebSurfer/Coder/FileSurfer)或用户。
    • 每个步骤完成后验证状态,若失败则判断是否需要重新规划(需用户授权)。
  3. 动态控制与终止

    • 用户可随时干预:暂停执行、修改计划或终止流程。
    • 所有步骤完成后交付最终结果,异常情况下提供透明错误反馈。

工具部署

Magentic AI 主要基于Python 开发,Web部分基于FastAPI。而它的AI控制主要通过 Playwright 控制 Docker 容器中的一个虚拟浏览器,且可以实时显示给用户。而背后的大模型则主要基于各个开放大模型的API接入方式使用。

所以要部署Magentic UI,需要先确认相关前置条件:

  • Docker已安装,如果是Window系统,安装Docker Desktop,且和WSL集成
  • 提供大模型的接入API KEY,默认使用的是 OPENAI 的API KEY
  • Python运行环境且 >3.10 版本

是在WSL中部署的这个工具, 首先创建python虚拟环境,然后安装Magentic AI及相关依赖

1
2
3
python3 -m venv .venv
source .venv/bin/activate
pip3 install magentic-ui

确保Docker已启动, 运行Magentic UI前应该没有相关容器在运行

1
docker ps

大模型这里可以使用微软Azure AI上的OPENAI, , 完成配置后,将对应api key设置为环境变量 OPENAI_API_KEY

1
export OPENAI_API_KEY="YOUR_API_KEY"

另外Magentic UI本身需要对大模型进行配置,Azure AI的配置模板如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
model_config: &client

  provider: AzureOpenAIChatCompletionClient

  config:

    model: gpt-4o

    azure_endpoint: "<YOUR ENDPOINT>"

    azure_deployment: "<YOUR DEPLOYMENT>"

    api_version: "2024-10-21"

    azure_ad_token_provider:

      provider: autogen_ext.auth.azure.AzureTokenProvider

      config:

        provider_kind: DefaultAzureCredential

        scopes:

          - https://cognitiveservices.azure.com/.default

    max_retries: 10

  

orchestrator_client: *client

coder_client: *client

web_surfer_client: *client

file_surfer_client: *client

action_guard_client: *client

运行

然后运行Magentic ui, 默认使用8081端口,首次运行会下载多个不同docker镜像及相关依赖,时间较长,等待安装完成

1
magentic ui --port 8081

等运行log中出现如下信息,则启动成功

1
| INFO     | magentic_ui.backend.web.app:lifespan:59 - Application startup complete. Navigate to http://127.0.0.1:8081

浏览器访问 http://localhost:8081

会看到如下界面

启动一个会话后,比如让AI协助我们完成一个测试

1
请测试saucedemo.com网站的不同用户登录功能是否正常,并汇总问题为markdown格式

如安装正确,大模型调用正常,那么Magentic UI 就会规划相关任务计划,并让用户确认

用户也可以根据相关反馈,对计划进行调整,在计划执行过程中,也可以和AI交互,变更它的执行路径。具体的执行演示,可参看下方视频。

这时查看WSL中的docker 运行信息,可以看到运行了3个容器,其中两个是mangenti UI的coderfile surfer 智能体,另一个是可远程查看的 vnc_browser 容器

一系列步骤执行完成,Magentic UI根据最开始的指令,得到了如下markdown格式结果汇总。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
以下是对saucedemo.com网站不同用户登录功能测试的结果汇总:

1. **标准用户** (`standard_user`):
    
    - 登录成功。
    - 无问题,用户可以正常访问库存页面并浏览产品。
2. **被锁定用户** (`locked_out_user`):
    
    - 登录失败。
    - 显示错误消息 "Epic sadface: Sorry, this user has been locked out." 账户已被锁定,无法访问。
3. **问题用户** (`problem_user`):
    
    - 登录成功。
    - 产品图像存在不匹配的问题,图像错误是已知问题。
4. **性能故障用户** (`performance_glitch_user`):
    
    - 登录成功。
    - 无明显系统减慢或异常,用户可以正常导航。

这些结果表明网站能够正确处理不同账户类型的登录场景。如果您想亲自测试,可以访问 [saucedemo.com](https://www.saucedemo.com/)。

使用体会

总体应用下来,把AI重新定位为辅助者角色,显然更贴合当前AI应用的实际,而且通过容器实时显示AI的操作过程,使AI执行任务不再像个黑盒,确实友好了很多。

不过应用中感觉还是实用性不是太好,虽然官方已声明现阶段还是研究性质,但尚有较大改进空间。

  1. 安装和配置比较复杂,各种依赖包众多,耗时较久
  2. 大模型本身能力对执行过程,包括是否能正常完成交互都有较大影响。调用失败和异常较多。
  3. 大模型的token消耗比较可观,完成一个任务,其实会分解多数十个不同请求,而每个请求的token消耗也是数千计,实用付费模型的话,成本高昂

下图是Azure后台查看的我试验期间的token消耗,比较可观。

总之,Magentic UI 的发展方向值得期待,但当下还需要多等待它的进一步完善。


使用 Hugo 构建
主题 StackJimmy 设计