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

极客说|Azure AI Agent Service 结合 AutoGen/Semantic Kernel 构建多智能体解决⽅案

作者:卢建晖 - 微软高级云技术布道师

 「极客说」 是一档专注 AI 时代开发者分享的专栏,我们邀请来自微软以及技术社区专家,带来最前沿的技术干货与实践经验。在这里,您将看到深度教程、最佳实践和创新解决方案。关注「极客说」,与行业顶尖专家一起探索科技的无限可能!

在 Microsoft Ignite 2024 上,微软发布了 Azure AI Agent Service,我们可以在 Azure AI Foundry 上通过 Azure AI Foundry SDK 及 Azure AI Agent Service 的 UI 直接构建基于智能业务的 AI Agent。

与 Azure AI Assistant API 相比,Azure AI Agent Service 可以让我们拥有更灵活的模型,如可以直接调⽤ Llama 3、Mistral 以及 Cohere 等开源⼤模型,有更好的企业功能接入(Microsoft Fabric、Microsoft SharePoint、Azure AI Search、Microsoft Bing 等),更强的企业安全机制以及数据存储⽅式。

目前 Azure AI Agent Service 处于 Public Preview 阶段,开发者可以通过 Azure AI Foundry SDK,使用 Python 或者 C# 快速构建基于 Azure AI Agent Service 的智能体;企业则基于业务拥有不同的 AI Agents。

那在⼯作流中应该如何组合这些 AI Agents 呢?我们就需要通过 AutoGen 或者 Semantic Kernel 对这三个 AI Agents 进⾏编排。

在 Azure AI Foundry SDK 创建 AI Agent 的技巧


建议使用以下模板在 Azure AI Foundry 中创建项⽬:

https://portal.azure.com/#create/Microsoft.Template

注意

1. 目前 Azure AI Agent Service 处于 Public Preview 阶段,所以我们需要在特定区域和模型中使⽤。

当然你也可以使⽤ Azure AI Foundry model catalog 中的:

  • Llama 3.1-70B-instruct

  • Mistral-large-2407

  • Cohere command R+

2. Azure AI Foundry SDK 现在⽀持 Python / C# 的版本

安 装 Python 的 Azure AI Foundry SDK

pip install azure-ai-projects
pip install azure-identity

安 装 .NET 的 Azure AI Foundry SDK

dotnet add package Azure.AI.Projects --version 1.0.0-beta.1

如果你希望了解如何结合 Azure AI Foundry SDK 创建 AI Agent ,建议参考:

https://learn.microsoft.com/en-us/azure/ai-services/agents/quickstarticon-default.png?t=O83Ahttps://learn.microsoft.com/en-us/azure/ai-services/agents/quickstart

下⾯介绍⼀个场景,如⼀个 Blog 创作场景,我们可以围绕该创作场景定义三个 AI Agent Service 服务:内容搜集的 Agent、编写技能的 Agent、以及保存内容功能的 Agent,然后通过 AutoGen / Semantic Kernel 对 AI Agent 进⾏编排。

Azure AI Agent Service 定义单智能体


Azure AI Agent Service 更多是对特定智能任务的单 Agent 进⾏定义,比如你可以定义⼀个数据挖掘的智能体,也可以定义⼀个链接 Azure Function 的智能体,更可以利⽤ Function Calling 接入第三⽅邮件发送服务的智能体等。如上述场景谈及的智能体我们可以这样定义:

🔍 内容搜集的 Agent

内容搜集的 Agent 主要通过搜索引擎来搜索 Blog 提纲的内容,从⽽为 Blog 添加更详细的内容。Azure AI Agent Service 提供了 Grounding with Bing 服务进行扩展,你可以非常简单地接入 Bing 搜索中。

具体实现:

  • Python

    https://github.com/kinfey/MultiAIAgent/blob/main/03.AzureAIAgentWithAutoGen01.ipynbicon-default.png?t=O83Ahttps://github.com/kinfey/MultiAIAgent/blob/main/03.AzureAIAgentWithAutoGen01.ipynb

  • C#

    https://github.com/kinfey/MultiAIAgent/blob/main/08.AzureAIAgentWithSK01.ipynbicon-default.png?t=O83Ahttps://github.com/kinfey/MultiAIAgent/blob/main/08.AzureAIAgentWithSK01.ipynb

📖编写技能的 Agent

编写技能的 Agent 可以直接通过 LLM 完成编写的内容。

🛠 保存内容功能的 Agent

保存内容功能的 Agent 通过 Azure AI Agent Service 的 code-interpreter 完成内容保存⼯作。

