当前位置: 首页 > news >正文

基于 DeepSeek+AutoGen 的智能体协作系统

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

 

一、系统设计

Image

  1. 1. sre_engineer_01 - 问题诊断与初步解决方案

    • 职责:负责对系统问题进行初步诊断,分析问题症状,提供初步的排查步骤和解决方案。
    • 能力:擅长手动执行命令,快速排查问题,提供临时解决方案。
  2. 2. sre_engineer_02 - 自动化实现与监控集成

    • 职责:负责将初步解决方案转化为自动化脚本,并集成到监控系统中。
    • 能力:擅长编写 Python 代码,实现自动化运维和监控集成。
  3. 3. sre_reflection - 方案优化与改进

    • 职责:对现有方案进行反思和改进,提出优化建议。
    • 能力:具备系统思维和创新能力,擅长从多维度优化方案。

 

二、实现细节
1. 框架选择

选择微软的 AutoGen 框架作为实现基础。AutoGen 提供了强大的多智能体协作能力,支持智能体之间的信息传递和任务分配。框架的核心组件包括: 

Image

  • 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输出优化后的方案。 

Image

三、实际运行效果

以“磁盘 100%,服务器上找不到对应的文件,排查思路?”为例,整个协作流程如下: 

  1. 1. 问题发起:用户通过initializer发起任务。

  2. 2. 问题诊断:sre_engineer_01分析问题症状,提供初步的排查步骤和解决方案。

  3. 3. 自动化实现:sre_engineer_02将初步解决方案转化为自动化脚本,并集成到监控系统中。

  4. 4. 方案优化:sre_reflection对方案进行多维度评估,提出改进建议。

Image

四、总结

仅仅尝试了一下 AutoGen 的功能,细节上没有打磨,比如没有处理好流式返回值,所以过程并非流式返回。 


往期精彩

AI 时代,如何用 Python 脚本轻松搞定 PDF 需求?

DeepSeek 与 Ollama:本地运行 AI 模型的完美组合

免费使用 DeepSeek 全尺寸模型API,各享 100 万免费 tokens

清华大学:普通人如何抓住 DeepSeek 红利?(65 页 PDF)

深度揭秘:如何用一句话让 DeepSeek 优化你的代码

相关文章:

基于 DeepSeek+AutoGen 的智能体协作系统

用 AutoGen 实现智能体协作流程,假设团队里的 3 个角色,让 3 个角色相互交流后并给出不同方案,最后进行总结。下面是实现的思路,欢迎一起学习交流。  一、系统设计 1. sre_engineer_01 - 问题诊断与初步解决方案 职责&#xff1a…...

博客系统笔记总结 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的时候&#xff0c;打开文件发现只有一个Python3(ipykernel)&#xff0c;我们自己在conda中创建的虚拟环境为什么没有显示出来&#xff0c;今天我就来和大家一起讨论一下&#xff01; 在 Jupyter Notebook 中&#xff0c;kernel 是执行代码的核心。管…...

linux下软件安装、查找、卸载

目录 常见安装方式有三种&#xff1a; 1.源码安装。 2.rpm安装方式。 3.yum/apt工具级别安装。 对于前两种安装方式&#xff0c;因为软件可能有依赖关系&#xff08;安装的软件依赖于某些库&#xff0c;而这些库又依赖于某些库&#xff0c;这些都需要手动安装&#xff09;…...

vuetify项目添加代理跨域请求

vuetify项目添加代理转发后端接口实现跨域请求 配置一&#xff08;推荐&#xff09;配置二 在项目根目录下找到vite.config.mts文件并在里面的server下配置代理&#xff0c; 具体实现代码如下&#xff1a; 配置一&#xff08;推荐&#xff09; server: {port: 3000,// 配置代理…...

H5 火柴人科目三和GitHub获取仓库点星星的用户列表发生了艺术的碰撞

先看效果&#xff0c;代码写的比较乱&#xff0c;有待优化 效果 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 思路 看起来很简单&#xff0c;实则也不是很难&#xff0c;就是需要思路要打开。 一…...

【Azure 架构师学习笔记】- Azure Databricks (12) -- Medallion Architecture简介

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (11) – UC搭建 前言 使用ADB 或者数据湖&#xff0c;基本上绕不开一个架构“Medallion”&#xff0c; 它使得数据管理更为简单有效。ADB 通过…...

基础知识|原型在什么时候用和类的区别

在 JavaScript 中&#xff0c;原型和类是两个密切相关但有所不同的概念。理解这两者之间的差异有助于更好地掌握面向对象编程&#xff08;OOP&#xff09;在 JavaScript 中的实现。 1. 原型&#xff08;Prototype&#xff09; 原型是 JavaScript 中实现继承和共享行为的核心机…...

【FFmpeg】拉流

概述 项目实践中涉及到使用ffmpeg进行推流和拉流操作&#xff0c;本文主要对一些基本操作做一个学习总结&#xff0c;后续再学习其源码架构&#xff1b;总结方法遵循实现功能配合函数具体实现 基本使用 拉流 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有的时候&#xff0c;输入jupyter notebook&#xff0c;发现会提示jupyter 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。遇到这个问题我们应该怎么解决呢? 没错就是添加环境变量&#xff01; Step01&#xff1a;在电脑中找到jupyter notebook的…...

