基于 DeepSeek+AutoGen 的智能体协作系统
用 AutoGen 实现智能体协作流程,假设团队里的 3 个角色,让 3 个角色相互交流后并给出不同方案,最后进行总结。下面是实现的思路,欢迎一起学习交流。
一、系统设计

-
1. sre_engineer_01 - 问题诊断与初步解决方案
- 职责:负责对系统问题进行初步诊断,分析问题症状,提供初步的排查步骤和解决方案。
- 能力:擅长手动执行命令,快速排查问题,提供临时解决方案。
-
2. sre_engineer_02 - 自动化实现与监控集成
- 职责:负责将初步解决方案转化为自动化脚本,并集成到监控系统中。
- 能力:擅长编写 Python 代码,实现自动化运维和监控集成。
-
3. sre_reflection - 方案优化与改进
- 职责:对现有方案进行反思和改进,提出优化建议。
- 能力:具备系统思维和创新能力,擅长从多维度优化方案。
二、实现细节
1. 框架选择
选择微软的 AutoGen 框架作为实现基础。AutoGen 提供了强大的多智能体协作能力,支持智能体之间的信息传递和任务分配。框架的核心组件包括:

- UserProxyAgent:用户代理,负责发起任务。
- AssistantAgent:智能体,负责执行任务并提供反馈。
- GroupChat:多智能体协作的核心组件,管理智能体之间的消息传递和协作流程。
2. 代码实现
以下是关键代码片段:
import argparse
import os
import autogen # type: ignore
from typing importAny# 设置环境变量,指定是否使用Docker
os.environ.setdefault("AUTOGEN_USE_DOCKER", "False")# 配置DeepSeek模型参数
llm_config_deepseek = {"model": "deepseek-v3", # 此处以 deepseek-v3 为例,可按需更换模型名称。"api_key": os.getenv("DASHSCOPE_API_KEY"),"base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1","temperature": 0.5,"stream": False
}# 初始化器:负责任务分配和流程初始化
initializer = autogen.UserProxyAgent(name="initializer",system_message="""你是一个流程初始化器,负责将任务分配给合适的SRE工程师,并确保任务流程顺利进行。""",
)# SRE工程师1:负责问题诊断和初步解决方案
sre_engineer_01 = autogen.AssistantAgent(name="sre_engineer_01",llm_config=llm_config_deepseek,system_message="""你是一位专注于问题解决的 SRE 资深工程师,具备以下特质:技术专长:- 精通 Linux/Unix 系统管理和故障排查- 熟悉容器技术和 Kubernetes 生态系统- 深入理解分布式系统和微服务架构- 掌握主流监控、日志和追踪工具- 具备网络、存储、数据库等基础设施维护经验行为准则:- 专注于问题诊断和初步解决方案- 提供详细的排查步骤和解决方案- 输出完整的命令或代码- 保持思路清晰,避免冗余信息""",
)# SRE工程师2:负责自动化实现和监控集成
sre_engineer_02 = autogen.AssistantAgent(name="sre_engineer_02",llm_config=llm_config_deepseek,system_message="""你是一位专注于自动化实现的 SRE 资深工程师,具备以下特质:技术专长:- 精通自动化运维工具和脚本开发- 熟悉监控系统集成和报警策略配置- 掌握CI/CD pipeline设计与实现- 深入理解自动化运维最佳实践行为准则:- 负责将初步解决方案转化为自动化脚本- 集成监控和报警系统- 确保方案的可维护性和可扩展性- 输出完整的自动化实现方案""",
)# SRE反思工程师:负责方案优化和改进
sre_reflection = autogen.AssistantAgent(name="sre_reflection",llm_config=llm_config_deepseek,system_message="""你是一位专注于方案优化的 SRE 资深工程师,具备以下特质:技术专长:- 深入理解系统可靠性工程- 熟悉容量规划和性能优化- 掌握故障恢复和应急响应机制- 精通系统改进和迭代方法行为准则:- 对现有方案进行多维度评估- 提出优化建议和改进方案- 确保方案的高可用性和可维护性- 输出完整的优化建议报告""",
)# 定义协作流程图
graph_dict = {initializer: [sre_engineer_01],sre_engineer_01: [sre_engineer_02],sre_engineer_02: [sre_reflection],sre_reflection: [], # 最终节点,任务结束
}# 创建所有代理
agents = [initializer,sre_engineer_01,sre_engineer_02,sre_reflection,
]# 初始化组聊天
group_chat = autogen.GroupChat(agents=agents,messages=[],max_round=10,allowed_or_disallowed_speaker_transitions=graph_dict,speaker_transitions_type="allowed",
)# 创建管理器
manager = autogen.GroupChatManager(groupchat=group_chat, llm_config=llm_config_deepseek)defmain():# 解析命令行参数parser = argparse.ArgumentParser(description="Process some integers.")parser.add_argument('--message', type=str, default="磁盘100%,服务器上找不到对应的文件,排查思路?", help='The message to initiate the chat')args = parser.parse_args()# 发起任务initializer.initiate_chat(manager,message=args.message,clear_history=False,)if __name__ == "__main__":main()
3. 协作流程
通过graph_dict定义了智能体之间的协作流程。任务从initializer开始,依次传递给sre_engineer_01、sre_engineer_02,最后由sre_reflection输出优化后的方案。