具体实现:

  • Python

    https://github.com/kinfey/MultiAIAgent/blob/main/01.AzureAIAgentCode.ipynbicon-default.png?t=O83Ahttps://github.com/kinfey/MultiAIAgent/blob/main/01.AzureAIAgentCode.ipynb

  • C#

    https://github.com/kinfey/MultiAIAgent/blob/main/05.AzureAIAgentCodedotNET.ipynbicon-default.png?t=O83Ahttps://github.com/kinfey/MultiAIAgent/blob/main/05.AzureAIAgentCodedotNET.ipynb

利⽤ AutoGen / Semantic Kernel 编排多智能体


在企业场景中,我们拥有不同的单智能体,可以协助我们完成不同的工作,同时,基于不同任务又可以组合不同的智能体来完成相关⼯作。如需要发送 Blog,我们可以将上述的三个智能体进⾏组合来完成任务。AutoGen / Semantic Kernel 都支持智能体的编排⼯作,我们可以利⽤ AutoGen 中的 Function Calling / Semantic Kerenl Plugin 进行 Azure AI Agent Service 的绑定来完成上述三个智能体的编排⼯作。

以下是具体架构:

AutoGen 的编排⽅式

示例:

https://github.com/kinfey/MultiAIAgent/blob/main/04.AzureAIAgentWithAutoGen02.ipynbicon-default.png?t=O83Ahttps://github.com/kinfey/MultiAIAgent/blob/main/04.AzureAIAgentWithAutoGen02.ipynb

Semantic Kernel 的编排⽅式

通过编排多智能体,我们可以非常轻松地完成不同需要的⼯作流,这⾥是两个不同的指令,都可以完成博客的编写⼯作。

示例:

https://github.com/kinfey/MultiAIAgent/blob/main/09.AzureAIAgentWithSK02.ipynbicon-default.png?t=O83Ahttps://github.com/kinfey/MultiAIAgent/blob/main/09.AzureAIAgentWithSK02.ipynb

多智能体的结合可以帮助我们快速地完成不同的任务。随着 LLM / SLM 能⼒的增强,也会在企业业务功能上有更好的融合。AI Agent as a Service 将会到来,结合多智能体帮助企业更轻松地构建和部署智能 AI 代理,更快迈进真正的 AI 时代。

相关资源

了解 Azure AI Agent Service icon-default.png?t=O83Ahttps://learn.microsoft.com/en-us/azure/ai-services/agents/

学习 Microsoft AutoGen icon-default.png?t=O83Ahttps://microsoft.github.io/autogen/dev/

学习 Microsoft Semantic Kernel icon-default.png?t=O83Ahttps://github.com/microsoft/semantic-kernel

资料推荐


智能 GitHub Copilot 副驾驶® 提示和技巧icon-default.png?t=O83Ahttps://info.microsoft.com/GC-DevOps-CNTNT-FY25-08Aug-23-Smart-GitHub-Copilot-Tips-and-Tricks-SRGCM12801_LP01-Registration---Form-in-Body.html

Azure OpenAI 生成式人工智能白皮书icon-default.png?t=O83Ahttps://info.microsoft.com/GC-AzureAI-CNTNT-FY25-08Aug-21-Azure-OpenAI-Generative-Artificial-Intelligence-White-Paper-SRGCM12789_LP01-Registration---Form-in-Body.html

利用 AI 和 DevOps 重新定义开发人员体验icon-default.png?t=O83Ahttps://info.microsoft.com/ww-landing-redefining-the-developer-experience.html?lcid=ZH-CN

SAP on Microsoft Cloudicon-default.png?t=O83Ahttps://info.microsoft.com/GC-SAP-CNTNT-FY25-08Aug-27-SAP-on-Microsoft-Cloud-SRGCM12804_LP01-Registration---Form-in-Body.html

相关文章:

极客说|Azure AI Agent Service 结合 AutoGen/Semantic Kernel 构建多智能体解决⽅案

作者:卢建晖 - 微软高级云技术布道师 「极客说」 是一档专注 AI 时代开发者分享的专栏,我们邀请来自微软以及技术社区专家,带来最前沿的技术干货与实践经验。在这里,您将看到深度教程、最佳实践和创新解决方案。关注「极客说」&am…...

SparrowRTOS系列:链表版本内核

前言 Sparrow RTOS是笔者之前写的一个极简性RTOS,初代版本只有400行,后面笔者又添加了消息队列、信号量、互斥锁三种IPC机制,使之成为一个较完整、堪用的内核,初代版本以简洁为主,使用数组和表作为任务挂载的抽象数据…...

Elasticsearch—索引库操作(增删查改)

Elasticsearch中Index就相当于MySQL中的数据库表 Mapping映射就类似表的结构。 因此我们想要向Elasticsearch中存储数据,必须先创建Index和Mapping 1. Mapping映射属性 Mapping是对索引库中文档的约束,常见的Mapping属性包括: type:字段数据类…...

RabbitMQ高级篇

