9. SRE的智能体解决方案与Azure SRE Agent (预览)

(p. 309)
© Unai Huete Beloki 2025
U. H. Beloki, The Art of Site Reliability Engineering (SRE) with Azure,
https://doi.org/10.1007/979-8-8688-1545-4_9

在日新月异的技术领域,Site Reliability Engineers (SRE) 在确保系统的可靠性、可扩展性和性能方面扮演着关键角色。随着系统复杂性的不断增长,对能够自主管理和优化运维各个环节的创新解决方案的需求也日益迫切。本章将深入探讨智能体解决方案领域,探索智能代理和Copilot技术如何彻底改变SRE处理任务的方式。

智能体解决方案利用人工智能的力量,创建能够以最少的人工干预执行复杂任务的对话式或自主式代理。这些代理可以在多种场景下协助SRE,从文档和设计,到开发、测试、安全、事件管理和故障排除。通过使用 Microsoft CopilotGitHub Copilot 或自定义代理等工具,SRE可以增强他们的解决方案,简化流程,并提高整体系统可靠性。

(p. 310)
本章旨在为以下关键主题提供基本理解:

  • 智能体解决方案的场景:探索智能体解决方案可以有效利用的真实场景,例如自动化常规任务或管理事件。
  • 创建自定义代理:探索创建自定义代理的各种方法,包括无代码、低代码和纯代码解决方案。了解如何利用 Copilot StudioAzure AI Foundry Agents ServiceSemantic Kernel / LangChain 等工具来构建定制化代理。
  • Azure SRE Agent (预览):探索在 Microsoft Build 2025 上宣布的早期产品版本。这将是SRE领域和Azure中新的旗舰产品。

在本章结束时,读者将全面了解智能体解决方案如何改变SRE的角色,使其工作更高效、更有效、更具影响力。重点将放在实际应用和用例上,确保读者可以在自己的环境中直接实施这些解决方案。

注意

本章中提到的所有服务都在每周更新;请参考所引用的文档以获取最新功能!

(p. 311)

智能体解决方案的场景

让我们花点时间将预定义代理(非自定义)的使用与典型的软件相关活动对齐,例如:

  • 文档和设计
  • 开发、测试和安全
  • 事件管理和故障排除

文档与设计

Site Reliability Engineering (SRE)领域,文档的创建和维护以及设计是确保系统平稳运行和可扩展性的关键任务。然而,这些任务可能耗时且容易出现人为错误。本小节探讨智能体解决方案如何彻底改变SRE处理文档和设计的方式,使这些流程更加高效、准确和精简。

智能体解决方案利用人工智能帮助SRE完成文档和设计的各个方面。智能代理可以自动化设计文档的生成,确保它们全面且遵循最佳实践。这些代理还可以通过根据系统的更改或用户的反馈自动更新文档来帮助维护文档。

(p. 312)
组织可以利用 Microsoft 和 GitHub 提供的以下预构建智能体解决方案。

(p. 313)

图 9-1. Microsoft 365 Copilot 示例:提示询问本书演示中使用的架构
(此处是图像占位符,描述:Microsoft 365 Copilot 界面,显示用户询问“What architecture was used in the book demo?”的提示)

(p. 314)
Microsoft 365 Copilot 也内嵌于许多不同的 M365 产品中,作用域仅限于产品本身包含的信息,例如在 Word、Excel 或 PowerPoint 中。

图 9-2. Azure 中的 Microsoft Copilot
(此处是图像占位符,描述:Azure Portal 界面,显示 Microsoft Copilot 侧面板)

(p. 315)

图 9-3. 使用 GitHub Copilot Chat 创建 README.md 文件
(此处是图像占位符,描述:Visual Studio Code 界面,左侧为文件列表,右侧为 GitHub Copilot Chat 面板,聊天中提示“Create a README.md file with description”并显示生成的文档内容)

(p. 316)

开发、测试与安全

