极客说|利用 Azure AI Agent Service 创建自定义 VS Code Chat participant

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

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

利用 GitHub Copilot 可以让 AI 提升开发者的编程效率, 通过不同的 Chat Participant 更可以让开发者完成不同场景的 AI 赋能,如 @workspace 不仅可以创建简单项目和 Notebook,更可以帮你维护项目代码,以及生成测试环境等。你可以通过在 GitHub Copilot Chat 中输入 /help 以了解系统自带的 Chat Participant。当然你也可以自定义属于自己工作流上的各种 Chat Participant。现在自定义 Chat Participant,可以基于 Visual Studio Code Chat Extension 进行创建,也可以直接创建 Copilot Extensions 用以支持更多的 IDE 应用。

在上篇文章中,大家可以看到如何通过 Semantic Kernel 去编排 Multi-Agents。结合 LLM 的能力,我们可以使用 Multi-Agents 完成更复杂的工作,例如在软件工程中的支撑。过去,我们借助简单的框架使用 IDE 创建项目,再一步步根据需求进行不同的代码编写。有了生成式 AI 的加持后,我们或许可以结合 LLM,根据需求快速完成代码生成工作,不仅能搭建框架,还能够完成逻辑代码的生成。

利用 Azure AI Agent Service 提供的各种 DevOps 环境中的 Agent,可以应对不同的工作流来完成 Multi-Agents 编排。如创建项目,我们需要两个 Agent 配合我们的工作,一个读取需求并生成代码的 Agent,一个保存代码的 Agent。结合 Semantic Kernel 的能力,我们可以快速地完成项目创建工作。接下来让我们围绕 Python Flask 项目创建的场景来构建一个自定义的 Visual Studio Code Chat participant。

模型的选择


为了按特定步骤解读需求并生成代码,我们需要一个具备强大推理能力的模型。o1-mini 是非常棒的选择,当然我们也推荐你尝试 Phi-4。至于代码保存功能,我们可用 gpt-4o-mini 来实现。

Multi-Agent 编排


使用 Azure AI Inference SDK 调用 GitHub Models 的 o1-mini 来创建代码生成 Agent,利用 Azure AI Foundry SDK 创建基于 Azure AI Agent Service 的代码保存 Agent。使用 Semantic Kernel 进行 Muliti-Agent 编排,按下图所示与 Plugin 进行绑定,并在 GroupChat 中设置 Agent 交互模式。

整体架构


.NET Aspire 是非常好的分布式应用框架,我们使用 .NET Aspire 来管理我们的 Agent 服务。通过集成 .NET + Semantic Kernel,我们可以非常便捷地创建 Chat Participant 自定义接口服务。可以看到,Chat Participant 可用于应对不同的开发场景,不同的 AI Agents 也可以很好地完成相关定义。必须要说的是,在 LLM / SLM 时代,我们需要更灵活地适配工作流,Semantic Kernel / AutoGen 都具备 AI Agent 的编排能力。


至于 Visual Studio Code Chat Extension,我们定义两个指令 /help 以及 /proj,来分别定义自我介绍以及项目创建的工作。 

  • /help 使用 GitHub Copilot 自带的 gpt-4o 来完成简单的介绍工作。无需绑定任何第三方 Agent。

  • /proj 用于构建项目,你需要编写需求,然后通过 fetch 调用由封装好的 Semantic Kernel 编排的多 Agent 接口。

查看完整代码https://github.com/kinfey/MultiAIAgent/tree/main/ghext

相关资源


了解 Azure AI Agent Servicehttps://learn.microsoft.com/en-us/azure/ai-services/agents/

学习 Microsoft AutoGenhttps://microsoft.github.io/autogen/dev/

学习 Microsoft Semantic Kernelhttps://github.com/microsoft/semantic-kernel

学习 Visual Studio Code Chat extensionshttps://code.visualstudio.com/api/extension-guides/chat

免费开启 Visual Studio Code GitHub Copilothttps://aka.ms/CopilotFree_R

资料推荐


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

Azure OpenAI 生成式人工智能白皮书https://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 重新定义开发人员体验https://info.microsoft.com/ww-landing-redefining-the-developer-experience.html?lcid=ZH-CN

SAP on Microsoft Cloudhttps://info.microsoft.com/GC-SAP-CNTNT-FY25-08Aug-27-SAP-on-Microsoft-Cloud-SRGCM12804_LP01-Registration---Form-in-Body.html

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

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

相关文章

在rtthread中,scons构建时,它是怎么知道是从rtconfig.h找宏定义,而不是从其他头文件找?

在rtthread源码中,每一个bsp芯片板级目录下都有一个 SConstruct scons构建脚本的入口, 在这里把rtthread tools/目录下的所有模块都添加到了系统路径中: 在tools下所有模块中,最重要的是building.py模块,在此脚本里面…

Redis基础--常用数据结构的命令及底层编码

零.前置知识 关于时间复杂度,按照以下视角看待. redis整体key的个数 -- O(N)当前key对应的value中的元素个数 -- O(N)当前命令行中key的个数 -- O(1) 一.string 1.1string类型常用命令 1.2string类型内部编码 二.Hash 哈希 2.1hash类型常用命令 2.2hash类型内部编码 2.3ha…

【leetcode100】岛屿的最大面积

1、题目描述 给你一个大小为 m x n 的二进制矩阵 grid 。 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。 岛屿的面积…

将仓库A分支同步到仓库B分支,并且同步commit提交

一、 问题 有一仓库A 和 一仓库B, 需要将仓库A分支a1所有提交同步推送到仓库B分支b1上 二、 解决 2.1、 首先需要仓库A、仓库B的权限, 2.2、将仓库A clone到本地, 进入A目录,并且切换到a1分支 cd A ## A 为A仓库clone到本地代…