目录 确保发送者的可靠 为什么需要确保发送者的可靠性 RabbitMQ 的发送者重连机制配置 springAMQP实现发送者确认 MQ的可靠性 为什么需要实现MQ的可靠性? 数据持久化 Lazy Queue 核心思想 总结RabbitMQ 如何保证消息的可靠性 持久化 Lazy Queue 消息…...

R4-LSTM学习笔记

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 LSTM-火灾温度预测 导入数据数据可视化设置X、y构建模型调用模型个人总结LSTM 的基本结构细胞状态(Cell State)LSTM 的优点 导入数据 i…...

Unity搭配VS Code使用

1.Unity编辑器中设置External Tools为VS Code Edit->Preferces->External Tools->Visual Studio Code 2.VS Code安装Unity插件 快捷键“CtrlShiftX”输入“Unity”点击“Install” 3.下载安装.Net 下载 .NET 8.0 (Linux、macOS 和 Windows) 下载完成后安装.Net输…...

Go Ebiten小游戏开发:井字棋

今天我将分享如何使用 Go 语言和 Ebiten 游戏库开发一个简单的井字棋游戏。Ebiten 是一个轻量级的 2D 游戏库,非常适合用来开发小型游戏。通过这个项目,我们可以学习到如何使用 Ebiten 处理输入、渲染图形以及管理游戏状态。 项目概述 井字棋是一个经典…...

嵌入式系统中的 OpenCV 与 OpenGLES 协同应用

🎬 秋野酱:《个人主页》 🔥 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 一、OpenCV 在嵌入式中的基石地位二、OpenGLES 为嵌入式图形渲染赋能三、二者协同的精妙之处四、面临的挑战与应对策略 在嵌入式开…...

秒懂虚拟化(二):服务器虚拟化、操作系统虚拟化、服务虚拟化全解析,通俗解读版

秒懂虚拟化(一):从概念到网络、存储虚拟化全解析,通俗解读版-CSDN博客这篇文章学习了虚拟化的概念、网络虚拟化和存储虚拟化,本节将继续学习服务器虚拟化、操作系统虚拟化、服务虚拟化。 1、服务器虚拟化 服务器虚拟…...

Java定时任务

在 Java 中,定时任务通常用于在特定时间或间隔执行某个操作。Java 提供了多种方式来实现定时任务,包括使用 Timer 类、ScheduledExecutorService 和 Spring 框架中的定时任务功能。下面将介绍这些常见的方法。 1. 使用 Timer 类 Timer 类可以用来安排任…...

springCloud特色知识记录(基于黑马教程2024年)

目录 Nacos 简介 Nacos 的特点 Nacos 的使用步骤可以查看黑马教程文档:‍‌​‌​⁠​⁠​​​​​‬​​​​‍‌‬⁠​​‬​​​​‍​⁠​​​⁠​​‬​⁠​​day03-微…...

Linux---shell脚本练习

要求: 1、shell 脚本写出检测 /tmp/size.log 文件如果存在显示它的内容,不存在则创建一个文件将创建时间写入。 2、写一个 shel1 脚本,实现批量添加 20个用户,用户名为user01-20,密码为user 后面跟5个随机字符。 3、编写个shel 脚本将/usr/local 日录下…...

ClickHouse-CPU、内存参数设置

常见配置 1. CPU资源 1、clickhouse服务端的配置在config.xml文件中 config.xml文件是服务端的配置,在config.xml文件中指向users.xml文件,相关的配置信息实际是在users.xml文件中的。大部分的配置信息在users.xml文件中,如果在users.xml文…...

浅谈云计算02 | 云计算模式的演进

云计算计算模式的演进 一、云计算计算模式的起源追溯1.2 个人计算机与桌面计算 二、云计算计算模式的发展阶段2.1 效用计算的出现2.2 客户机/服务器模式2.3 集群计算2.4 服务计算2.5 分布式计算2.6 网格计算 三、云计算计算模式的成熟与多元化3.1 主流云计算服务模式的确立3.1.…...

设置模块一级菜单添加遥控器功能

文章目录 问题点问题分析资源和源码分析解决方案源码分析找到对应的Activitymenifest 分析SettingsHomepageActivity 分析 问题点 MTK Android12/13 系统设置一级界面,蓝牙遥控器无法上下滑动页面。 备注:自己对设置整个模块系统其实并不熟悉&#xff…...

Blazor中Syncfusion Word组件使用方法

