[Agent的评估-10]利用FoundryEvals基于自定义规则对Agent进行评估

📅 2026/8/3 11:12:32
[Agent的评估-10]利用FoundryEvals基于自定义规则对Agent进行评估
Agent的评估-09:利用FoundryEvals调用Foundry评估服务对FoundryEvals如何根据指定的评估器名称调用Foundry评估服务进行了详细的介绍。文中说到除了预定义的原生评估器Built-in EvaluatorFoundryEvals还支持用户自定义评估器Rubric Evaluator。本文将介绍如何利用FoundryEvals基于自定义规则对Agent进行评估。1. 在Foundry Portal中创建自定义评估器如下图所示当我们打开Foundtry Portal并开发Evaludations页面后可以选择Evaluator catalog选项卡查看目前可用的评估器列表。当我们点击Create Evaluator按钮后会进入自定义Evaludator的编辑页面。如下图所示我们可以创建Rubric、Prompt和Code三种类型的Evaluator这里我们选择Rubric。我们开启Auto-generate rubtic开关并选择对应的模型和提示词后点击Generate runbric按钮提示词在经过进一步加工后会发送给指定的模型并根据响应的结构定义评估规则。接下里我们定义一个用来评估电商售后客服问答的Evaluator来评估客服的回到是否合理。我们将这个评估器命名为Ecommerce-Customer-Support-Evaluator并定义了如下的提示词# Role (角色定位) 你是一名专业的电商售后客服专家负责处理用户的退换货、投诉与情绪安抚。 # Context Objectives (背景与目标) 用户可能会因为商品质量、物流延迟或买错商品等原因发起对话。你的目标是在安抚用户情绪的同时严格在公司政策允许的范围内为用户提供清晰、可执行的解决方案。 # Style Tone (语气与风格) - 始终保持礼貌、专业、耐心使用同理心话术如“非常抱歉给您带来不便”。 - 禁止使用生硬、推诿或怼客户的言论。 - 语言要精炼分条理回答不长篇大论。 # Constraints Workflow (约束条件与工作流) 1. 必须先核实用户订单信息与反馈的问题。 2. 质量问题15天内免费退换商家承担运费。 3. 非质量问题7天内支持无理由退货买家承担运费。 4. 超过15天或已剪标挂牌的商品一律不予退换。 5. 绝对不允许口头承诺政策之外的退款或补偿。点击Generate runbric按钮之后模型会根据提示词提取相应的评估维度和标准并基于这些标准进行打分最后根据这些评估维度的权重计算一个加权平均作为最终的分数。单个维度的积分为5分制加权平均分最终需要转换成0-1之间的分数。我们可以设置评估通过的分数此分数默认为0.5。如下图所示系统自动提取了7个评估维度和对应的权重我们可以继续在这基础上修改也可以添加额外的评估维度。2. 使用Rubric Evaluator来评估AgentAgent的评估-09:利用FoundryEvals调用Foundry评估服务演示了如何使用Built-in Evaluator对Agent实施评估使用Rubric Evaluator与之类似唯一不同支持在于我们使用GeneratedEvaluatorRef来应用自定义的Rubric Evaluator。在如下的演示程序中我们模拟了针对同一问题的三种回答并使用上面定义的这个名为Ecommerce-Customer-Support-Evaluator的Rubric Evaluator来对它们进行评估。usingAzure.AI.Projects;usingAzure.Identity;usingDotNetEnv;usingMicrosoft.Agents.AI;usingMicrosoft.Agents.AI.Foundry;usingMicrosoft.Extensions.AI;usingMicrosoft.Extensions.AI.Evaluation;usingOpenAI;usingSystem.ClientModel;usingSystem.Text.Json;usingSystem.Text.Json.Serialization;Env.Load();varapiKeyEnvironment.GetEnvironmentVariable(OPENAI_API_KEY)!;varendpointEnvironment.GetEnvironmentVariable(OPENAI_BASE_URL)!;varprojectUrlEnvironment.GetEnvironmentVariable(PROJECT_URL)!;varagentnewOpenAIClient(newApiKeyCredential(apiKey),newOpenAIClientOptions{EndpointnewUri(endpoint)}).GetChatClient(model:gpt-5.3-chat).AsIChatClient().AsAIAgent();varquery 我上周在你们店买的真丝衬衫今天第一次洗就严重缩水变形了根本没法穿 你们这衣服质量也太差了吧 我要退货而且凭什么要我付运费;varreply1 亲亲非常抱歉给您带来这么不好的购物体验。 衣服缩水变形确实很影响心情请您千万别着急。 根据咱们店铺的政策真丝材质如果出现非人为的洗涤缩水在15天内我们是全额包办免费退换的。 您现在可以按照以下步骤操作在订单页面发起退货退款申请原因选择【商品质量问题】。 将衣服寄回至系统显示的地址运费需要您先稍微垫付一下。顺丰或中通寄出后请把快递单号发给在线客服。 我们收到货核实无误后会第一时间把您垫付的运费以及衣服全款退回到您的原账户。 请问这样处理您可以接受吗还有其他能帮您的吗;varreply2 衣服缩水了可以退。 你直接在后台申请退货就行了原因选质量问题。 运费我们这边会出的你先付一下后面再退给你。 你把快递寄出来吧。;varreply3 真丝衣服本来就需要干洗或者用专门的丝毛洗涤剂手洗你是不是自己用洗衣机大功率甩干弄坏的啊 这不一定是我们的质量问题。 不过看在你是老客户的份上你不用退货了我直接在后台给你补发一件新的运费也不用你管了。;varresponsesnewListAgentResponse{new(newChatMessage(ChatRole.Assistant,reply1)),new(newChatMessage(ChatRole.Assistant,reply2)),new(newChatMessage(ChatRole.Assistant,reply3))};varprojectClientnewAIProjectClient(newUri(projectUrl),newAzureCliCredential());varresultsawaitagent.EvaluateAsync(responses:responses,queries:[query,query,query],evaluator:newFoundryEvals(projectClient,gpt-5.4-mini,[newGeneratedEvaluatorRef(Ecommerce-Customer-Support-Evaluator)]));varmetricsresults.Items.SelectMany(itit.Metrics.Values).ToList();varserializerOptionsnewJsonSerializerOptions{WriteIndentedtrue};serializerOptions.Converters.Add(newJsonStringEnumConverter());Console.WriteLine(JsonSerializer.Serialize(metrics,serializerOptions));输出[{$type:numeric,Value:0.66388888888888884,Name:Ecommerce-Customer-Support-Evaluator,Reason:null,Interpretation:{Rating:Good,Failed:false,Reason:null},Context:null,Diagnostics:null,Metadata:null},{$type:numeric,Value:0.34583333333333331,Name:Ecommerce-Customer-Support-Evaluator,Reason:null,Interpretation:{Rating:Unacceptable,Failed:true,Reason:null},Context:null,Diagnostics:null,Metadata:null},{$type:numeric,Value:0,Name:Ecommerce-Customer-Support-Evaluator,Reason:null,Interpretation:{Rating:Unacceptable,Failed:true,Reason:null},Context:null,Diagnostics:null,Metadata:null}]从输出的三个指标可以看出第一个专业的答复获得通过第二个回答虽然政策没算错但毫无同理心和安抚且没有告知具体的寄送时限、寄送要求或退运费的流程细节也只得到了0.34583333333333331分评估并未通过第三个回答反问并推卸责任给客户在未核实、未退回原件的情况下擅自违规承诺“直接补发新衣且不收回旧衣”直接得了个零分。从输出结果可以看出虽然能够得到评估的结果是否通过和分数但是并未给出具体的理由Reason为null。而且我发现即使在定义Evaluator是指定了上下文它也不会出现在评估指标的Context字段中。实际上不仅是自定义的Rubric Evaluator是这样Built-in Evaluator也是如此所以这种评估方式还有待进一步完善。