.NET+AI | MEAI | 提示工程(11) 📅 2026/7/26 9:39:19 目录一句话简介 核心价值 提示词基础框架四大组件详解 场景设定铁路票务意图识别 七大核心技巧演练技巧一明确任务边界 技巧二结构化输出 技巧三少样本学习Few-Shot技巧四角色设定Role Prompting技巧五添加上下文Context Enrichment技巧六拒答策略Refusal Strategy️技巧七思维链引导Chain-of-Thought⚙️ MEAI 生成参数配置参数速查表 提示优化闭环 总结上一篇一句话简介本文以铁路票务意图识别为例演示如何使用 Microsoft.Extensions.AI (MEAI) 构建高质量提示词掌握 7 大核心技巧和参数调优方法快速构建企业级 AI 应用。 核心价值✅结构化提示掌握指令、上下文、输入、输出四大组件✅7 大核心技巧从基础到进阶系统提升提示词质量✅MEAI 集成使用 ChatOptions 和 ChatMessage 构建企业级管道✅参数调优掌握 Temperature、TopP 等关键参数的最佳实践✅提示优化闭环建立持续改进机制 提示词基础框架提示词由四大基础组件构成缺一不可四大组件详解组件作用示例指令明确任务目标识别用户的铁路票务意图上下文提供背景知识可选意图包括订票、退票、咨询输入描述数据结构用户请求帮我订一张票输出约束响应格式以 JSON 格式返回 {intention, reason}为什么需要结构化✅ 减少歧义让模型理解任务边界✅ 提升准确性帮助模型做出正确判断✅ 便于解析让业务系统能够直接消费✅ 可维护性强便于团队协作和迭代 场景设定铁路票务意图识别业务需求识别用户属于以下哪一类意图路由到对应的业务模块订票意图购买车票退票意图退订车票❓咨询意图咨询信息或无法明确判断测试用例帮我订一张从北京到上海的票后天下午出发。 七大核心技巧演练技巧一明确任务边界 问题基础提示容易导致模型输出冗余文字或答非所问。解决明确告诉模型做什么和不做什么。基线提示仅包含任务和输入var baselinePrompt $ 请帮我识别用户意图。 用户请求是{userRequest} 意图 ;技巧二结构化输出 问题自然语言描述不便于程序解析。解决通过 JSON 结构约束回复减少闲聊让下游服务直接解析字段。var structuredPrompt $$ 你需要识别用户的铁路票务意图选项仅包括 * 订票意图 * 退票意图 * 咨询意图 请严格以如下 JSON 格式返回结果 { intention: 订票意图/退票意图/咨询意图, reason: 简要说明识别理由 } 用户请求{{userRequest}} ;优势✅ 输出格式统一便于自动化处理✅ 减少模型的冗余输出✅ 提高业务系统的集成效率技巧三少样本学习Few-Shot问题模型对边界情况判断不准确。解决加入 1-2 个高质量示例显著提升准确率。var fewShotPrompt $$ 你需要识别用户的铁路票务意图选项仅包括 * 订票意图 * 退票意图 * 咨询意图 example 用户请求我的票能退吗 意图 { intention: 退票意图, reason: 用户询问是否可以退票 } /example example 用户请求请问高铁可以带宠物吗 意图 { intention: 咨询意图, reason: 用户咨询乘车规则非订退票 } /example 用户请求{{userRequest}} ;原理通过示例让模型学习任务的模式类似于通过例子教学。技巧四角色设定Role Prompting问题模型缺乏明确的身份定位输出风格不统一。解决通过 System 消息注入角色定义提前锁定模型身份与口吻。MEAI 实现方式使用ChatMessage列表第一条设置为ChatRole.System。var rolePrompt 你是一名铁路票务意图识别专家负责在前端界面与后端服务之间准确判断用户意图。 仅从以下选项中选择订票意图、退票意图、咨询意图。 请严格以如下 JSON 格式返回结果 { intention: 订票意图/退票意图/咨询意图, reason: 简要说明识别理由 } 若无法明确判断则选择 咨询意图理由写 输入不够明确默认为咨询。 ; var messages new ListChatMessage { new(ChatRole.System, rolePrompt), new(ChatRole.User, userRequest) };优势✅ 让模型扮演专业角色输出更专业✅ 减少多轮对话中的风格漂移✅ 提高输出的一致性和可预测性技巧五添加上下文Context Enrichment问题模型缺乏必要的业务上下文如当前时间、用户信息等。解决系统级上下文携带时间、用户信息等关键字段。var contextualPrompt 你是一名铁路票务意图识别专家负责准确判断用户意图。 context 系统当前时间2025年10月29日 18:00 用户Idshengjie 用户等级VIP会员 /context 请严格以如下 JSON 格式返回结果 { intention: 订票意图/退票意图/咨询意图, reason: 简要说明识别理由 } ;应用场景 时间相关任务如明天后天需要知道当前时间 用户个性化如根据用户历史行为调整回复 业务规则如特定时段的票务政策技巧六拒答策略Refusal Strategy️问题输入信息不足或超出范围时模型可能一本正经地胡说。解决明确拒答与默认策略在缺乏信息时选择最安全的响应。var refusalPrompt 你是一名铁路票务意图识别专家负责判断用户是否在处理车票相关需求。 若无法判断为订票或退票请返回咨询意图并在 reason 中注明 输入不涉及票务默认为咨询。 当完全没有票务相关线索时请回复 { intention: 咨询意图, reason: 输入不够明确默认为咨询 } ;拒答策略的价值✅ 降低幻觉风险✅ 提供回退机制✅ 提高系统鲁棒性技巧七思维链引导Chain-of-Thought问题对于多步骤推理任务模型可能直接给出结论缺乏推理过程。解决给出思考流程提示帮助模型逐条检查条件并给出稳健答案。var reasoningPrompt 你是一名铁路票务意图识别专家负责分析用户文本并输出结构化结果。 当接收到输入时请按以下步骤思考 1. 关键词扫描检查是否包含订票相关词如买票预订订。 2. 退票检测若无订票相关词再查找退票取消退。 3. 咨询判断若前两步未命中判断是否属于咨询或闲聊。 4. 置信度评估若不确定选择咨询意图并在 reason 中说明原因。 5. 格式输出严格按 JSON 模板返回结果。 请严格以如下 JSON 格式返回结果 { intention: 订票意图/退票意图/咨询意图, reason: 简要说明识别理由和推理过程 } ;思维链的价值 提高复杂任务的准确性 让推理过程可解释 便于调试和优化⚙️ MEAI 生成参数配置在 MEAI 中通过ChatOptions统一管理生成参数var chatOptions new ChatOptions { Temperature 0.1f, // 低随机性保证稳定输出 TopP 0.9f, // 核采样 MaxOutputTokens 120 // 限制输出长度 }; var response await chatClient.GetResponseAsync(userPrompt, chatOptions);参数速查表任务类型TemperatureTopPMaxTokens说明意图识别/分类0.1-0.30.9100-200需要稳定输出内容生成/创作0.7-1.00.9500-2000需要创造性摘要/提取0.3-0.50.8200-500平衡准确性代码生成0.2-0.40.95500-1500语法准确对话/闲聊0.6-0.90.9100-300自然流畅关键参数说明Temperature控制随机性0确定性2高随机性TopP核采样概率0.9保留90%概率质量MaxOutputTokens限制输出长度节省token成本 提示优化闭环当基础提示稳定后可借助模型本身迭代提示形成生成 → 评估 → 再生成的循环。让模型充当提示工程师var improvementRequest $ 你是一名提示工程师专注于提升提示词的清晰度和执行效果。 请分析以下提示词并给出优化建议。 请按以下格式输出 1. **优化后提示**给出改进后的完整提示词 2. **改进说明**说明做了哪些改进以及为什么 3. **进一步建议**列出 2-3 条可选的进一步优化思路 待优化的原始提示如下 {原始提示} ; 总结通过本文我们系统学习了使用 MEAI 进行提示工程的核心技巧✅四大基础组件指令、上下文、输入、输出缺一不可✅七大核心技巧从明确边界到思维链逐步提升提示词质量✅MEAI 集成使用 ChatOptions 和 ChatMessage 构建企业级管道✅参数调优Temperature、TopP、MaxOutputTokens 的最佳实践✅优化闭环建立持续改进机制让模型自我优化提示词核心价值 提升输出质量稳定、准确的输出 便于系统集成JSON 格式便于业务系统解析 降低幻觉风险拒答策略和思维链减少错误判断 提高可维护性清晰的提示结构便于团队协作https://github.com/mzhongl524/meai_dotnet_for_begenner下一篇引入地址