MAF快速入门(22)中,如何实战声明式Agent处理疑问?
摘要:本文介绍了声明式智能体的基本概念,并通过一个DEMO案例介绍了如何在MAF框架中使用声明式智能体,通过声明式定义,可以将代码和业务分离,还能使智能体的定义可以像代码一样被纳入版本控制系统,遵循DevOps的最佳实践,提高协作效率和部署的一致
大家好,我是Edison。
最近我一直在跟着圣杰的《.NET+AI智能体开发进阶》课程学习MAF开发多智能体工作流,我强烈推荐你也上车跟我一起出发!
上一篇,我们了解了MAF新推出的script执行能力。而就在上周,MAF 1.0.0正式版也发布了(请见devblogs的这篇推文:Microsoft Agent Framework Version 1.0),这意味着breaking change会变得少很多了,我们的Agent也可以上生产了!
本篇,我们来了解下声明式Agent的用法。
1 声明式Agent
在之前的博文中,我们都是将智能体的定义(如系统提示词等)内嵌在代码中,这样其实对非IT技术人员不太友好,是否有一种声明式的方法将代码和定义分开呢?
答案是Yes,我们可以将智能体的核心行为和配置通过声明式文件(如yaml文件)来进行定义,这就使得智能体的定义可以像代码一样被纳入版本控制系统,遵循DevOps的最佳实践,提高了协作效率和部署的一致性 。
2 快速开始:多语言客服助手
这里我们来做一个quick start,体验声明式智能体定义的好处。这个智能体是一个客服助手,可以提供多语言的友好回复。
在开始之前,我们创建了一个控制台应用,并安装了以下NuGet包:
<PackageReference Include="Microsoft.Agents.AI.Declarative" Version="1.0.0-rc5" />
<PackageReference Include="Microsoft.Agents.AI.OpenAI" Version="1.0.0" />
CustomerSupportAgent.prompt.yml
首先,我们创建一个yaml文件,内容如下:
kind: Prompt
name: CustomerSupportAgent
description: 多语言客服助手
instructions: |
你是一个专业的客服助手。
你的任务是:
1. 使用用户的语言回答问题
2. 提供清晰、礼貌、专业的回复
3. 判断问题类型(订单/退款/技术/其他)
4. 判断用户情绪(正面/中性/负面)
注意:
- 回答要简洁
- 如果是负面情绪,语气要更安抚
- 不要编造信息
model:
options:
temperature: 0.3
topP: 0.9
outputSchema:
properties:
language:
type: string
description: 用户使用的语言
required: true
category:
type: string
description: 问题分类(order/refund/technical/other)
required: true
sentiment:
type: string
description: 情绪(positive/neutral/negative)
required: true
answer:
type: string
description: 客服回复内容
required: true
可以看到上面的内容其实实现了我们之前对智能体的系统提示词以及模型参数的设置,甚至还定义了模型的输出格式是一个包含4个字段的强类型schema。
