微软出品,基于autogen多智能体框架的网页智能体magentic-ui ,可交互网页,不容无视的存在 - 知识铺
Magentic-UI 是微软开发的一个研究原型,是一个以人为中心的多智能体系统界面,能够浏览和执行网页操作、生成和执行代码、生成和分析文件。这是一个基于 AutoGen 框架构建的智能体协作平台。
一 技术点
后端:
-
框架: FastAPI (异步Web框架)
-
数据库: SQLModel + PostgreSQL
-
浏览器自动化: Playwright
前端:
-
框架: React 18 + TypeScript
-
UI库: Ant Design + Tailwind CSS
-
状态管理: Zustand
二、本地安装部署
使用uv来安装,相当方便,建议之前使用conda环境的可以切换uv;
国内的话, 我使用的本地的ollama比较方便一些,当然openai有的话效果更好
<span leaf="">uv venv --python=3.12 .venv
启动后端服务
<span leaf="">magentic-ui --port 8081
注意使用docker images 查看下镜像是不是有
<span leaf="">ghcr.io/microsoft/magentic-ui-python-env 0.0.1 155b0117a656 2 months ago 1.44GB
这是打开的界面
三 数据库
3.1 默认配置文件使用是sqlite数据库
<span leaf="">class Settings(BaseSettings):
SQLModel: 基于 Pydantic 的 ORM,提供类型安全和数据验证
[‘alembic_version’, ‘gallery’, ‘message’, ‘plan’, ‘run’, ‘session’, ‘settings’, ’team’] ,其中看一个 session的定义:
<span leaf="">class Session(SQLModel, table=True):
32 详细看看每个表
Team 表 (团队配置表):用户可以创建不同的AI团队配置,每个团队有不同的代理组合和能力
component字段: 存储完整的团队组件配置,包括:
-
代理列表(agents)
-
模型配置(models)
-
工具配置(tools)
-
终止条件(terminations)
<span leaf="">{"cooperative_planning": true, "autonomous_execution": false, "max_actions_per_step": 5, "multiple_tools_per_call": false, "max_turns": 20, "approval_policy": "auto-conservative", "allow_for_replans": true, "do_bing_search": false, "websurfer_loop": false, "retrieve_relevant_plans": "never", "server_url": "localhost", "mcp_agent_configs": [], "run_without_docker": false, "browser_headless": true, "model_client_configs": "advanced_agent_settings": false}
Session 表 (会话表):管理用户与AI团队的交互会话, 一个Session对应一个Team配置
Run 表 (运行实例表):在Session内的单次任务执行,保存AI团队的执行结果和过程数据
-
CREATED: 已创建,等待执行
-
ACTIVE: 正在执行中
-
COMPLETE: 执行完成
-
ERROR: 执行出错
-
STOPPED: 被停止
-
AWAITING_INPUT: 等待用户输入
-
PAUSED: 暂停状态
Message 表 (消息表):存储对话过程中的所有消息,既属于Session也属于具体的Run
Gallery 表 (组件库表):管理可重用的AI组件: agents、models、tools、terminations、teams
Settings 表 (用户设置表):存储用户个性化设置包括主题、显示选项等
Plan 表 (计划表):存储AI生成的执行计划
<span leaf="">User
数据库的管理是封装了一个class DatabaseManager 来进行增删改查数据库, 而在web服务启动的时候,就会通过init_managers 把数据库给初始化好。
四、浏览器
最大的特点就是浏览器, 首先他里面有三种浏览器; 可以根据不同情况进行选择使用
类型 | 界面 | 部署方式 | 适用场景 |
---|---|---|---|
HeadlessDockerPlaywrightBrowser | 无界面 | Docker 容器 | 生产环境、CI/CD、批量自动化 |
VncDockerPlaywrightBrowser | VNC 远程桌面 | Docker 容器 + VNC 服务 | 调试、开发、需要可视化监控 |
LocalPlaywrightBrowser | 可选界面 | 本地安装 | 开发测试、本地调试 |
4.1 执行create_container方法 创建docker容器
<span leaf="">Docker容器内:
4.2 启动Playwright客户端连接 来和上面的docker容器 通过ws进行连接, 例如
<span leaf="">Connecting to browser at ws://127.0.0.1:9694/ad5d353419d43245bc75c81be6dd8c6a
<span leaf="">self._browser = await connect_browser_with_retry(self._playwright, browser_address)
后面就可以进行通信了
<span leaf="">Python WebSurfer代码
还有一个就是前端也是可以操作这个浏览器的
<span leaf="">前端iframe (http://localhost:novnc_port/vnc.html)
五、agent
内部使用的autogen框架,最让人想到的就是他的群聊机制多智能体, 开始干活, 发送其他几个agent,这里简单介绍下,因为autogen框架是一个很复杂很强大的框架。
Orchestrator (智能协调器)
<span leaf=""> 负责管理群聊的智能协调器,功能包括:
参与者
<span leaf=""> web_surfer,
群聊启动流程:
-
接收 GroupChatStart 事件 (@rpc handle_start)
-
检查终止条件
-
向所有参与者广播初始消息
-
选择第一个发言者
-
发送 GroupChatRequestPublish 请求
代理响应处理:
-
接收 GroupChatAgentResponse 事件 (@event handle_agent_response)
-
将响应添加到消息线程
-
检查终止条件和最大轮次
-
选择下一个发言者并发送请求
六 实例运行效果
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/ai/post/202510/%E5%BE%AE%E8%BD%AF%E5%87%BA%E5%93%81%E5%9F%BA%E4%BA%8Eautogen%E5%A4%9A%E6%99%BA%E8%83%BD%E4%BD%93%E6%A1%86%E6%9E%B6%E7%9A%84%E7%BD%91%E9%A1%B5%E6%99%BA%E8%83%BD%E4%BD%93magentic-ui-%E5%8F%AF%E4%BA%A4%E4%BA%92%E7%BD%91%E9%A1%B5%E4%B8%8D%E5%AE%B9%E6%97%A0%E8%A7%86%E7%9A%84%E5%AD%98%E5%9C%A8--%E7%9F%A5%E8%AF%86%E9%93%BA/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com