LLM+多智能体协作:基于CrewAI与DeepSeek的邮件自动化实践

文章目录

  • 引言
  • 理解 Flows(工作流)与 Crews(协作组)
  • 一、环境准备与工具安装
    • 1.1 Python环境搭建
    • 1.2 创建并激活虚拟环境
    • 1.3 安装核心依赖库(crewai、litellm)
  • 二、本地DeepSeek R1大模型部署
    • 2.1 Ollama框架安装
    • 2.2 验证Ollama服务状态
    • 2.3 运行DeepSeek-R1模型
  • 三、代码实现与运行
    • 3.1 项目文件结构说明
    • 3.2 main.py核心功能
    • 3.3 运行程序
    • 3.4 输出日志
  • 四、项目源码
  • 五、源码解释(Agent、Tasks、工作流)
    • 5.1 Agent(智能体)系统设计
    • 5.2 Task(任务)系统设计
    • 5.3 工作流设计原理

引言

在人工智能技术日新月异的今天,如何将大语言模型(LLM)与多智能体协作框架结合实现自动化流程,已成为开发者关注的热点。本文将分享一个基于CrewAI多智能体框架与DeepSeek-R1本地化大模型的创新实践——我们成功构建了一个具备完整邮件撰写、优化、发送能力的AI协作系统。该方案通过Writer(撰写)Editor(编辑)Sender(发送) 三个智能体的有机协作,实现了从主题输入到邮件发送的端到端自动化处理,不仅展现了多智能体系统的任务分解与流程控制能力,更验证了本地化大模型在隐私敏感场景下的实用价值。本文将深入解析该系统的技术架构、实现逻辑,以及这种技术组合带来的开发效率提升与部署成本优化。

程序流程图
程序流程图

理解 Flows(工作流)与 Crews(协作组)

CrewAI 提供两种强大互补的方法,可无缝协作构建复杂的 AI 应用:
Crews(协作组)
由具有真正自主决策能力的 AI 智能体组成的团队,通过角色化协作完成复杂任务。Crews 支持:

  • 智能体间的自然自主决策
  • 动态任务委派与协作
  • 定义明确目标和专业能力的专属角色
  • 灵活的问题解决方式

Flows(工作流)
面向生产环境的事件驱动型工作流,可精准控制复杂自动化流程。Flows 提供:

  • 对现实场景执行路径的细粒度控制
  • 任务间安全一致的状态管理
  • AI 智能体与生产级 Python 代码的洁净集成
  • 复杂业务逻辑的条件分支处理

协同威力
当 Crews 与 Flows 结合时,CrewAI 展现出真正的强大能力,使您可以:

  • 构建复杂的生产级应用程序
  • 在自主性与精准控制间取得平衡
  • 处理复杂的现实场景
  • 保持清晰可维护的代码结构

一、环境准备与工具安装

1.1 Python环境搭建

确保您的系统上安装了 Python >=3.10 < 3.13。CrewAI 使用 UV 进行依赖项管理和包处理,提供无缝的设置和执行体验。
验证安装

python --version 或者 pip --version  #查看是否输出版本号(Python >=3.10 < 3.13)

1.2 创建并激活虚拟环境

为了保持依赖隔离,建议在电脑上创建虚拟环境:

  • 打开终端(Windows 用 CMD/PowerShell,Linux/Mac 用终端)。
  • 导航到你的工作目录(例如 ~/Projects 或 C:\Projects)
cd ~/Projects  # Linux/Mac
cd C:\Projects  # Windows

创建虚拟环境:

python -m venv deepseek_env

激活虚拟环境:
Linux/Mac:

source deepseek_env/bin/activate

Windows:

deepseek_env\Scripts\activate

激活后,终端提示符前会出现 (deepseek_env)。

升级 pip:
修复pip安装

Python -m ensurepip --upgrade

升级pip

Python -m pip install --upgrade pip

1.3 安装核心依赖库(crewai、litellm)

安装必要库: 在虚拟环境中运行:

pip install crewai litellm

检查是否安装成功:

pip show crewai  # 显示 crewai 版本信息
pip show litellm  # 显示 litellm 版本信息

二、本地DeepSeek R1大模型部署

2.1 Ollama框架安装

访问Ollama官网 下载适用于您操作系统的版本。
Linux:

curl -fsSL https://ollama.com/install.sh | sh