Matplotlib基础01( 基本绘图函数/多图布局/图形嵌套/绘图属性)

Matplotlib基础 Matplotlib是一个用于绘制静态、动态和交互式图表的Python库,广泛应用于数据可视化领域。它是Python中最常用的绘图库之一,提供了多种功能,可以生成高质量的图表。 Matplotlib是数据分析、机器学习等领域数据可视化的重要工…

Nginx 配置 SSL(HTTPS)详解

Nginx作为一款高性能的HTTP和反向代理服务器,自然支持SSL/TLS加密通信。本文将详细介绍如何在Nginx中配置SSL,实现HTTPS的访问。 随着互联网安全性的日益重要,HTTPS协议逐渐成为网站加密通信的标配。Nginx作为一款高性能的HTTP和反向代理服务…

Mybatis篇

1,什么是Mybatis ( 1 )Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁…

文件上传全详解

前言 我们下面进行下一个漏洞——文件上传的学习。文件上传是常见漏洞之一,是Web安全必学漏洞。为探讨清楚文件上传漏洞的诸多细节,我们特以经典的upload-labs进行从入门到进阶的专项训练。 作者进行upload-labs靶场练习时,在环境配置上出了…

【centOS】搭建公司内网git环境-GitLab 社区版(GitLab CE)

1. 安装必要的依赖 以 CentOS 7 系统为例,安装必要的依赖包: sudo yum install -y curl policycoreutils openssh-server openssh-clients postfix sudo systemctl start postfix sudo systemctl enable postfix2. 添加 GitLab 仓库 curl -sS https:/…

阿里云 | DeepSeek人工智能大模型安装部署

ModelScope是阿里云人工智能大模型开源社区 ModelScope网络链接地址 https://www.modelscope.cn DeepSeek模型库网络链接地址 https://www.modelscope.cn/organization/deepseek-ai 如上所示,在阿里云人工智能大模型开源社区ModelScope中,使用阿里云…

Android13-系统服务大管家-ServiceManager进程-启动篇

文章目录 关注 ServiceMager 原因ServerManager需要掌握的知识资料参考ServiceManager 进程启动启动脚本涉及到的相关源码文件源码跟踪ServiceManager脚本启动位置ServiceManager关联脚本 Native层源码分析main.cpp流程打开驱动 initWithDriverinitmakeProcessState 构造方法op…

【华为OD-E卷 - 113 跳格子2 100分(python、java、c++、js、c)】

【华为OD-E卷 - 跳格子2 100分(python、java、c、js、c)】 题目 小明和朋友玩跳格子游戏,有 n 个连续格子组成的圆圈,每个格子有不同的分数,小朋友可以选择以任意格子起跳,但是不能跳连续的格子&#xff…

DeepSeek-R1 云环境搭建部署流程

DeepSeek横空出世,在国际AI圈备受关注,作为个人开发者,AI的应用可以有效地提高个人开发效率。除此之外,DeepSeek的思考过程、思考能力是开放的,这对我们对结果调优有很好的帮助效果。 DeepSeek是一个基于人工智能技术…

npm安装electron安装报错

npm安装electron巨慢,报错,换了镜像源也不好使,一般都是网络超时导致的。 cmd窗口执行:(打开npm的配置文件) npm config edit在配置文件中粘贴,并保存: registryhttps://regis…

x64、aarch64、arm与RISC-V64:详解四种处理器架构

x64、aarch64、arm与RISC-V64:详解四种处理器架构 x64架构aarch64架构ARM架构RISC-V64架构总结与展望在计算机科学领域,处理器架构是构建计算机系统的基石,它决定了计算机如何执行指令、管理内存和处理数据。x64、aarch64、arm与RISC-V64是当前主流的四种处理器架构,它们在…

项目顺利交付,几个关键阶段

年前离放假还有10天的时候,来了一个应急项目, 需要在放假前一天完成一个演示版本的项目,过年期间给甲方领导看。 本想的最后几天摸摸鱼,这么一来,非但摸鱼不了,还得加班。 还在虽然累,但也是…

昇思打卡营第五期(MindNLP特辑)番外:硅基流动 x 华为云DeepSeek V3 API推理MindTinyRAG

1.前言 前脚,DeepSeek面临的巨头企业官宣加入vs多国政府下场质疑的冰火两重天局势尚未平静(DeepSeek在美两重天:五大巨头接入,政府诚惶诚恐);后脚,OpenAI被逼急,凌晨亮出全新推理…

MYSQL索引与视图

一、新建数据库 mysql> create database mydb15_indexstu; mysql> use mydb15_indexstu; 二、新建表 (1)学生表Student mysql> create table Student(-> Sno int primary key auto_increment,-> Sname varchar(30) not null unique,-…

使用java代码操作rabbitMQ收发消息

SpringAMQP 将来我们开发业务功能的时候,肯定不会在控制台收发消息,而是应该基于编程的方式。由于RabbitMQ采用了AMQP协议,因此它具备跨语言的特性。任何语言只要遵循AMQP协议收发消息,都可以与RabbitMQ交互。并且RabbitMQ官方也…

介绍10个比较优秀好用的Qt相关的开源库

记录下比较好用的一些开源库 1. Qt中的日志库“log4qt” log4qt 是一个基于 Apache Log4j 设计理念的 Qt 日志记录库,它为 Qt 应用程序提供了强大而灵活的日志记录功能。Log4j 是 Java 领域广泛使用的日志框架,log4qt 借鉴了其优秀的设计思想&#xff…