Blazor中Syncfusion Word组件用于在Blazor应用程序中创建、编辑、查看和打印 Word(DOC、DOCX 和 RTF)文档。 主要功能: 从头开始创建文档。打开和编辑 Word(DOC、DOCX)、RTF 和 SFDT(Syncfusion 文档文本…...

HTB:Driver[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用smbclient尝…...

微信小程序-Docker+Nginx环境配置业务域名验证文件

在实际开发或运维工作中,我们时常需要在 Nginx 部署的服务器上提供一个特定的静态文件,用于域名验证或第三方平台验证。若此时使用 Docker 容器部署了 Nginx,就需要将该验证文件正确地映射(挂载)到容器中,并…...

55_OpenResty开发入门

Nginx编程需要用到Lua语言,因此我们必须先学习Lua的基本语法。Nginx本身也是C语言开发,因此也允许基于Lua做拓展。多级缓存的实现离不开Nginx编程,而Nginx编程又离不开OpenResty。 1.OpenResty概述 OpenResty是一款基于NGINX和LuaJIT的Web平台。通过Lua扩展NGINX实现的可伸…...

Windows安装Jenkins——及修改主目录、配置简体中文、修改插件源

一、简介 Jenkinshttps://www.jenkins.io/zh/ Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。 二、Windows安装配置Jenkins2.479 2.1、J...

Jimeng LoRA惊艳效果:同一LoRA版本在不同seed下风格稳定性测评

Jimeng LoRA惊艳效果:同一LoRA版本在不同seed下风格稳定性测评 1. 项目简介 今天我们来聊聊一个很有意思的话题:同一个LoRA模型,用不同的随机种子(seed)生成图片,它的风格到底稳不稳定? 为了…...

智能家居中枢:OpenClaw桥接Qwen3.5-9B实现语音控制图片检索

智能家居中枢:OpenClaw桥接Qwen3.5-9B实现语音控制图片检索 1. 为什么需要智能家居中的图片检索 每次家庭聚会后整理照片都让我头疼。手机相册里堆积着上千张照片,当亲友们围坐在客厅想回顾某次旅行时,"找那张在雪山前跳起来的合影&qu…...

终极ChatTTS语音合成指南:3分钟搭建本地AI语音系统 [特殊字符]

终极ChatTTS语音合成指南:3分钟搭建本地AI语音系统 🎤 【免费下载链接】ChatTTS-ui 一个简单的本地网页界面,使用ChatTTS将文字合成为语音,同时支持对外提供API接口。A simple native web interface that uses ChatTTS to synthes…...

在AutoDL云平台高效部署YOLO训练:从零到一的实战避坑指南

1. 为什么选择AutoDL跑YOLO训练? 第一次接触YOLO目标检测项目时,我像大多数开发者一样被本地显卡性能劝退。直到发现AutoDL这个云GPU平台,才真正体会到什么叫"用多少付多少"的灵活。相比动辄上万的游戏显卡,AutoDL上每小…...

SpringBoot 自动配置原理与实践

核心机制解析SpringBoot 的自动配置基于条件化装配思想,通过 Conditional 系列注解实现动态加载。spring-boot-autoconfigure 模块包含大量预定义配置类,例如 DataSourceAutoConfiguration 在检测到类路径存在 HikariCP 时自动初始化数据源。关键组件包括…...

前端CSS精讲05:Grid网格布局——现代页面最强二维布局方案

文章目录 一、什么是 Grid 布局 二、开启 Grid 三、最核心:划分行和列 1. 定义列数与宽度 2. 定义行数与高度 3. 自适应等分:fr 单位(Grid 神器) 4. 自动适应内容 四、格子之间的间距 五、对齐方式(和 Flex 很像) 1. 整个网格在容器里的位置 2. 整个网格整体对齐 六、子项…...

电力电子新手必看:SPWM单极性倍频调制在Simulink中的实现与优化

电力电子新手必看:SPWM单极性倍频调制在Simulink中的实现与优化 在电力电子领域,正弦脉宽调制(SPWM)技术因其简单高效而广受欢迎。对于初学者而言,单极性倍频调制作为SPWM的一种进阶实现方式,能够显著提升输…...

07_Neo4j知识体系之向量搜索与GraphRAG实战

07_Neo4j知识体系之向量搜索与GraphRAG实战 体系 AI 增强层:向量索引、相似度搜索、GraphRAG 架构、LLM 集成、知识图谱增强问答关联能力:与企业搜索、智能问答、多跳推理、知识组织、Agent 系统密切相关适用对象:AI 应用架构师、RAG 工程师、…...

YimMenu终极指南:5分钟学会GTA5最强安全增强工具

YimMenu终极指南:5分钟学会GTA5最强安全增强工具 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu …...

全贴合工艺中Cover Lens Mura不良的关键影响因素与优化策略

1. 全贴合工艺中的Mura现象解析 第一次看到全贴合屏幕上出现发黄或发白的斑块时,我还以为是产品运输途中受了撞击。后来在产线蹲守三个月才发现,这些被称为"Mura"的光学缺陷,其实是贴合工艺中的隐形杀手。Mura这个词源自日语"…...