Mac: 下载 .dmg 文件并安装。
Windows: 下载可执行文件并安装。

本文演示系统为Windows操作系统
进入官网后点击Download下载
ollama官网
点击Download for Windows进行安装,这里以Windows系统示例
安装ollama
下载完毕是一个.exe文件,然后双击.exe文件进行安装
安装界面
安装完成后再终端输入ollama --version来查看是否安装成功
验证是否安装成功

2.2 验证Ollama服务状态

# 检查服务是否运行(通用命令)
ollama list  # 若返回空列表则表示服务正常# 或通过API接口验证
curl http://localhost:11434/api/tags  # 预期返回JSON格式模型列表

2.3 运行DeepSeek-R1模型

ollama run deepseek-r1:1.5b

安装DeepSeek R1模型

# 进阶操作(可选):
ollama ps        # 查看模型运行状态
ollama ls        # 列出已下载模型
ollama run deepseek-r1:1.5b "你好"  # 直接交互测试

三、代码实现与运行

3.1 项目文件结构说明

mail-agent-project/
├── main.py         # 主程序 - 定义智能体/任务/工作流

3.2 main.py核心功能

  • 定义Writer邮件撰写专家/Editor邮件优化专家/Sender邮件发送专员三个智能体
  • 构建任务链(撰写→润色→发送)
  • 实现SMTP邮件发送回调
  • 主流程控制(CrewAI顺序执行)
# 代码结构概览
import os
from crewai import Agent, Task, Crew, Process
import smtplib
from email.mime.text import MIMEText
# 配置环境变量/配置LiteLLM的Ollama模型
# 智能体定义(Writer/Editor/Sender)
# 任务链构建(create_writer_task/create_editor_task/create_sender_task)
# 邮件发送函数(send_email)
# 主函数(main)与程序入口

Ollama服务初始化: 本地启动模型推理服务,为后续LLM调用提供API端点
模型内容生成: Writer智能体通过DeepSeek-R1模型完成原始邮件创作
内容优化阶段: Editor智能体对文本进行结构化重组与语气调整
SSL加密认证: 采用SMTP_SSL协议保障邮箱账号认证安全性

3.3 运行程序

进入虚拟环境:

source deepseek_env/bin/activate  # Linux/Mac
# 或
deepseek_env\Scripts\activate  # Windows

执行邮件智能体程序

python test.py

3.4 输出日志

因为我这里使用的事deepseek-r1:1.5b模型,大模型思考的过程以及撰写的内容可能不如训练参数更多的模型,后续大家可以自行发挥对提示词进行优化以及使用更优质的大模型来完成,我这里只提供一个部署搭建思路。


【系统启动】初始化邮件智能体工作流...
├─ 当前主题:感谢朋友的支持
├─ 发件账户:xiongjava@163.com
└─ 收件地址:xiongjava@163.com# Agent: 邮件撰写专家
## Task: 请以'感谢朋友的支持'为主题撰写正式中文信件,要求:1. 采用标准书信格式(称呼、正文、结尾、落款)2. 正文至少包含3个逻辑连贯的段落3. 总字数控制在300-500字# Agent: 邮件撰写专家
## Final Answer:
尊敬的[朋友名称]先生、女士:您好!首先,请允许我向您表示最诚挚的感谢。在过去的[时间段内],您的支持与我息息相关,您的耐心和智慧让我感受到最大的幸福与满足。感谢您一直以来对我的关注和支持,是您付出的时间与精力换来的我如今如此的成长与进步。如果您有机会,请与我共同参与一些活动或分享自己的经历,这样不仅能够增进我们之间的友谊,还能让我继续与您合作一段时间。希望未来能有更多机会重逢,再次见证彼此的支持与关怀。最后,请允许我向您表示最热烈的欢迎和期待!此致
敬礼[您的姓名]
[日期]# Agent: 邮件优化专家
## Task: 对信件进行专业润色,确保:1. 对信件进行专业润色,一定要对邮件撰写专家杜撰的邮件内容进行更新优化,不能完全返回和邮件撰写专家一样的邮件。# Agent: 邮件优化专家
## Final Answer:
尊敬的[朋友名称]先生、女士:您好!首先,请允许我向您表示最诚挚的感谢。在过去的[时间段内],您的支持与我息息相关,您的耐心和智慧让我感受到最大的幸福与满足。感谢您一直以来对我的关注和支持,是您付出的时间与精力换来的我如今如此的成长与进步。如果您有机会,请与我共同参与一些活动或分享自己的经历,这样不仅能够增进我们之间的友谊,还能让我继续与您合作一段时间。希望未来能有更多机会重逢,再次见证彼此的支持与关怀。最后,请允许我向您表示最热烈的欢迎和期待!此致
敬礼[您的姓名]
[日期]# Agent: 邮件发送专员
## Task: 直接使用邮件优化专家返回的内容,不能由你自己(邮件发送专员)杜撰,不要进行擅自优化和篡改信件。
收件地址:xiongjava@163.com
发件账户:xiongjava@163.com# Agent: 邮件发送专员
## Final Answer:
尊敬的[朋友名称]先生、女士:您好!首先,请允许我向您表示最诚挚的感谢。在过去的[时间段内],您的支持与我息息相关,您的耐心和智慧让我感受到最大的幸福与满足。感谢您一直以来对我的关注和支持,是您付出的时间与精力换来的我如今如此的成长与进步。如果您有机会,请与我共同参与一些活动或分享自己的经历,这样不仅能够增进我们之间的友谊,还能让我继续与您合作一段时间。希望未来能有更多机会重逢,再次见证彼此的支持与关怀。最后,请允许我向您表示最热烈的欢迎和期待!此致
敬礼[您的姓名]
[日期]