现在转向软件开发、测试和安全等实践,AI 代理的集成已经彻底改变了传统实践。这些智能系统自动化重复性任务,提高代码质量,简化工作流,显著提升生产力。在开发方面,AI 代理协助生成代码、进行彻底审查并促进团队之间的无缝协作。在测试方面,它们通过自动化测试用例、提高覆盖率并适应应用程序变化,从而帮助我们采用左移测试实践(在之前章节中提及)并减少维护工作,发挥关键作用。在安全领域,AI 代理对于威胁检测、事件响应和漏洞管理不可或缺,确保对潜在风险的有力保护。AI 代理在这些领域的变革性影响凸显了它们在创建高效、可靠和适应性流程中的重要性。

让我们提及几个你可以使用的智能体解决方案:

(p. 317)

图 9-4. GitHub Copilot 内联聊天
(此处是图像占位符,描述:Visual Studio Code 编辑器,显示选中的代码,并弹出内联聊天窗口,用户输入提示)

(p. 318)

图 9-5. GitHub Copilot 编辑模式
(此处是图像占位符,描述:Visual Studio Code 编辑器,显示代码修改,使用 Copilot Edit 模式进行批量替换)

在 GitHub Copilot 体验内部,您可以使用斜杠命令执行特定指令(例如 /fix/tests/explain),使用聊天参与者 @ 来指定专门帮助您使用这些工具的角色(例如 @vscode@terminal@azure,后者需要安装扩展),或使用聊天变量 # 向提示中添加特定上下文。