三、实际运行效果
以“磁盘 100%,服务器上找不到对应的文件,排查思路?”为例,整个协作流程如下:
-
1. 问题发起:用户通过initializer发起任务。
-
2. 问题诊断:sre_engineer_01分析问题症状,提供初步的排查步骤和解决方案。
-
3. 自动化实现:sre_engineer_02将初步解决方案转化为自动化脚本,并集成到监控系统中。
-
4. 方案优化:sre_reflection对方案进行多维度评估,提出改进建议。

四、总结
仅仅尝试了一下 AutoGen 的功能,细节上没有打磨,比如没有处理好流式返回值,所以过程并非流式返回。
往期精彩
AI 时代,如何用 Python 脚本轻松搞定 PDF 需求?
DeepSeek 与 Ollama:本地运行 AI 模型的完美组合
免费使用 DeepSeek 全尺寸模型API,各享 100 万免费 tokens
清华大学:普通人如何抓住 DeepSeek 红利?(65 页 PDF)
深度揭秘:如何用一句话让 DeepSeek 优化你的代码
相关文章:
基于 DeepSeek+AutoGen 的智能体协作系统
用 AutoGen 实现智能体协作流程,假设团队里的 3 个角色,让 3 个角色相互交流后并给出不同方案,最后进行总结。下面是实现的思路,欢迎一起学习交流。 一、系统设计 1. sre_engineer_01 - 问题诊断与初步解决方案 职责:…...
博客系统笔记总结 2( Linux 相关)
Linux 基本使用和程序部署 基本命令 文件操作 显示当前目录下的文件 ls:显示当前目录下的文件 ll:以列表的形式展示,包括隐藏文件 进入目录 && 显示当前路径 cd:进入目录(后面跟相对路径或者绝对路径&…...
计算机毕业设计SpringBoot+Vue.js电影评论网站系统(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
精美登录注册UI,登录页面设计模板
精美登录注册UI,登录页面设计模板 引言 在网页设计中,按钮是用户交互的重要元素之一。一个炫酷的按钮特效不仅能提升用户体验,还能为网页增添独特的视觉吸引力。今天,我们将通过CSS和JavaScript来实现一个“精美登录注册UI,登录页面设计模板”。该素材呈现了数据符号排版…...
《Linux系统编程篇》共享内存(Linux 进程间通信(IPC))——基础篇
文章目录 引言什么是共享内存System V 共享内存 API 引入1. shmget2. shmat3. shmdt4. shmctl5. 结构体 shmid_ds 开始实操注意 结束 今天的你有没有前进一小步呢 ——家驹(StrangeHead) 引言 那么共享内存,我们如何去使用他呢,先来听笔者啰嗦一段话吧…...
【EB-03】 AUTOSAR builder与EB RTE集成
AUTOSAR builder与EB RTE集成 1. Import Arxml files to Tresos2. Run MultiTask Script3. Add Components3.1 Run EcuExtractCreator Script4. Mapping Component to Partitions5. Event Mapping/Runnables Mapping to Tasks6. Port Connect7. Run SvcAs_Trigger Script8. Ver…...
HTML——前端基础1
目录 前端概述 前端能做的事情编辑 两步完成一个网页程序 前端工具的选择与安装 HTML HTML5介绍 HTML5的DOCTYPE声明 HTML基本骨架 文字标签 标题之标签 标签之段落、换行、水平线 标签之图片 标签之超文本链接 标签之文本 列表标签之有序列表 列表标签之无序…...
AI回答:Linux C/C++编程学习路线
Linux C/C编程学习路线需要结合Linux系统特性和C/C语言的特点,以下是一个系统化的学习路径,适合从初学者到进阶者: 第一阶段:Linux基础 Linux操作系统基础 学习Linux基本命令:ls、cd、mkdir、rm、grep、find等。 理解…...
螺旋数字矩阵
螺旋数字矩阵 真题目录: 点击去查看 E 卷 100分题型 题目描述 疫情期间,小明隔离在家,百无聊赖,在纸上写数字玩。他发明了一种写法: 给出数字个数n和行数m(0 < n ≤ 999,0 < m ≤ 999),从左上角的1开始,按照顺时针螺旋向内写方式,依次写出2,3…n,最终形成一…...
Jupyter Notebook切换虚拟环境(Kernel管理)
我们在使用Jupyter Notebook的时候,打开文件发现只有一个Python3(ipykernel),我们自己在conda中创建的虚拟环境为什么没有显示出来,今天我就来和大家一起讨论一下! 在 Jupyter Notebook 中,kernel 是执行代码的核心。管…...
linux下软件安装、查找、卸载
目录 常见安装方式有三种: 1.源码安装。 2.rpm安装方式。 3.yum/apt工具级别安装。 对于前两种安装方式,因为软件可能有依赖关系(安装的软件依赖于某些库,而这些库又依赖于某些库,这些都需要手动安装)…...
vuetify项目添加代理跨域请求
vuetify项目添加代理转发后端接口实现跨域请求 配置一(推荐)配置二 在项目根目录下找到vite.config.mts文件并在里面的server下配置代理, 具体实现代码如下: 配置一(推荐) server: {port: 3000,// 配置代理…...
H5 火柴人科目三和GitHub获取仓库点星星的用户列表发生了艺术的碰撞
先看效果,代码写的比较乱,有待优化 效果 https://linyisonger.github.io/H5.Examples/?name./089.%E7%9C%8B%E6%98%9F%E6%98%9F%E7%9A%84%E8%88%9E%E8%80%85.html 思路 看起来很简单,实则也不是很难,就是需要思路要打开。 一…...
【Azure 架构师学习笔记】- Azure Databricks (12) -- Medallion Architecture简介
本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (11) – UC搭建 前言 使用ADB 或者数据湖,基本上绕不开一个架构“Medallion”, 它使得数据管理更为简单有效。ADB 通过…...
基础知识|原型在什么时候用和类的区别
在 JavaScript 中,原型和类是两个密切相关但有所不同的概念。理解这两者之间的差异有助于更好地掌握面向对象编程(OOP)在 JavaScript 中的实现。 1. 原型(Prototype) 原型是 JavaScript 中实现继承和共享行为的核心机…...
【FFmpeg】拉流
概述 项目实践中涉及到使用ffmpeg进行推流和拉流操作,本文主要对一些基本操作做一个学习总结,后续再学习其源码架构;总结方法遵循实现功能配合函数具体实现 基本使用 拉流 avformat_network_init();//日志输出等级set_ffmpeg_log_level();…...
LangChain构建行业知识库实践:从架构设计到生产部署全指南
文章目录 引言:行业知识库的进化挑战一、系统架构设计1.1 核心组件拓扑1.2 模块化设计原则二、关键技术实现2.1 文档预处理流水线2.2 混合检索增强三、领域适配优化3.1 医学知识图谱融合3.2 检索结果重排序算法四、生产环境部署4.1 性能优化方案4.2 安全防护体系五、评估与调优…...
解决jupyter notebook不是内部或外部命令问题
我们打开cmd有的时候,输入jupyter notebook,发现会提示jupyter 不是内部或外部命令,也不是可运行的程序或批处理文件。遇到这个问题我们应该怎么解决呢? 没错就是添加环境变量! Step01:在电脑中找到jupyter notebook的…...
MySQL----case的用法
在 MySQL 中,CASE 表达式是一个用于条件判断的功能,可以根据不同的条件返回不同的结果。CASE 表达式通常用于 SELECT 查询语句中,可以在 SQL 中灵活地进行条件判断和数据转换。CASE 有两种基本的语法形式: 简单 CASE 表达式&…...
Unity XR-XR Interaction Toolkit开发使用方法(十)组件介绍(XR Interaction Group)
目录 一、插件介绍 二、主要组件 XR Interaction Manager XR Controller XR Interactor XR Direct Interactor XR Ray Interactor XR Socket Interactor XR Gaze Interactor 三、XR Interaction Group 1、组件介绍 2、核心功能与特点 优先级与冲突管理 动态交互切…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