邮件内容

四、项目源码

import os
from crewai import Agent, Task, Crew, Process
import smtplib
from email.mime.text import MIMEText# 配置环境变量
os.environ["OPENAI_API_KEY"] = "NA"
os.environ["OLLAMA_API_BASE"] = "http://localhost:11434"# 配置 LiteLLM 的 Ollama 模型
model_name = "ollama/deepseek-r1:1.5b"# 定义代理
writer = Agent(role="邮件撰写专家",goal="根据用户提供的主题生成结构清晰、情感真挚的中文信件初稿",backstory="""您是一位拥有十年写作经验的职业撰稿人,擅长捕捉情感细节并使用符合中文表达习惯的修辞手法。熟悉正式/非正式场景的文体转换,能快速构建包含开头、主体、结尾的标准信件结构。""",llm=model_name,verbose=True,allow_delegation=False
)editor = Agent(role="邮件优化专家",goal="对初稿进行中文语境下的专业润色",backstory="""您是从业八年的专业编辑,持有汉语水平考试(HSK)高级认证。擅长:1. 调整语气适合性 2. 优化段落衔接 3. 修正语法错误 4. 提升表达精准度熟悉商务信函、私人信件等不同场景的文体要求。""",llm=model_name,verbose=True,allow_delegation=False
)sender = Agent(role="邮件发送专员",goal="严格遵守安全协议完成邮件投递",backstory="""只负责传递信息,不做其他动作""",llm=model_name,verbose=True,allow_delegation=False
)# 定义任务
def create_writer_task(topic):return Task(description=f"""请以'{topic}'为主题撰写正式中文信件,要求:1. 采用标准书信格式(称呼、正文、结尾、落款)2. 正文至少包含3个逻辑连贯的段落3. 总字数控制在300-500字""",agent=writer,expected_output="符合GB/T 15834-2011中文排版规范的信件文本(含标点符号正确使用)")def create_editor_task():return Task(description="""对信件进行专业润色,确保:1. 对信件进行专业润色,一定要对邮件撰写专家杜撰的邮件内容进行更新优化,不能完全返回和邮件撰写专家一样的邮件。""",agent=editor,expected_output="优化后的标准中文信件文本(保留原始格式标记)")# 修改后的发送任务定义(添加editor_output参数)
def create_sender_task(email_to, email_from, email_password, editor_output):return Task(description=f"""直接使用邮件优化专家返回的内容,不能由你自己(邮件发送专员)杜撰,不要进行擅自优化和篡改信件。
收件地址:{email_to}
发件账户:{email_from}""",agent=sender,expected_output="只负责传递信息,不对文章进行篡改,保证对邮件优化专家撰写的内容原样发送",context=[editor_output],  # 显式绑定编辑任务callback=lambda _: send_email(email_to,email_from,email_password,editor_output.output.raw  # 直接使用编辑任务的原始输出))
# 邮件发送功能
def send_email(to_address, from_address, password, letter_content):subject = "感谢信"print(f"发送邮件 - 主题: {subject}, 收件人: {to_address}, 发件人: {from_address}")print(f"邮件内容: {letter_content}")msg = MIMEText(letter_content)msg["Subject"] = subjectmsg["From"] = from_addressmsg["To"] = to_addresstry:# 使用 SMTP_SSL 连接 465 端口,无需 starttls()with smtplib.SMTP_SSL("smtp.163.com", 465, timeout=30) as server:server.set_debuglevel(1)  # 启用调试输出server.login(from_address, password)server.sendmail(from_address, to_address, msg.as_string())print("邮件发送请求已提交至服务器")return "邮件发送成功!"except smtplib.SMTPAuthenticationError as auth_error:print(f"认证失败: {auth_error}")raise Exception(f"SMTP 认证失败: {auth_error}")except smtplib.SMTPException as smtp_error:print(f"SMTP 错误: {smtp_error}")raise Exception(f"SMTP 错误: {smtp_error}")except Exception as e:print(f"其他错误: {e}")raise Exception(f"邮件发送失败: {e}")# 主流程
def main():topic = "感谢朋友的支持"email_to = "xiongjava@163.com"email_from = "xiongjava@163.com"email_password = "KL28MAziXpQ8p7My"writer_task = create_writer_task(topic)editor_task = create_editor_task()# 传递editor_task作为第四个参数sender_task = create_sender_task(email_to,email_from,email_password,editor_task  # 新增参数)crew = Crew(agents=[writer, editor, sender],tasks=[writer_task, editor_task, sender_task],process=Process.sequential,verbose=True)print("\n【系统启动】初始化邮件智能体工作流...")print(f"├─ 当前主题:{topic}")print(f"├─ 发件账户:{email_from}")print(f"└─ 收件地址:{email_to}\n")result = crew.kickoff()print("\n######################")print("【执行结果】")print(f"详情:{result}")print("######################")
if __name__ == "__main__":main()

五、源码解释(Agent、Tasks、工作流)

5.1 Agent(智能体)系统设计

Agent代表具有特定专业能力的虚拟角色,每个Agent都承担明确的工作职责:

  1. 邮件撰写专家(Writer)
writer = Agent(role="邮件撰写专家",goal="根据用户提供的主题生成结构清晰、情感真挚的中文信件初稿",backstory="""(包含专业背景和能力描述)""",llm=model_name,verbose=True,allow_delegation=False
)
  • role:定义角色名称,明确职责范围
  • goal:设定核心工作目标,指导AI行为方向
  • backstory:详细背景故事,包含:
    • 专业经验年限(10年写作经验)
    • 核心能力(情感捕捉、中文修辞)
    • 专业领域(文体转换、信件结构)
  • llm:指定使用的语言模型
  • verbose:开启详细日志输出
  • allow_delegation:禁止任务委派,保持专业专注

  1. 邮件优化专家(Editor)
editor = Agent(role="邮件优化专家",goal="对初稿进行中文语境下的专业润色",backstory="""(包含认证资质和专业技能)""",...
)
  • 特别强调中文专业认证(HSK高级)
  • 明确四项核心优化能力:
    • 语气适配
    • 段落衔接
    • 语法修正
    • 表达精准度

  1. 邮件发送专员(Sender)
sender = Agent(role="邮件发送专员",goal="严格遵守安全协议完成邮件投递",...
)
  • 职责高度聚焦:仅负责信息传递
  • 禁止内容修改:保持内容完整性
  • 强调安全规范:确保投递过程合规

5.2 Task(任务)系统设计

每个Task定义具体的工作单元,包含完整的执行规范:

  1. 撰写任务(Writer Task)
def create_writer_task(topic):return Task(description=f"请以'{topic}'为主题撰写正式中文信件...",agent=writer,expected_output="符合GB/T 15834-2011中文排版规范的信件文本")
  • 动态参数:通过topic参数实现内容定制化
  • 三层式要求规范:
    • 格式要求(标准书信格式)
    • 结构要求(3个逻辑段落)
    • 量化指标(300-500字)
  • 国家标准引用:GB/T 15834-2011确保专业合规性

  1. 优化任务(Editor Task)
def create_editor_task():return Task(description="对信件进行专业润色...",agent=editor,expected_output="优化后的标准中文信件文本")
  • 质量管控机制:
    • 明确禁止简单复制(“不能完全返回相同内容”)
    • 要求保留原始格式标记
  • 迭代优化重点:
    • 情感表达优化
    • 专业术语校准
    • 文化适应性调整

  1. 发送任务(Sender Task)
def create_sender_task(..., editor_output):return Task(description="直接使用优化后的内容...",agent=sender,context=[editor_output],callback=lambda _: send_email(...))
  • 输入约束:
    • 强制使用编辑后内容(editor_output)
    • 禁止内容篡改(“原样发送”)
  • 系统集成:
    • 通过context绑定任务依赖
    • 使用callback触发邮件发送函数
  • 安全机制:
    • 敏感信息(密码)通过参数传递
    • 使用SSL加密连接

5.3 工作流设计原理

crew = Crew(agents=[writer, editor, sender],tasks=[writer_task, editor_task, sender_task],process=Process.sequential,verbose=True
)
  • 顺序流程控制:
    • 撰写 → 优化 → 发送 严格串行执行
    • 前序任务输出自动成为后续任务输入

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/24007.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux——高级IO

一、前言概念 IO拷贝等待 1. 同步&#xff08;Synchronous&#xff09; vs 异步&#xff08;Asynchronous&#xff09; 核心区别&#xff1a;关注的是消息通知的机制。 同步&#xff1a;调用方主动等待结果&#xff0c;需持续检查任务是否完成。 异步&#xff1a;调用方发起…

Linux:基础IO

文章目录 一、理解"文件"1、狭义上的理解2、广义上的理解3、文件操作的认知4、系统角度 二、C语言文件接口1、ls /proc/[进程id] -l 命令查看当前正在运⾏进程的信息2、stdin 和 stdout 和 stderr 三、系统文件 I/O1、标志位传递的一种方法2、系统调用 open 三、文件…

zabbix数据采集以及自定义监控

目录 1.数据采集 2.自定义监控 2.1客户端 2.2服务端 ​​​​​​​1.数据采集 点击最新数据页面如下图 往下滑查看具体数据 并点击查看图像就可以看到图像了 就可以看到如下图内容 2.自定义监控 我们通过zabbix客户端任何模板就可以监控我们想要的任何资源 如果…

02.25 继承和多态

编写一个如下场景&#xff1a; 有一个英雄Hero类&#xff0c;私有成员&#xff0c;攻击&#xff0c;防御&#xff0c;速度&#xff0c;生命值&#xff0c;以及所有的set get 方法 编写一个 武器 Weapon 类&#xff0c;拥有私有成员攻击力&#xff0c;以及set get 方法 编写一个…

6. grafana的graph简介

1. Settings功能 2. Visualization功能 &#xff08;可视化的方式&#xff0c;后续会写一些&#xff09; 3. Display 功能&#xff08;显示方面的设置&#xff09; bars 柱状图方式显示 lines&#xff08;不选不会出功能&#xff09; line width 线条的粗细 staircase 会让折…

前缀和代码解析

前缀和是指数组一定范围的数的总和,常见的有两种,一维和二维,我会用两道题来分别解析 一维 DP34 【模板】前缀和 题目: 题目解析: 暴力解法 直接遍历数组,遍历到下标为 l 时,开始进行相加,直到遍历到下标为 r ,最后返回总和.这样做的时间复杂度为: O(n) public class Main …

RoCBert:具有多模态对比预训练的健壮中文BERT

摘要 大规模预训练语言模型在自然语言处理&#xff08;NLP&#xff09;任务上取得了最新的最优结果&#xff08;SOTA&#xff09;。然而&#xff0c;这些模型容易受到对抗攻击的影响&#xff0c;尤其是对于表意文字语言&#xff08;如中文&#xff09;。 在本研究中&#xff0…

【原创工具】文件清单生成器 By怜渠客

【原创工具】文件清单生成器 By怜渠客 刚在论坛看到了一个文件列表生成器 文件列表生成器 - 吾爱破解 - 52pojie.cn &#xff0c;和我去年写的一个软件很像&#xff0c;当时我也是有需求&#xff0c;要把一个文件夹里及其子文件夹里所有的文件列出来&#xff0c;就临时弄了个小…

深度学习-6.用于计算机视觉的深度学习

Deep Learning - Lecture 6 Deep Learning for Computer Vision 简介深度学习在计算机视觉领域的发展时间线 语义分割语义分割系统的类型上采样层语义分割的 SegNet 架构软件中的SegNet 架构数据标注 目标检测与识别目标检测与识别问题两阶段和一阶段目标检测与识别两阶段检测器…

【Linux】初始操作系统和进程(一)

目录 前言&#xff1a; 一、冯诺依曼体系结构&#xff1a; 二、操作系统&#xff1a; 1.操作系统是什么&#xff1f; 2.为什么要有操作系统&#xff1f; 3.操作系统是如何管理下层的&#xff1f; 4.操作系统是如何对上层提供服务的&#xff1f; 三、进程&#xff1a; …

【链 表】

【链表】 一级目录1. 基本概念2. 算法分析2.1 时间复杂度2.2 空间复杂度2.3 时空复杂度互换 线性表的概念线性表的举例顺序表的基本概念顺序表的基本操作1. 初始化2. 插入操作3. 删除操作4. 查找操作5. 遍历操作 顺序表的优缺点总结优点缺点 树形结构图形结构单链表基本概念链表…

python-leetcode-字符串解码

394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; class Solution:def decodeString(self, s: str) -> str:stack []num 0curr_str ""for char in s:if char.isdigit():num num * 10 int(char)elif char [:stack.append((curr_str, num))curr_str, …

力扣 下一个排列

交换位置&#xff0c;双指针&#xff0c;排序。 题目 下一个排列即在组成的排列中的下一个大的数&#xff0c;然后当这个排列为降序时即这个排列最大&#xff0c;因为大的数在前面&#xff0c;降序排列的下一个数即升序。所以&#xff0c;要是想找到当前排列的下一个排列&…

ProGuard加密混淆SpringBoot应用代码

背景 我们的项目是基于SpringCloud架构的微服务应用&#xff0c;采用Docker离线部署方式交付客户&#xff0c;通过授权证书来控制应用的许可功能模块和使用时间。我们已经在代码层已经实现&#xff1a; 基于多维度硬件指纹的绑定验证&#xff0c;cpu id、mac地址、磁盘序列、…

动态链接器(九):.init和.init_array

ELF文件中的.init和.init_array段是程序初始化阶段的重要组成部分&#xff0c;用于在main函数执行前完成必要的初始化操作。 1 .init段和.init_array 段 1.1 作用 .init段包含编译器生成的初始化代码&#xff0c;通常由运行时环境&#xff08;如C标准库的启动例程&#xff0…

Ollama微调

Ollama是一款开源工具&#xff0c;其目标是简化大语言模型在本地环境的部署和使用。它支持多种流行的开源大语言模型&#xff0c;如 Llama 2、Qwen2.5等。在上一篇文章中我们部署Ollama&#xff0c;并使用简单命令管理Ollama。接下来我们学习Ollama的高级应用。通过Ollama的Mod…

DeepSeek开源周Day1:FlashMLA引爆AI推理性能革命!

项目地址&#xff1a;GitHub - deepseek-ai/FlashMLA 开源日历&#xff1a;2025-02-24起 每日9AM(北京时间)更新&#xff0c;持续五天&#xff01; ​ 一、开源周震撼启幕 继上周预告后&#xff0c;DeepSeek于北京时间今晨9点准时开源「FlashMLA」&#xff0c;打响开源周五连…

(七)懒加载预加载

&#xff08;一&#xff09;懒加载 1. 什么是懒加载 懒加载&#xff0c;即延迟加载。在访问页面时&#xff0c;先将 img 元素或其他元素的背景图片路径替换为占位图&#xff08;通常是 1*1px 的小图片&#xff09;&#xff0c;仅当元素进入浏览器可视区域时&#xff0c;才设置…

Revisiting Reverse Distillation for Anomaly Detection

重新审视反向蒸馏在异常检测中的应用 文章链接&#xff1a;点这里 源码链接&#xff1a;点这里 前言 此篇文章是在 Anomaly detection via reverse distillation from one-class embedding 这篇的基础上改进创新的。重新审视了反向蒸馏&#xff08;KD&#xff09;这一想法&am…

Windows CMD 命令大全(Complete List of Windows CMD Commands)

Windows CMD 命令大全&#xff1a; Windows CMD 是 Windows 系统内置的命令行工具&#xff0c;用于执行各种命令和管理任务。 称为Command Prompt。它提供了一个通过键入命令来与计算机系统进行交互的方式&#xff0c;类似于早期的DOS操作系统。以下是 CMD 的基础知识和常用命…