(p. 319)
(例如 #selection 表示选中的代码)。许多技巧可以在 https://code.visualstudio.com/docs/copilot/copilot-chat 上找到。

  • Microsoft Copilot for Azure:之前提到过,这个位于 Azure Portal 内的代理可以帮助我们提高资源的安全性和可靠性。

这些解决方案(以及市场上可能存在的其他解决方案)可以被用来更快、更好地创建解决方案,帮助我们实施第5章中提到的左移测试和安全实践。

事件管理与故障排除

在 IT 运维的动态环境中,智能体解决方案已成为事件管理和故障排除的关键工具。这些智能代理旨在持续监控系统、检测异常,并以惊人的速度和准确性响应事件。通过利用先进的算法和机器学习,它们可以识别问题的根本原因,建议修复步骤,甚至自动化故障排除过程的某些方面。这不仅最大限度地减少了停机时间,还提高了 IT 基础设施的整体效率和可靠性。智能体解决方案在事件管理中的集成代表了一项重大进步,确保组织能够迅速有效地应对出现的挑战。

到目前为止,我们一直专注于主要提供“对话式”体验的智能体解决方案。当我们考虑事件管理时,我们看到了自主代理的巨大潜力,它们可能能够分析已识别的事件,理解它们,并使用由这些 AI 技术编排的缓解/解决技术。

(p. 320)
如果我们考虑与事件管理和故障排除场景相关的智能体解决方案(对话式/自主式),你可以找到以下内容:

  • GitHub Copilot:可能对应用程序代码相关的问题或基础设施相关的挑战有用,通过帮助我们使用 Bicep / Terraform 等定义更好的 IaC 模板。
  • Azure 中的 Microsoft Copilot:可以是另一个很好的解决方案,帮助您进行故障排除并了解我们环境的状态。
  • Azure SRE Agent (预览):本章后面将介绍的另一项服务。基于从我们的解决方案收集的信息,如指标和日志(第6章中介绍),该服务可以指导您完成故障排除步骤(只读模式)、在您同意的情况下运行修复操作(审核模式),甚至自动为您修复环境(自主模式)。
  • Microsoft 365 Copilot:该解决方案可以帮助我们处理 Outlook 或 Teams 等工具中的活跃对话,并与存储在 SharePoint 和/或 OneDrive 等其他服务中的信息进行关联。本章后面将展示它如何也可以扩展到其他一些服务,例如,从存储在 GitHub / Azure DevOps / Jira 等工具中的工单/项目中获取上下文。
  • 自定义 Copilot:这个主题也将在本章后面介绍。可以通过多种方式创建自定义 Copilot,使其适应您偏好的渠道,提供您自己的自定义数据作为上下文,并赋予执行操作/工具等能力。

Chapter 9 SRE 的智能体解决方案与 Azure SRE Agent (预览)

近年来,使用生成式 AI 模型的对话式智能体变得非常流行。但另一方面,自主智能体(autonomous agents)正被讨论为下一阶段的革命。通过利用自动化流程(由某些事件触发,例如警报或定期分析),这些解决方案将能够为我们编排行动。这类解决方案可以改变我们实施事件管理流程的方式。例如:

对于自定义智能体,你可以利用 Microsoft Copilot Studio 等解决方案以无代码方式创建自主智能体,或者采用更偏向专业代码的方法,使用 Semantic KernelLangchain 创建智能体解决方案。更多内容请参见本章下一节。


创建自定义智能体

创建自定义智能体提供了一种灵活的方法,可满足不同技能水平的需求,从无代码/低代码到专业代码开发。无代码和低代码平台使用户无需具备大量编程知识即可设计智能智能体,通过直观的拖放界面自动化工作流并集成 AI 能力。对于拥有更高级编码技能的用户,专业代码开发提供了强大的选项,可以构建针对特定需求的复杂智能体。这种灵活性确保组织能够利用智能体解决方案来提升生产力、简化运营并推动创新,无论其技术专长如何。

在本节中,我们将总结可用于设计自定义智能体或定制预构建智能体的不同方法。


扩展 Microsoft 365 Copilot

如前所述,Microsoft 365 Copilot 是一款 AI 驱动工具,旨在利用 Microsoft Graph 的强大功能,基于存储在 Microsoft 365 应用程序(如 Outlook、Teams、OneDrive 或 SharePoint)中的数据来提升生产力。

M365 Copilot 在访问电子邮件、聊天、文件等时遵循用户的数据访问和安全权限,提供摘要、预测、回忆、翻译和内容生成等功能。

任何用户(无代码/低代码/专业代码)都可以通过创建“智能体”来定制 Microsoft 365 Copilot,这些智能体将包含自定义知识、操作/工具以及客户特定的指令。

Microsoft 365 Copilot 连接器(原名 Microsoft Graph 连接器)

Microsoft 365 Copilot 连接器(原名 Microsoft Graph 连接器)使您能够将非结构化的业务线数据集成到 Microsoft Graph 中。这允许 Microsoft 365 Copilot 分析您的整个企业内容。通过连接器引入的内容会被添加到 Microsoft Graph,从而促进对用户在 Microsoft 365 Copilot 中的提示进行语义理解。然而,连接器并不仅限于 Microsoft 365 Copilot。由 Microsoft 365 Copilot 连接器驱动的内容还能增强其他 Microsoft 365 智能体验,如 Microsoft SearchContext IQ 以及 Microsoft 365 Copilot 应用程序。

您可以使用 Microsoft 365 Copilot 连接器库 连接到现有的 Microsoft 和合作伙伴解决方案,也可以创建自己的连接器。

面向 Microsoft 365 Copilot 的声明性智能体

声明性智能体允许您自定义 Microsoft 365 Copilot 以满足业务需求。通过构建这些智能体,您可以为场景提供特定的指令、工具和知识。它们运行在与 Microsoft 365 Copilot 相同的基础模型和 AI 服务上,并使用与 Microsoft 365 Copilot 引擎相同的 UI。这有助于优化协作、提升生产力并简化组织中的工作流。

图 9-6:Microsoft 365 Copilot 中的声明性智能体

创建声明性智能体有很多种方式:专业代码选项如 Microsoft 365 Agents Toolkit(原 Teams Toolkit)(https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/build-declarative-agents),以及低代码/无代码选项如 Copilot Studio (https://learn.microsoft.com/en-us/microsoft-copilot-studio/microsoft-copilot-extend-copilot-extensions?context=/microsoft-365-copilot/extensibility/context) 和 Copilot Studio agent builder (https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/copilot-studio-agent-builder)。

创建声明性智能体时,您可以赋予智能体以下能力(来源:https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/add-agent-capabilities):

  • 代码解释器:能够根据请求运行模型可能决定使用的自定义代码。
  • 图像生成器:能够根据请求创建图像。
  • Microsoft 365 Copilot 连接器(原名 Microsoft Graph 连接器):使用连接器数据作为基础数据。
  • SharePoint/OneDrive:使用这些服务中存储的信息作为基础数据。
  • 网络搜索:将选定的网站添加为基础数据。
  • 以及更多功能

除了这些能力,您还可以通过提供工具/操作(根据智能体创建解决方案的不同,称呼可能有所不同)来扩展您的声明性智能体。此功能将使您的智能体能够执行:REST API 请求、使用特定的提示模板、使用 Power Platform 连接器(如 Power Automate 流程中提供的连接器,https://learn.microsoft.com/en-us/connectors/connector-reference/connector-reference-powerapps-connectors)以及 MCP 服务器集成(更多选项每周更新!)(https://learn.microsoft.com/en-gb/microsoft-copilot-studio/advanced-plugin-actions)。

所有提到的可扩展性选项都可以帮助您创建适应自身项目文档来源的智能体,并帮助您与自己的系统进行交互。您可以创建一个声明性智能体,它使用来自特定 SharePoint/OneDrive 文档的数据作为基础,通过 Microsoft Copilot 连接器了解现有的事件工单,并且能够通过使用预构建/自定义的 Power App 连接器https://learn.microsoft.com/en-us/connectors/connector-reference/connector-reference-powerapps-connectors)针对您的工单系统创建新事件。

[演示] 使用 Microsoft Copilot 连接器扩展 Microsoft 365 Copilot

作为本节的演示,假设您的团队使用 Azure DevOps 作为跟踪产品新功能以及记录所有事件/错误的解决方案,并利用 Azure Boards 规划服务。

在这种情况下,您可以通过使用 Microsoft Copilot 连接器(https://learn.microsoft.com/en-us/microsoftsearch/azure-devops-connector)添加存储在 Azure Boards 服务中的信息,来扩展 Microsoft 365 Copilot 可访问的基础数据。

前面的链接提到了为工作项设置 Azure DevOps 连接器所需遵循的所有步骤。从 Microsoft 365 管理中心 ➤ 搜索与智能(https://admin.microsoft.com/)中,您将创建并添加一个新连接,以索引从目标中获得的数据。

图 9-7:Microsoft Copilot 连接器

图 9-8:Microsoft 365 Copilot 中的 Azure DevOps 工作项


自定义引擎智能体

上一节的重点是利用现有的智能体解决方案(如 Microsoft 365 Copilot)并对其进行扩展。这是一种较为简单但仍然强大的方法,为您的智能体设计提供了熟悉的 UI。

在接下来的部分中,我们将讨论使用 Microsoft 技术创建自己的自定义引擎智能体(custom engine agents)的各种可选方案——这些智能体将让您对内部流程的编排拥有更多控制权。

让我们将可用的解决方案分为以下几类:无代码、低代码和专业代码解决方案。

无代码解决方案

Microsoft Copilot Studio (https://learn.microsoft.com/en-us/microsoft-copilot-studio/fundamentals-what-is-copilot-studio) 是 Microsoft 提供的主要无代码自定义引擎创建解决方案。如前所述,它也可用于扩展 Microsoft 365 Copilot 服务。

它帮助定义智能体应能处理的不同对话(称为主题,topics)(见图 9-9)。您还可以向智能体添加不同的知识源和操作(类似于声明性智能体)。

图 9-9:Copilot Studio 中的主题

图 9-10:生成式 AI 设置

它还提供了一种非常简单的方法,将智能体连接到人们通常与之交互的渠道:Teams/M365 Copilot、Facebook、网站、Slack 等。

低代码解决方案

之前的选项侧重于 Microsoft 365 生态系统。现在让我们转向 Azure 云,评估一些可用的选项。

Azure AI Foundry 提供了一个全面的企业 AI 操作、模型创建和应用程序开发平台(支持低代码和专业代码两种方法)。该基础架构将生产级基础设施与用户友好界面相结合,使组织能够可靠且高效地构建和管理 AI 应用程序。

作为 Azure AI Foundry 服务的一部分,您可以部署模型,不仅来自 Azure OpenAI 提供商,还包括许多其他提供商,如 Microsoft、Meta、Mistral 等。您可以找到许多不同的聊天补全模型,还有用于音频生成、图像创建或帮助您向量化信息的模型(嵌入模型)。

让我们暂停一下,讨论开发智能体时考虑的两个常见特性:

数据源 – 您的数据作为上下文

函数调用 (Function Calling)

Azure AI Foundry 中提供的许多模型都基于数十亿或数万亿参数进行训练,使它们能够回答难以想象的问题……但在考虑企业解决方案时,您的数据是关键。RAG(检索增强生成)架构定义了一种为模型提供数据作为上下文的方式。它通过将必要信息索引到 Azure AI SearchAzure Cosmos DB 等服务中来实现这一点。存储在这些索引中的数据可以使用嵌入模型进行向量化。向量搜索彻底改变了我们查找信息的方式。我们不再依赖关键词搜索,而是能够比较向量(问题向量 + 索引数据向量)来查找数据集中语义上最接近的数据。RAG 架构通常采用这种方法,将您的自定义数据提供给模型,以获取基于您的信息的定制答案。以下视频展示了嵌入的工作原理以及向量搜索如何改进我们的智能体解决方案:

https://www.youtube.com/watch?v=Xwx1DJ0OqCk

第9章 SRE的智能体解决方案与Azure SRE Agent(预览)

函数调用

第二个特性——函数调用——赋予模型判断是否应触发/使用所提供的函数来更好地响应用户请求的能力。例如,如果用户提问“开一个标题为X、严重级别为B的故障,并指派给Y”,这个请求并不是典型的问答或信息搜索场景;用户期望智能体执行一个动作。在这种情况下,我们会向模型发送请求(用户请求 + 可用函数),模型则会回复应该使用哪个函数。我们的应用负责执行该动作。你的应用应负责处理生成式AI与函数之间的编排。

但是,有没有更简单的方法来定义这些编排呢?本节讨论的是低代码解决方案,因此我们重点介绍其中一种。

Azure AI Foundry 门户中的 Azure AI Agent 服务

图9-11. Azure AI Foundry 门户中的 Azure AI Agent 服务

一旦创建了智能体,你就可以通过使用Azure AI Foundry SDK或编排框架(如Semantic Kernel,下一节将详细介绍)从许多不同的应用程序中使用它。

如果你的智能体希望通过Microsoft Teams、Slack、Facebook等渠道访问,则需要使用Azure上提供的解决方案——Azure Bot Service快速入门)。该解决方案可以与上述渠道进行双向通信。你的应用程序需要使用新的Microsoft 365 Agents SDK(先前称为Bot Framework SDK)来与Azure Bot Service交互。以下GitHub仓库展示了示例解决方案:azureai-travel-agent-python


纯代码解决方案

如前一节所述,你需要使用诸如Azure AI Foundry之类的服务来部署所需的模型。但相较于使用AI Agent服务,组织可能更倾向于创建并托管自己的智能体应用。

市面上有许多选项可用于创建完全自定义的智能体解决方案。这里我们讨论在使用微软服务栈时最典型的几种:

  • 模型特定提供商的SDK:例如,使用OpenAI库在你的应用中与OpenAI模型交互。它们的优点是通常能更早获得最新功能,但灵活性较低(更换模型提供商需要修改大部分应用代码!)。
  • Azure AI Foundry SDKSDK概述):Azure AI模型推理允许你将应用与此服务中托管的模型集成。它带来一定的灵活性,因为更换模型提供商无需大量修改代码。
  • Semantic Kernel概述):个人首选。它不仅提供模型提供商抽象,还是一个开源开发工具包,允许你创建AI智能体和流程,将你偏好的模型与你自己的自定义操作(可由Semantic Kernel自动调用)连接并编排在一起。Semantic Kernel智能体框架还允许你创建多智能体架构。

上述SDK让你能够随心所欲地创建应用程序,并将其托管在你偏好的目标上(本地或云端)。与Azure AI Foundry Agent服务类似,如果你希望让对话智能体通过大多数渠道(Teams、Slack、Facebook等)可被发现,你将需要利用Azure Bot Service(结合Microsoft 365 Agents SDK)。以下GitHub仓库展示了参考解决方案:gen-ai-bot-in-a-box


Azure SRE Agent(预览)

在2025年5月的Microsoft Build大会上,微软宣布发布新的Azure SRE Agent概述)服务。我们努力争取到了早期版本的产品访问权限,以便将其收录到本书的第二版中。

NOTE

本章提到的所有服务都在每周更新;请查阅引用的文档以获取最新功能!

Azure SRE Agent利用生成式AI模型的力量来:

  • 帮助你理解Azure日志/指标中收集的信息(如第6章所示)
  • 识别可能的故障
  • 基于从微软文档中收集的知识(和最佳实践)提供解决方案

Azure SRE Agent可以帮助你提高故障管理效率,优化运行中的解决方案,并减少手动管理环境的辛劳。它可以帮助你完成日常活动,例如:

  • 每日报告
    图9-12. Azure SRE Agent 每日报告

  • 根本原因分析与自动缓解

  • 基础设施最佳实践

  • 以及更多

Azure SRE Agent可以在三种不同的运行模式下执行:

  • 只读模式:提供指令,但不能采取行动。
  • 审核模式:如果你在工具中批准,则可以采取行动。
  • 自主模式:智能体可以自动对托管资源执行写操作(创建/更新)。

图9-13. 创建 Azure SRE Agent

图9-14. Azure SRE Agent 线程

图9-15. 资源地图

让我们看看该服务实际运行的效果。


[演示] Azure SRE Agent

图9-16. 演示 Azure 架构

NOTE

请记住,完整的解决方案演示和本章提到的链接可以在以下位置找到:https://github.com/unaihuete93/SRE_with_Azure_v2

图9-17. 损坏的网站

图9-18. Azure SRE Agent 线程(只读模式)

图9-19. Azure Container App 日志

现在,如果我们以审核模式部署Azure SRE Agent,让我们看看它的表现。我们使用相同的资源组设置创建智能体,选择新的审核模式,并关联GitHub仓库(在资源映射中)以获得更精确的结果。

图9-20. 线程开始

图9-21. 请求修复服务

正如你在上述线程中看到的,智能体找到了问题的解决方案,并提供了修复所需的脚本,我们只需点击 运行 即可(因为是审核模式,操作需要先获得批准)。脚本执行后,网站恢复正常运行。


总结

在本章中,你了解了智能体解决方案的主题,以及如何创建它们来支持你组织的日常活动,如开发、文档或故障管理。

本章首先讨论了在哪些场景下可以使用预定义的智能体服务(如Microsoft 365 Copilot或GitHub Copilot)来提升SRE及其他组织成员需要执行的日常活动的效率。

本章的第二部分重点展示了多种根据你的数据和需求自定义智能体的不同方法,从最简单的可扩展性选项到最具可定制性的智能体解决方案。

最后,本章向你介绍了新的Azure SRE Agent(预览)服务的早期版本及其为全球SRE带来的潜力。