HarmonyOS NEXT AI 智能生活助手:Prompt 工程最佳实践

📅 2026/8/6 5:04:28
HarmonyOS NEXT AI 智能生活助手:Prompt 工程最佳实践
HarmonyOS NEXT AI 智能生活助手Prompt 工程最佳实践图1Prompt 工程优化流程示意图前言在 [第 08 篇]中我们实现了 Prompt 管理系统。本文将总结Prompt 工程的最佳实践帮助写出高质量的 AI Prompt。Prompt Engineering是 AI 应用开发的核心技能。一个好的 Prompt 能让模型输出质量提升数倍。本文将系统性地介绍 Prompt 设计原则、优化策略和常见陷阱。一、Prompt 设计原则1.1 六大核心原则原则说明反面案例改进后具体明确详细描述任务目标和约束“帮我翻译”“将以下英文技术文档翻译为中文保持专业术语准确”角色设定给 AI 一个专业角色“总结这篇文章”“你是一位资深科技编辑请总结这篇文章的核心观点”格式指定明确输出格式不做约束“以Markdown格式输出用 ### 分隔每个章节”示例引导给出输入输出示例不给示例“示例输入’Hello’ → 输出’你好’”边界定义说明不能做什么不做限制“不要添加额外解释只输出翻译结果”分步指导复杂任务分解步骤一步到位“第一步理解原文第二步提取关键信息第三步生成摘要”exportclassPromptBuilder{staticbuildWithPrinciples(task:string,principles:string[]):string{letprompt你是一个专业的AI助手。请完成以下任务\n\n;prompt## 任务描述\n${task}\n\n;prompt## 执行原则\n;principles.forEach((p,i){prompt${i1}.${p}\n;});prompt\n## 输出要求\n;prompt- 准确确保信息准确无误\n;prompt- 简洁优先使用简短的语言\n;prompt- 结构化使用Markdown格式组织内容\n;returnprompt;}}1.2 好 Prompt VS 坏 Prompt 对比❌ 坏 Prompt 写一首诗 ✅ 好 Prompt 你是一位中国古典诗人。请以秋雨为主题创作一首五言绝句。 要求 - 使用五言绝句格式每句5字共4句 - 押平水韵下平十一尤韵 - 表达思念之情 - 不需要解释只输出诗歌 ❌ 坏 Prompt 这段代码有什么问题 ✅ 好 Prompt 你是一位资深 TypeScript 开发者。请审查以下代码 function process(data: any) { return data.value 1; } 请从以下维度分析 1. 类型安全性 2. 边界情况 3. 性能问题 4. 重构建议 使用JSON格式输出。关键洞察好 Prompt 的共性——明确角色、具体任务、约束条件、输出格式。这四个要素缺一不可。二、高级 Prompt 技术2.1 Chain-of-Thought (CoT)exportclassCoTPromptBuilder{// 构建思维链 PromptstaticbuildWithCoT(task:string,steps:string[]):string{return请按以下步骤逐步思考并回答问题 任务${task}思考步骤${steps.map((s,i)${i1}.${s}).join(\n)}请先展示你的思考过程然后给出最终答案。;}// 示例数学问题staticmathProblem():string{returnthis.buildWithCoT(小明有5个苹果小红给了小明3个小明又给了小华2个小明还剩几个,[计算小明原本的苹果数量,加上小红给的苹果,减去给小华的苹果,得出最终数量]);}}2.2 Few-shot LearningexportclassFewShotBuilder{staticbuildWithExamples(systemPrompt:string,examples:Example[],input:string):string{letpromptsystemPrompt\n\n;prompt## 示例\n\n;examples.forEach((ex,i){prompt### 示例${i1}\n;prompt**输入**${ex.input}\n;prompt**输出**${ex.output}\n\n;});prompt## 实际输入\n${input}\n\n;prompt## 请输出\n;returnprompt;}}interfaceExample{input:string;output:string;}技术适用场景效果提升Zero-shot简单任务基线Few-shot格式控制20-30%Chain-of-Thought推理任务30-50%Role Prompting专业性任务15-25%三、Prompt 优化策略3.1 迭代优化流程exportclassPromptOptimizer{// 分析 Prompt 质量问题staticanalyze(prompt:string):AnalysisResult{constissues:string[][];if(prompt.length50)issues.push(Prompt 太短缺乏上下文);if(!prompt.includes(输出)!prompt.includes(格式))issues.push(缺少输出格式说明);if(prompt.includes(可能)||prompt.includes(大概))issues.push(使用模糊词汇应更明确);if(prompt.split(\n).length5)issues.push(缺乏结构化建议分段);return{score:Math.max(0,100-issues.length*20),issues,suggestions:this.generateSuggestions(issues)};}// 自动优化 Promptstaticoptimize(prompt:string):string{letoptimizedprompt;// 添加角色设定if(!prompt.includes(你是一个)!prompt.includes(你是)){optimized你是一位专业的AI助手。\n\n${optimized};}// 添加输出格式if(!prompt.includes(JSON)!prompt.includes(格式)){optimized\n\n请用结构化的格式输出。;}returnoptimized;}privatestaticgenerateSuggestions(issues:string[]):string[]{returnissues.map(issue{constsuggestions:Recordstring,string{Prompt 太短:添加任务描述、角色设定和输出格式说明,缺少输出格式说明:指定输出格式如JSON/Markdown/表格,使用模糊词汇:用明确具体的描述替换模糊词汇,缺乏结构化:使用分段、标题、列表结构化Prompt};returnsuggestions[issue]||参考最佳实践优化;});}}interfaceAnalysisResult{score:number;issues:string[];suggestions:string[];}3.2 常见 Prompt 模式exportconstPROMPT_PATTERNS{// 分类任务classification:请将以下内容分类到合适的类别中。 类别列表{{categories}} 分类规则 - 每项内容只能分到一个类别 - 如果匹配多个选择最相关的一个 - 如果无法分类标记为其他 输出格式JSON数组 [{ content: ..., category: ... }],// 提取任务extraction:请从以下文本中提取指定信息。 需要提取的信息 {{fields}} 输出格式JSON对象,// 比较任务comparison:请比较以下两个{{subject}}的异同。 比较维度 {{dimensions}} 输出格式表格形式包含维度、{{item1}}、{{item2}}、说明四列,// 重写任务rewriting:请重写以下文本使其更加{{style}}。 重写规则 1. 保留原文核心信息 2. 使用{{tone}}的语气 3. 输出长度控制在{{maxLength}}字以内};四、Prompt 评估体系4.1 质量评分卡评估维度权重评分标准自检清晰度25%任务描述是否明确无歧义✅完整性20%是否包含角色、输入、输出、约束✅结构化20%是否有分段、标题、列表✅示例质量15%示例是否准确反映预期输出✅边界定义10%是否说明了不能做什么✅长度适中10%是否简洁不冗余✅4.2 A/B 测试框架exportclassPromptABTestManager{privateexperiments:Mapstring,ExperimentConfignewMap();register(name:string,promptA:string,promptB:string):void{this.experiments.set(name,{name,promptA,promptB,results:{a:{total:0,success:0},b:{total:0,success:0}}});}asyncevaluate(name:string,input:string,expectedOutput:string):Promisevoid{constexpthis.experiments.get(name);if(!exp)return;// 测试 Prompt AconstresultAawaitthis.testPrompt(exp.promptA,input,expectedOutput);exp.results.a.total;if(resultA)exp.results.a.success;// 测试 Prompt BconstresultBawaitthis.testPrompt(exp.promptB,input,expectedOutput);exp.results.b.total;if(resultB)exp.results.b.success;// 输出对比hilog.info(0x0000,ABTest,Prompt A 成功率:${exp.results.a.success}/${exp.results.a.total});hilog.info(0x0000,ABTest,Prompt B 成功率:${exp.results.b.success}/${exp.results.b.total});}privateasynctestPrompt(prompt:string,input:string,expected:string):Promiseboolean{try{constresponseawaitAIService.getInstance().chat([{role:system,content:prompt},{role:user,content:input}]);returnresponse.content.includes(expected);}catch{returnfalse;}}}interfaceExperimentConfig{name:string;promptA:string;promptB:string;results:{a:{total:number;success:number};b:{total:number;success:number};};}五、常见陷阱与规避5.1 常见错误类型Prompt 注入攻击用户输入中包含恶意指令覆盖系统级 Prompt上下文窗口溢出历史消息过长导致关键信息被挤出上下文幻觉问题AI 生成看似合理但实际不存在的信息过度拟合示例Few-shot 示例过少或质量差导致输出格式不稳定边界情况遗漏未定义异常处理逻辑AI 在边界情况下表现不稳定5.2 安全与稳健性策略exportclassPromptSecurity{// 输入消毒移除潜在的注入指令staticsanitizeInput(input:string):string{returninput.replace(/system:|user:|assistant:/gi,).replace(/\{\{.*?\}\}/g,).slice(0,2000);// 限制输入长度}// 上下文截断保留最近且最相关的对话statictruncateHistory(messages:ChatMessage[],maxChars:number8000):ChatMessage[]{lettotal0;constresult:ChatMessage[][];for(letimessages.length-1;i0;i--){totalmessages[i].content.length;if(totalmaxChars)break;result.unshift(messages[i]);}returnresult;}// 输出验证检查关键信息是否存在staticvalidateOutput(output:string,requiredKeywords:string[]):boolean{returnrequiredKeywords.every(kwoutput.includes(kw));}}interfaceChatMessage{role:string;content:string;}陷阱风险等级检测方法规避策略Prompt 注入高正则匹配关键字输入消毒 权限隔离上下文溢出中统计 Token 数滑动窗口 摘要压缩幻觉输出中事实核查 API添加不确定则回答不知道约束格式失控低JSON 解析验证Few-shot 格式约束安全优先生产环境的 Prompt 必须经过注入测试和边界测试确保输出可控。六、Git 提交gitadd.gitcommit-mfeat(prompt): Prompt 工程最佳实践 - 六大核心设计原则 - Chain-of-Thought / Few-shot 高级技术 - 迭代优化流程与自动优化器 - A/B 测试评估框架 - 常见 Prompt 模式库 Co-Authored-By: AtomCode (deepseek-v4-flash) noreplyatomgit.comgittag v0.1.8七、Prompt 工程在 HarmonyOS AI 中的应用7.1 本系列 Prompt 设计回顾功能模块核心 Prompt 技巧预期效果AI 翻译助手角色设定 格式指定 边界定义术语准确、格式统一AI 每日花语角色设定 示例引导 结构化输出内容专业、格式规范AI 文章总结分步指导 边界定义 JSON 格式结构清晰、信息完整AI 代码解释角色设定 多维度约束 示例引导分析深入、建议可行AI 待办生成具体明确 结构化输出 分类规则提取准确、分类合理AI 日程规划具体明确 时间约束 冲突规则时间准确、冲突可检测图片上传识别多模态输入 开放式描述理解全面、描述生动模型参数配置场景预设 参数联动切换便捷、效果可预期7.2 持续优化建议建立 Prompt 版本库使用 Git 管理 Prompt 变更记录每次调整的原因和效果收集用户反馈对输出质量进行评分识别低分场景并针对性优化定期 A/B 测试同一功能维护 2-3 个 Prompt 版本对比实际效果跟踪模型更新新模型发布时重新评估现有 Prompt 的兼容性文档化最佳实践将验证有效的模式沉淀为团队规范工程化思维Prompt 工程不是一次性工作而是需要持续迭代的产品能力。总结本文总结了Prompt 工程的最佳实践。核心要点六大原则具体明确、角色设定、格式指定、示例引导、边界定义、分步指导高级技术CoT 思维链、Few-shot 示例学习迭代优化分析 → 优化 → 测试 → 评估的闭环A/B 测试量化对比不同 Prompt 的效果质量评分卡从清晰度、完整性等六个维度评估如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源Prompt Engineering GuideOpenAI Prompt 最佳实践Chain-of-Thought PaperFew-shot LearningHarmonyOS ArkTSAnthropic Prompt 文档DeepLearning.AI Prompt 课程Prompt 安全最佳实践