MySQL----case的用法

在 MySQL 中&#xff0c;CASE 表达式是一个用于条件判断的功能&#xff0c;可以根据不同的条件返回不同的结果。CASE 表达式通常用于 SELECT 查询语句中&#xff0c;可以在 SQL 中灵活地进行条件判断和数据转换。CASE 有两种基本的语法形式&#xff1a; 简单 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、核心功能与特点 优先级与冲突管理 动态交互切…...

Verilog新手避坑指南:用Icarus Verilog写Testbench时,$dumpfile和$dumpvars这两行到底有什么用?

Verilog仿真核心机制解析&#xff1a;$dumpfile与$dumpvars的底层逻辑与实战技巧 刚接触Verilog仿真的开发者&#xff0c;往往会在Testbench中看到这两行神秘的代码&#xff1a; $dumpfile("waveform.vcd"); $dumpvars(0, top_module);它们像黑魔法咒语一样被复制粘贴…...

别再复制粘贴了!手把手教你用TypeScript封装一个企业级axios请求库(附完整源码)

从零构建高可维护的TypeScript请求库&#xff1a;axios企业级封装实战 每次在Vue3项目中新建一个页面&#xff0c;你是否习惯性打开旧项目复制粘贴网络请求代码&#xff1f;当接口字段变更时&#xff0c;是否需要在十几个文件中逐个修改错误处理逻辑&#xff1f;这种重复劳动不…...

Rust crate 构建与依赖管理

Rust作为一门现代系统编程语言&#xff0c;凭借其出色的性能与安全性吸引了大量开发者。而Rust的模块化设计核心——crate&#xff08;代码库&#xff09;的构建与依赖管理&#xff0c;则是每个Rust开发者必须掌握的关键技能。无论是构建小型工具还是大型项目&#xff0c;高效的…...

别再只会点‘Solve’了!Ansys Workbench 2022R1静力学分析完整避坑清单与高级技巧

Ansys Workbench静力学分析进阶指南&#xff1a;从避坑到高效求解 在工程仿真领域&#xff0c;Ansys Workbench作为行业标杆工具&#xff0c;其静力学分析模块的深度应用往往决定了仿真结果的可靠性与工程价值。本文针对已掌握基础操作但面临复杂工况挑战的工程师&#xff0c;系…...

高级java每日一道面试题-2025年10月14日-团队协作篇[LangChain4j]-如何设计代码审查标准?

设计代码审查标准 在大型项目尤其是使用 LangChain4j 构建 AI 应用的场景中&#xff0c;代码审查&#xff08;Code Review&#xff09;不仅是保证代码质量的手段&#xff0c;更是知识传递、规范落地和风险控制的关键环节。设计一套科学、可执行的代码审查标准&#xff0c;需要从…...

汉鼎建设:用技术解码高端制造的“洁净密码”

在东莞这座“世界工厂”&#xff0c;从精密电子到新能源电池&#xff0c;无数高端制造企业的生产线&#xff0c;都藏在一个个“比手术室还干净”的净化车间里。而广东汉鼎建设集团&#xff0c;正是这些车间背后的“隐形建造者”——作为总部位于东莞东城、拥有装修与机电双一级…...

暗黑破坏神2存档编辑器:3步打造你的完美游戏角色

暗黑破坏神2存档编辑器&#xff1a;3步打造你的完美游戏角色 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 还在为暗黑破坏神2的角色属性不够理想而烦恼&#xff1f;或者想体验不同的装备组合却不想重新练级&#xff1f;今天我…...

算法竞赛经典代码集锦

1、排列论文#include<bits/stdc.h> using namespace std; const int N105; vector<int>g[N]; int a[N]; int n,m; int flag; int topSort(){queue<int>q;for(int i1;i<n;i){if(a[i]0){q.push(i);}}int cnt0;flag1;while(!q.empty()){int tq.front();q.pop…...

HY-Motion 1.0详细步骤:从HuggingFace下载→模型加载→推理→FBX导出全链路

HY-Motion 1.0详细步骤&#xff1a;从HuggingFace下载→模型加载→推理→FBX导出全链路 想用一句话就让3D角色动起来吗&#xff1f;HY-Motion 1.0让这个想法变成了现实。这是一个能听懂你文字描述&#xff0c;然后生成高质量3D人体动作的模型。无论是“一个人在做深蹲”还是“…...

腾讯云轻量2核2G Ubuntu 服务器配置 + Xshell 连接服务器

购买成功会跳转到这个页面一、第一步&#xff1a;放行防火墙端口&#xff08;必做&#xff01;否则连不上、访问不了&#xff09; 我们现在在服务器列表页&#xff0c;必须先开放端口&#xff0c;否则 Xshell 连不上、项目也访问不了。 1. 进入防火墙设置 点击截图箭头指向的 「…...