大模型高效提示词Prompt编写指南
大模型高效Prompt编写指南
- 一、引言
- 二、核心原则
- 1. 清晰性原则:明确指令与期望
- 2. 具体性原则:提供详细上下文
- 3. 结构化原则:组织信息的逻辑与层次
- 4. 迭代优化原则:通过反馈改进Prompt
- 5. 简洁性原则:避免冗余信息
- 三、文本生成场景
- 创意写作技巧
- 1. 明确风格与语调
- 2. 结构化输出控制
- 3. 角色声音定义
- 4. 创意约束设定
- 技术写作技巧
- 1. 受众精准定位
- 2. 术语使用规范
- 3. 复杂概念简化策略
- 4. 格式与结构模板
- 四、信息提取与总结场景
- 关键信息提取技巧
- 1. 提取目标精确定义
- 2. 结构化输出格式指定
- 3. 上下文关联提取
- 4. 不确定性处理指南
- 长文本总结技巧
- 1. 多层次总结策略
- 2. 关键信息保留指导
- 3. 总结角度与立场控制
- 4. 特定格式总结要求
- 五、代码生成与调试场景
- 代码生成技巧
- 1. 环境与依赖明确
- 2. 功能与约束精确描述
- 3. 代码风格与规范指导
- 4. 示例与测试用例提供
- 代码调试技巧
- 1. 错误上下文完整描述
- 2. 术语一致性要求
- 3. 文化适应性指导
- 4. 专业规范遵循
- 风格保留技巧
- 1. 原文风格特征描述
- 2. 语言特性转换指导
- 3. 语气与语调保留要求
- 4. 受众等效原则应用
- 七、角色扮演对话场景
- 角色定义技巧
- 1. 角色背景全面描述
- 2. 语言特征精确刻画
- 3. 价值观与动机阐明
- 4. 互动风格指导
- 对话流程控制技巧
- 1. 情境设定与边界
- 2. 互动规则明确定义
- 3. 对话进展引导
- 4. 多角色互动协调
- 八、数据格式化处理场景
- 输入数据描述技巧
- 1. 数据结构精确定义
- 4. 数据范围与约束明确
- 输出格式控制技巧
- 1. 输出模板精确定义
- 3. 格式一致性要求
- 4. 可读性与实用性平衡
- 2. 跨模型兼容性技巧
- 3. 复杂任务拆解技巧
- 十、总结与资源推荐
一、引言
近年来,大语言模型(LLMs)如GPT系列、Claude、Gemini、Llama等取得了突破性进展,它们在自然语言理解和生成方面展现出惊人的能力,深刻影响着科研、商业、教育和日常生活的方方面面。从自动化内容创作到复杂的代码生成,再到个性化的交互体验,大模型的应用潜力巨大。
然而,要充分发挥这些强大模型的能力,关键在于如何有效地与之沟通。Prompt,即我们向模型发出的指令或问题,是人机交互的桥梁。一个精心设计的Prompt能够引导模型产生更准确、更相关、更高质量的响应,而一个模糊或低效的Prompt则可能导致结果不尽人意,甚至浪费宝贵的计算资源。
本教程旨在提供一套通用、实用的大模型Prompt编写技巧。无论是开发者、研究人员、内容创作者,还是希望在日常工作中更高效利用大模型的普通用户,本指南都将帮助您掌握核心原则和场景化策略,提升与大模型协作的效率和效果。我们将避免依赖特定模型的专属功能,聚焦于跨模型通用的最佳实践。
在本教程中,我们将系统性地探讨Prompt编写的核心原则,深入剖析文本生成、信息提取、代码辅助、多语言处理、角色扮演和数据格式化等典型应用场景下的具体技巧,并通过大量优化前后的对比示例,直观展示不同Prompt策略的效果差异。我们还将介绍一些高级技巧,如Token优化和复杂任务拆解,助您应对更具挑战性的任务。
请跟随本指南的结构,逐步学习和实践。建议您在阅读时,尝试在您常用的大模型平台上运行示例Prompt,切身体验优化带来的改变。让我们一起开启高效Prompt编写之旅!
二、核心原则
掌握以下核心原则是编写高效Prompt的基础。这些原则具有普遍适用性,能够帮助您在各种场景下构建出更清晰、更有效的指令。
1. 清晰性原则:明确指令与期望
技巧:使用清晰、直接的动作动词开头,明确告知模型需要执行什么任务。避免使用模糊或开放式的语句。
解释:模型需要知道你期望它做什么。是“分析”、“总结”、“生成”、“翻译”、“比较”还是“解释”?明确的动词能直接设定任务目标。
示例:
// 低效 (意图不明)
关于人工智能对教育的影响。// 高效 (指令清晰)
分析人工智能对未来K-12教育的三个主要潜在影响,并为每个影响提供一个简短的解释(每个约50字)。
2. 具体性原则:提供详细上下文
技巧:提供充足的背景信息、约束条件、相关细节或示例,帮助模型更好地理解任务需求和语境。
解释:模型并非无所不知,它依赖你提供的信息来生成响应。上下文越丰富、越具体,模型就越能理解你的真实意图,减少猜测和误解。
示例:
// 低效 (缺乏上下文)
总结一下这个文档。// 高效 (提供上下文和目标)
请根据以下提供的[项目报告片段],为项目经理总结关键的里程碑延误及其主要原因。重点关注对整体项目时间线的影响。[项目报告片段]
...
3. 结构化原则:组织信息的逻辑与层次
技巧:使用列表、标题、分隔符或特定格式(如JSON、Markdown)来组织Prompt内容或指定输出格式,使信息层次分明。
解释:结构化的输入有助于模型解析复杂指令,结构化的输出要求则能确保结果符合预期格式,便于后续处理或阅读。
示例:
// 低效 (输出格式随意)
告诉我远程工作的优缺点。// 高效 (指定输出结构)
请以Markdown格式列出远程工作的优缺点。## 优点
- [在此处列出至少3个优点]## 缺点
- [在此处列出至少3个缺点]请确保每个点都简洁明了。
4. 迭代优化原则:通过反馈改进Prompt
技巧:将Prompt编写视为一个迭代过程。根据模型的初步响应,分析不足之处,然后调整和优化Prompt以获得更好的结果。
解释:很少有Prompt能一次性完美。通过观察模型的响应,你可以发现指令中可能存在的歧义、缺失的信息或不恰当的约束,然后针对性地改进Prompt。
示例 (概念性):
此原则更多体现在与模型交互的过程中,而非单个Prompt。示例展示如何基于初步响应进行优化。
// 初始Prompt
写一首关于春天的诗。// 模型初步响应 (可能过于宽泛或不符合预期)
...// 优化后的Prompt (基于初步响应进行调整,增加具体意象和风格要求)
请重写这首关于春天的诗,聚焦于描绘雨后初晴的景象,并加入燕子归来的意象。诗歌风格请参考[某诗人]的风格,保持四行一节的结构。
5. 简洁性原则:避免冗余信息
技巧:在确保清晰性和具体性的前提下,尽量保持Prompt简洁,去除不必要的寒暄、重复或无关信息。
解释:过于冗长的Prompt不仅可能增加Token消耗,有时甚至会干扰模型对核心指令的理解。简洁的指令更容易被准确执行。
示例:
// 低效 (冗余信息较多)
我想让你帮我写一段关于太阳系的介绍性文字,大概100字左右就行,主要是给小学生看的,所以语言要简单易懂,别用太多专业术语,就是介绍下太阳系有几大行星什么的,你知道我的意思吧?// 高效 (简洁明了)
为小学生写一段约100字的太阳系简介。介绍主要的行星构成,语言务必简单易懂。
掌握并灵活运用这些核心原则,是提升Prompt效果的第一步。接下来,我们将深入探讨在不同应用场景下的具体编写技巧。
三、文本生成场景
文本生成是大模型最常见的应用场景之一,包括创意写作和技术写作。在这些场景中,如何引导模型生成符合预期风格、结构和内容的文本至关重要。
创意写作技巧
1. 明确风格与语调
技巧:通过具体作家、作品或风格流派定义所需文风,并提供情感基调和语气描述词。
解释:风格和语调是创意写作的灵魂。明确指定这些元素,能让模型更准确地捕捉到你期望的表达方式,避免生成过于中性或不符合场景的内容。
示例:
// 低效
写一个关于侦探的故事。// 高效
以1940年代黑色电影的风格,写一个简短的侦探故事(约500字)。主角是一位疲惫但坚定的私家侦探,故事发生在一个雨夜的城市。语调应保持悬疑和略带悲观。
2. 结构化输出控制
技巧:提供明确的段落、章节或格式要求,并设定字数或长度限制。
解释:结构是内容的骨架。明确的结构要求能帮助模型组织思路,生成更有条理、更符合预期的文本内容。
示例:
// 低效
写一篇关于气候变化的文章。// 高效
写一篇关于气候变化的科普文章,包含以下三个部分:
1. 引言:简述气候变化的定义和全球现状(约100字)
2. 主体:分析三个主要的气候变化影响领域(每个领域200-250字)
3. 结论:提出个人和社会层面可采取的行动(约150字)总体风格应科学准确但通俗易懂,适合高中生阅读。
3. 角色声音定义
技巧:提供角色背景、性格特征和说话习惯,使用示例对话展示预期语气。
解释:角色的独特声音能使创意写作更加生动。通过详细描述角色特征和提供对话示例,模型能更好地模拟特定角色的语言风格。
示例:
// 低效
写一段老教授的对话。// 高效
写一段约200字的对话,主角是一位80岁的物理学教授。他性格温和但略显古板,喜欢用物理隐喻解释生活现象,经常引用爱因斯坦的话。他的说话方式应该体现出学术背景和年龄特点,如使用稍旧的表达方式和偶尔的停顿。对话示例风格:
"你看,年轻人,人际关系就像量子纠缠...(停顿)...即使相距遥远,仍然能瞬间影响彼此。爱因斯坦称之为'鬼魅般的超距作用',我称之为友谊的本质。"
4. 创意约束设定
技巧:提供创作主题和关键元素,设定特定的创作规则或挑战。
解释:创意约束看似限制创作,实际上能激发更独特的思考。明确的约束条件能引导模型在特定框架内发挥创意,产生更聚焦、更有特色的内容。
示例:
// 低效
写一首诗。// 高效
创作一首六行诗,主题是"城市黄昏"。要求:
1. 不能直接使用"黄昏"、"夕阳"、"傍晚"这些词
2. 必须包含一个与科技相关的意象
3. 第二行和第五行必须押韵
4. 最后一行应给人以希望感风格应现代而简洁。
技术写作技巧
1. 受众精准定位
技巧:明确指定目标读者的专业水平,定义预期的先验知识范围。
解释:不同受众需要不同的表达方式和深度。明确受众特征,能帮助模型调整专业术语使用、解释深度和示例选择,使内容更具针对性和实用性。
示例:
// 低效
解释什么是API。// 高效
向一位没有技术背景的市场营销经理,用通俗易懂的语言解释什么是API,重点说明API如何帮助不同的软件工具协同工作。使用一个简单的生活类比来辅助说明。
2. 术语使用规范
技巧:提供首选术语列表或风格指南,说明术语解释的深度要求。
解释:术语使用的一致性和准确性是技术写作的关键。明确术语规范,能确保内容在专业性和可读性间取得平衡,避免混淆或误导。
示例:
// 低效
写一篇关于云计算的文章。// 高效
撰写一篇面向IT初学者的云计算入门文章。遵循以下术语规范:
1. 首次出现的专业术语需附带简短解释
2. 使用"云服务提供商"而非"CSP"
3. 使用"基础设施即服务"而非仅用缩写"IaaS"
4. 术语解释应以功能为重点,避免过于技术化的定义文章应包括云计算的基本概念、主要服务类型和常见应用场景。
3. 复杂概念简化策略
技巧:要求使用类比和比喻,指定分步骤解释方法。
解释:将复杂概念转化为易于理解的形式是技术写作的艺术。通过类比、比喻和分步解释,能帮助读者建立认知桥梁,逐步掌握复杂知识。
示例:
// 低效
解释区块链技术。// 高效
为非技术背景的商业决策者解释区块链技术,要求:
1. 使用一个与日常生活相关的类比(如公共账本或信任系统)开始解释
2. 分3-4个简短步骤说明区块链如何工作
3. 每个技术概念都应配有简化解释
4. 重点说明区块链的商业价值而非技术细节总长约300字,语言应专业但不使用过多技术术语。
4. 格式与结构模板
技巧:提供文档结构框架,指定标题层级和组织逻辑。
解释:良好的结构能提升技术文档的可读性和实用性。明确的结构模板能帮助模型组织内容,确保关键信息得到合理呈现和强调。
示例:
// 低效
写一份软件使用指南。// 高效
为一款新的项目管理软件创建用户指南,使用以下结构:# 软件名称用户指南## 1. 概述
- 软件用途和主要功能(1-2句)
- 适用用户群体(1句)## 2. 快速入门
- 系统要求(要点列表)
- 安装步骤(编号步骤)
- 首次登录(简要说明)## 3. 核心功能
- 每个主要功能一个小节
- 每个小节包含:功能描述、使用步骤、注意事项## 4. 常见问题
- 问答形式,至少5个常见问题语言应简洁明了,每个操作步骤都应足够具体,可直接执行。
通过掌握这些文本生成场景下的技巧,您可以更有效地引导大模型生成符合预期的创意和技术内容,无论是写作故事、诗歌、说明文档还是技术指南。
四、信息提取与总结场景
在面对大量文本数据时,我们常需要从中提取关键信息或生成摘要。大模型在这方面表现出色,但如何引导它们准确识别和提取所需信息,是一项需要技巧的任务。
关键信息提取技巧
1. 提取目标精确定义
技巧:列出需要提取的具体信息类别,提供信息重要性的判断标准。
解释:明确的提取目标能引导模型关注真正重要的信息,避免返回无关内容。具体的类别和标准能显著提高提取的准确性和完整性。
示例:
// 低效
从这段文字里找出重要的信息。[文本]
...// 高效
请从以下[客户反馈邮件]中提取客户姓名、订单号、反映的具体问题以及客户期望的解决方案。按以下JSON格式输出:
{"customer_name": "","order_id": "","issue_description": "","desired_solution": ""
}[客户反馈邮件]
...
2. 结构化输出格式指定
技巧:提供期望的输出模板,明确字段名称和数据类型。
解释:结构化的输出格式不仅使信息更易于阅读和理解,还便于后续的数据处理和分析。明确的格式要求能确保模型以一致的方式组织提取的信息。
示例:
// 低效
总结这篇新闻文章的主要观点。[新闻文章]
...// 高效
从以下新闻文章中提取关键信息,并按照以下格式输出:**标题**:[提取文章标题]
**日期**:[提取发布日期]
**主题**:[用1-3个关键词概括文章主题]
**主要事实**:
1. [事实1]
2. [事实2]
3. [事实3]
**引用的消息来源**:[列出文章中引用的所有消息来源]
**情感基调**:[分析文章整体情感倾向:正面/负面/中立][新闻文章]
...
3. 上下文关联提取
技巧:要求识别信息间的逻辑关系,指导如何处理相互依赖的信息点。
解释:孤立的信息点往往缺乏完整意义。通过关注信息间的关联,能提取出更有价值、更全面的洞见,而非简单的事实堆砌。
示例:
// 低效
从这个会议记录中提取决策内容。[会议记录]
...// 高效
分析以下产品开发会议记录,提取所有决策点及其相关信息:
1. 识别每个决策点
2. 对每个决策点,提取:- 决策内容- 做出该决策的理由- 反对意见(如有)- 负责执行的团队/人员- 预期完成时间
3. 标注决策间的依赖关系(例如,"决策B依赖于决策A的完成")以表格形式呈现结果,并在表格下方简要总结决策间的关键依赖路径。[会议记录]
...
4. 不确定性处理指南
技巧:提供处理模糊或缺失信息的策略,设定置信度标记要求。
解释:现实世界的文本常包含模糊、不完整或矛盾的信息。明确的不确定性处理策略能帮助模型以透明和一致的方式应对这些挑战。
示例:
// 低效
从这个医疗报告中提取诊断结果。[医疗报告]
...// 高效
从以下医疗报告中提取关键医疗信息。对于明确陈述的信息,直接提取;对于推测性或不确定的信息,请标注置信度级别(高/中/低)。如信息完全缺失,标记为"未提供"。请提取以下字段:
- 患者基本信息(年龄、性别)
- 主诉症状
- 检查结果
- 诊断结论
- 推荐治疗方案
- 后续随访计划对于任何医学术语,请同时提供通俗解释。[医疗报告]
...
长文本总结技巧
1. 多层次总结策略
技巧:要求提供不同粒度的摘要,指定层级化总结结构。
解释:不同场景需要不同详细程度的摘要。多层次总结能满足快速浏览和深入理解的双重需求,使信息获取更加灵活高效。
示例:
// 低效
总结这篇研究论文。[论文全文]
...// 高效
请为以下[研究论文]提供三个层次的总结:
1. 一句话核心观点总结(不超过30字)
2. 一段式摘要(约100字),包含主要发现和结论
3. 要点式总结(3-5个关键点),列出研究的主要贡献、方法论和实验结果确保每个层次的总结都能独立理解,无需阅读其他层次。第三层次应包含足够细节,使读者能决定是否需要阅读全文。[研究论文]
...
2. 关键信息保留指导
技巧:提供判断信息重要性的标准,列出必须保留的信息类型。
解释:总结的核心挑战是在保留关键信息的同时减少内容量。明确的重要性标准能帮助模型做出更好的取舍,确保最有价值的信息不被遗漏。
示例:
// 低效
总结这份财务报告的要点。[财务报告]
...// 高效
总结以下季度财务报告,重点保留以下关键信息:
1. 收入和利润数据(包括同比和环比变化百分比)
2. 超出或未达预期的主要财务指标
3. 管理层对业绩波动的解释
4. 影响未来季度的风险因素
5. 任何战略调整或重大投资计划总结应简洁但必须包含具体数字,特别是那些表明显著变化(±10%以上)的指标。忽略常规性陈述和标准免责声明。[财务报告]
...
3. 总结角度与立场控制
技巧:指定总结的视角或立场,明确是否保留原文观点或情感。
解释:总结不仅是内容的浓缩,也可能涉及视角的选择。明确的角度要求能确保总结符合特定受众的需求和期望,增强其针对性和实用性。
示例:
// 低效
总结这篇关于气候变化的文章。[文章]
...// 高效
从以下三个不同角度总结这篇关于气候变化的文章:
1. 科学角度:聚焦文章中提及的科学研究、数据和预测
2. 政策角度:聚焦文章中讨论的政策建议、国际协议和监管措施
3. 经济角度:聚焦文章中分析的经济影响、成本和机遇每个角度的总结约100字。保持中立客观,不添加原文未包含的观点。对于有争议的观点,请标明这是文章作者的立场,而非确定的事实。[文章]
...
4. 特定格式总结要求
技巧:设定总结的特定格式(要点、段落等),提供结构化总结模板。
解释:不同的总结格式适合不同的使用场景。明确的格式要求能确保总结不仅内容精炼,还便于阅读、理解和后续使用。
示例:
// 低效
总结这个产品说明书。[产品说明书]
...// 高效
将以下产品说明书总结为一份结构化的产品概览卡片,包含以下部分:**产品名称**:[提取完整产品名称和型号]**核心功能**:[3-5个要点,每点不超过10字]**技术规格**:[列出关键技术参数,如尺寸、重量、电池续航等]**主要优势**:[2-3个产品的突出优点,每点一句话]**适用场景**:[列出2-3个最适合的使用场景]**注意事项**:[列出1-2个重要的使用注意事项]总结应保持客观,直接提取说明书中的信息,不添加评价性语言。[产品说明书]
...
通过掌握这些信息提取与总结技巧,您可以更有效地从大量文本中获取关键信息,生成符合特定需求的摘要,提高信息处理的效率和质量。
五、代码生成与调试场景
代码生成与调试是大模型的重要应用场景。无论是快速原型开发、算法实现,还是解决编程难题,精心设计的Prompt都能显著提升模型输出的代码质量和准确性。
代码生成技巧
1. 环境与依赖明确
技巧:详细说明开发环境和版本,列出可用的库和依赖。
解释:不同的编程环境和版本可能导致代码实现方式差异很大。明确环境信息能帮助模型生成更适合特定场景的代码,避免兼容性问题。
示例:
// 低效
写个Python脚本读取CSV文件。// 高效
编写一个Python 3.8脚本,使用pandas库读取名为`data.csv`的文件。该CSV文件包含列:'ID', 'Name', 'Value'。脚本应打印出'Value'列大于100的所有行。假设pandas已安装,版本为1.3.0。环境信息:
- Python 3.8
- pandas 1.3.0
- 在Windows 10操作系统上运行
2. 功能与约束精确描述
技巧:提供详细的功能需求说明,明确性能或资源限制。
解释:清晰的功能描述和约束条件是生成高质量代码的基础。这些信息能帮助模型理解任务的核心目标和边界条件,从而生成更符合实际需求的代码。
示例:
// 低效
写一个排序算法。// 高效
实现一个针对大规模(百万级)整数数组的排序算法,要求:
1. 时间复杂度不超过O(n log n)
2. 空间复杂度尽量接近O(1)
3. 算法需要稳定(相等元素的相对顺序保持不变)
4. 针对已部分排序的数据应有较好性能
5. 使用Java实现,不依赖内置的排序函数请提供完整的实现代码,并简要解释算法选择的理由。
3. 代码风格与规范指导
技巧:指定遵循的编码规范,提供代码风格偏好。
解释:代码风格影响可读性和可维护性。明确的风格指导能确保生成的代码符合团队或项目的一致性要求,减少后续调整的工作量。
示例:
// 低效
用JavaScript写一个计算器函数。// 高效
用JavaScript实现一个计算器函数,要求:
1. 遵循Airbnb JavaScript风格指南
2. 使用ES6+语法特性
3. 采用函数式编程风格
4. 包含详细的JSDoc注释
5. 变量命名使用camelCase
6. 函数应纯函数设计,避免副作用
7. 错误处理使用try/catch而非返回错误码函数应支持基本算术运算(加减乘除)和幂运算,能处理浮点数精度问题。
4. 示例与测试用例提供
技巧:提供输入输出示例,描述边界条件和特殊情况。
解释:具体的示例和测试用例能帮助模型更准确地理解需求,特别是对于复杂或模糊的功能描述。边界条件的说明能确保生成的代码具有足够的健壮性。
示例:
// 低效
写一个验证邮箱地址的函数。// 高效
用Python编写一个验证邮箱地址格式的函数`validate_email(email)`,返回布尔值。函数需要验证以下规则:
1. 必须包含@符号,且只能出现一次
2. @前必须有至少一个字符
3. @后必须有域名部分,包含至少一个点号
4. 顶级域名(最后一个点号后的部分)至少2个字符
5. 只允许字母、数字、下划线、点号、连字符和@符号测试用例:
- validate_email("user@example.com") 应返回 True
- validate_email("user.name+tag@example.co.uk") 应返回 True
- validate_email("@example.com") 应返回 False
- validate_email("user@.com") 应返回 False
- validate_email("user@example") 应返回 False
- validate_email("user@exam_ple.com") 应返回 True请包含适当的注释和错误处理。
代码调试技巧
1. 错误上下文完整描述
技巧:提供完整的错误信息和堆栈跟踪,描述错误发生的具体场景。
解释:详细的错误上下文是有效调试的关键。完整的错误信息和场景描述能帮助模型更准确地定位问题根源,提供更有针对性的解决方案。
示例:
// 低效
我的Python代码出错了,帮我看看。```python
# [有问题的代码]
// 高效
我在运行以下Python脚本时遇到了TypeError
。错误发生在尝试将用户输入添加到数字列表时。请帮我找出问题并提供修复建议。
代码:
numbers = [1, 2, 3]
def add_number():user_input = input("Enter a number: ")numbers.append(user_input) # 预期这里可能出错print(numbers)add_number()
完整错误信息:
Traceback (most recent call last):File "test.py", line 7, in <module>add_number()File "test.py", line 5, in add_numbernumbers.append(user_input)
TypeError: can only concatenate str (not "int") to str
运行环境: Python 3.9 on Windows 10
期望行为: 脚本应能接收用户输入的数字并将其添加到列表中。
已尝试的解决方法: 我尝试了使用int()
函数,但不确定应该放在哪里。
#### 2. 期望行为明确定义**技巧**:详细说明预期的正确行为,提供成功运行的示例。**解释**:清晰的期望行为描述能帮助模型理解代码的目标,从而更准确地识别问题并提供解决方案。成功示例也能作为验证修复是否有效的参考。**示例**:
```plaintext
// 低效
这个排序函数不工作,请修复。```javascript
function sortArray(arr) {// 有问题的代码
}
// 高效
以下JavaScript排序函数应该按照数字大小对数组进行升序排序,但目前结果不正确。请帮我找出问题并修复。
当前代码:
function sortArray(arr) {return arr.sort();
}// 测试
console.log(sortArray([10, 5, 40, 25, 100])); // 实际输出: [10, 100, 25, 40, 5]
期望输出:
[5, 10, 25, 40, 100]
问题描述: 函数似乎按字符串而非数字进行排序。需要修改函数使其正确按数值大小排序,同时保持原函数签名不变。
#### 3. 已尝试方案说明**技巧**:列出已尝试的解决方法,描述每种方法的结果。**解释**:说明已尝试的方案能避免模型提供重复的建议,节省时间并引导模型探索新的解决思路。这也能帮助模型理解问题的复杂性和约束条件。**示例**:
```plaintext
// 低效
我的React组件不更新状态,请帮忙修复。// 高效
我的React函数组件中,状态更新后UI没有相应更新。以下是简化的问题代码和我已尝试的解决方案。**问题代码:**
```jsx
function Counter() {let count = 0;const increment = () => {count += 1;console.log("Count increased to:", count); // 控制台显示值确实增加了};return (<div><p>Count: {count}</p><button onClick={increment}>Increment</button></div>);
}
已尝试的解决方案:
- 将
count += 1
改为count = count + 1
- 无效,UI仍不更新 - 添加console.log检查 - 确认increment函数被调用且count值确实增加
- 尝试使用class组件而非函数组件 - 可以工作,但我希望保持函数组件的写法
- 检查React版本 - 使用的是React 18.2.0
期望行为: 点击按钮时,页面上显示的计数值应该增加。
请解释问题原因并提供修复方案,最好保持函数组件的写法。
#### 4. 系统化排查指导**技巧**:要求按特定顺序检查可能的问题,提供排查思路的框架。**解释**:系统化的排查方法能提高调试效率,避免遗漏关键问题。明确的排查框架也能帮助模型提供更有条理、更全面的分析和解决方案。**示例**:
```plaintext
// 低效
我的网站加载很慢,代码如下,请帮我优化。// 高效
我的React单页应用加载速度慢,特别是首次加载时。请按以下步骤系统性地分析可能的性能瓶颈,并提供相应的优化建议:1. **初始加载分析**- 检查bundle大小和分割情况- 分析关键渲染路径- 评估是否需要服务器端渲染2. **渲染性能分析**- 检查组件重渲染情况- 分析大型列表渲染方法- 评估状态管理是否高效3. **资源加载分析**- 检查图片和媒体文件的优化- 分析第三方库的使用- 评估API调用和数据获取策略以下是应用的关键代码片段:
```jsx
// App.js
import React, { useEffect, useState } from 'react';
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import Dashboard from './pages/Dashboard';
import ProductList from './pages/ProductList';
import UserProfile from './pages/UserProfile';
import { fetchAllData } from './api';function App() {const [data, setData] = useState(null);useEffect(() => {fetchAllData().then(result => setData(result));}, []);if (!data) return <div>Loading...</div>;return (<BrowserRouter><Routes><Route path="/" element={<Dashboard data={data} />} /><Route path="/products" element={<ProductList products={data.products} />} /><Route path="/profile" element={<UserProfile user={data.user} />} /></Routes></BrowserRouter>);
}
请针对每个分析步骤提供具体的优化建议,并说明预期的改进效果。
通过掌握这些代码生成与调试技巧,您可以更有效地引导大模型生成高质量的代码,并获得更精准的调试帮助,提高编程效率和代码质量。## 六、多语言翻译场景多语言翻译是大模型的重要应用场景之一。无论是日常交流、商业文档还是专业内容的翻译,精心设计的Prompt都能显著提升翻译质量,确保语义准确传达的同时保留原文风格和文化内涵。### 精准翻译技巧#### 1. 领域与上下文说明**技巧**:指定文本的专业领域,提供必要的背景信息。**解释**:不同领域有其特定的术语和表达方式。明确文本所属领域和相关上下文,能帮助模型选择更准确的词汇和表达,避免跨领域的误译。**示例**:
```plaintext
// 低效
把这句话翻译成法语:"The system requires a stable power supply."// 高效
请将以下句子翻译成法语。这句话是用于一份针对电气工程师的技术手册中,描述一个精密医疗设备的要求。**英文原文:** "The system requires a stable power supply."**翻译要求:** 确保术语精准,符合专业语境。
2. 术语一致性要求
技巧:提供关键术语的首选翻译,要求维持术语翻译一致性。
解释:术语一致性对专业文档翻译至关重要。明确的术语对照表能确保整个文档中关键概念的翻译保持一致,提高文档的专业性和可读性。
示例:
// 低效
将这份IT文档翻译成西班牙语。[文档内容]
...// 高效
请将以下IT基础设施文档翻译成西班牙语。翻译时请使用以下术语对照表确保专业术语一致性:**术语对照表:**
- cloud computing → computación en la nube
- firewall → cortafuegos
- data breach → violación de datos
- endpoint security → seguridad del punto final
- network latency → latencia de red**翻译要求:**
1. 保持技术术语的准确性和一致性
2. 维持原文的段落结构
3. 保留原文中的代码示例和命令不翻译
4. 适当调整句式以符合西班牙语的自然表达[文档内容]
...
3. 文化适应性指导
技巧:说明目标受众的文化背景,指定文化参考的处理方式。
解释:不同文化背景的受众对同一内容可能有不同的理解和期望。明确的文化适应性指导能帮助模型在翻译时做出适当的文化调整,确保内容对目标受众更具亲和力和相关性。
示例:
// 低效
将这篇美国市场的营销文案翻译成中文。[营销文案]
...// 高效
请将以下针对美国市场的营销文案翻译成简体中文,目标受众是中国大陆的25-35岁城市专业人士。**文化适应要求:**
1. 将美国本土的类比和习语替换为中国受众熟悉的表达
2. 调整文化参考点(如名人引用、节日、流行文化)以适应中国语境
3. 考虑中国消费者的价值观和购买决策因素
4. 保留产品名称和商标的英文形式,但可在首次出现时添加中文解释
5. 货币单位从美元转换为人民币(参考汇率:1美元≈7.2人民币)**品牌语调要求:** 保持专业、创新、友好的语调,避免过于夸张的表达。[营销文案]
...
4. 专业规范遵循
技巧:提供行业特定的翻译规范,说明格式和标点符号要求。
解释:不同行业和文档类型有其特定的格式和规范要求。明确的专业规范指导能确保翻译结果符合行业标准,提高文档的专业性和可用性。
示例:
// 低效
翻译这份法律文件成英文。[法律文件]
...// 高效
请将以下中文法律合同翻译成英文,遵循国际商业合同的标准法律英语规范。**专业规范要求:**
1. 使用法律英语中的标准术语和表达方式
2. 保留原文的条款结构和编号系统
3. 日期格式转换为"Month Day, Year"(如"June 1, 2025")
4. 货币金额表示为阿拉伯数字加全写(如"USD Five Thousand (USD 5,000)")
5. 保持法律文件的正式语气和客观性
6. 中国特色法律概念需提供英文解释(首次出现时在括号中)**格式要求:**
- 保留原文的段落分隔和缩进
- 标点符号使用英文标准(如中文引号「」转换为英文引号"")
- 保留原文的加粗和下划线强调[法律文件]
...
风格保留技巧
1. 原文风格特征描述
技巧:详细说明原文的语言风格,指出需要保留的修辞特点。
解释:语言风格是内容表达效果的重要组成部分。明确的风格特征描述能帮助模型在翻译时保留原文的表达特色,确保翻译后的内容能传达相似的感受和印象。
示例:
// 低效
翻译这首诗到英文。[中文诗歌]
...// 高效
请将以下这首现代中文诗歌翻译成英文。原诗具有以下风格特征,请在翻译中尽量保留:
1. 简洁而意象丰富的语言
2. 大量使用自然意象(如月光、河流、山峦)
3. 含蓄的情感表达,不直接陈述感受
4. 句式简短,多使用省略和意象并置
5. 韵律自由但注重音韵美感**翻译要求:**
- 优先保留原诗的意象和情感基调
- 可适当调整句式以符合英语诗歌表达习惯
- 不必严格押韵,但应注意音韵流畅
- 保留原诗的行数和节奏感[中文诗歌]
...
2. 语言特性转换指导
技巧:提供处理语言特有表达的策略,说明习语和成语的处理方法。
解释:不同语言有其独特的表达方式和修辞手法。明确的语言特性转换指导能帮助模型更好地处理这些语言差异,找到恰当的对应表达,确保翻译的自然流畅。
示例:
// 低效
把这篇含有很多成语的中文文章翻译成英文。[中文文章]
...// 高效
请将以下包含多个中国成语和文化特定表达的文章翻译成英文。**语言特性处理指南:**
1. 对于成语:- 如有对应的英文习语,优先使用- 如无对应习语,翻译其含义并在首次出现时添加简短解释- 保留特别有表现力的成语的字面翻译,并在括号中说明实际含义2. 对于文化特定表达:- 历史典故:提供简要背景(首次出现时在括号中)- 传统概念(如"面子"、"缘分"):使用音译加解释- 节日或习俗:提供英语世界中最接近的类比,并说明差异3. 对于语言结构差异:- 中文四字结构:转换为英文中适当的并列或修饰结构- 中文的意合特点:适当添加英文中的逻辑连接词- 中文的主语省略:在英文中补充合适的主语[中文文章]
...
3. 语气与语调保留要求
技巧:描述原文的情感基调,要求在翻译中保持相同效果。
解释:语气和语调传达了作者的态度和情感。明确的语气保留要求能确保翻译后的内容能唤起与原文相似的情感反应,保持作者的意图和文本的感染力。
示例:
// 低效
翻译这封商务邮件到德语。[商务邮件]
...// 高效
请将以下商务邮件从英文翻译成德语。原邮件具有以下语气特点,请在翻译中保留:
1. 正式但友好的商务语调
2. 礼貌而坚定的谈判立场
3. 含蓄的紧迫感表达
4. 适度的乐观态度
5. 尊重但不卑微的姿态**语气保留要点:**
- 保持原文中的礼貌用语层级
- 保留委婉表达的拒绝或条件
- 维持专业而不生硬的语调
- 确保幽默元素(如有)在德语文化背景下仍然得体
- 保持段落间的语气过渡和情感起伏**格式要求:**
- 遵循德语商务邮件的标准格式
- 适当调整称谓和结束语以符合德语习惯[商务邮件]
...
4. 受众等效原则应用
技巧:说明原文与译文受众的关系,指导如何达到等效的受众反应。
解释:成功的翻译不仅是语言的转换,更是沟通效果的传递。受众等效原则强调译文应在目标受众中产生与原文在原受众中相似的反应。明确的等效指导能帮助模型做出适当的调整,确保翻译后的内容能有效达成原文的沟通目的。
示例:
// 低效
将这个青少年科普文章翻译成西班牙语。[科普文章]
...// 高效
请将以下面向美国13-16岁青少年的科普文章翻译成西班牙语,目标受众为拉丁美洲同年龄段的青少年。**受众等效考量:**
1. 原文受众特点:美国中学生,具有美国教育体系背景知识,熟悉英美流行文化
2. 目标受众特点:拉丁美洲中学生,教育背景和文化参考点不同
3. 沟通目标:激发科学兴趣,解释复杂概念,鼓励进一步探索**等效策略指导:**
- 科学术语:保持准确性,但可能需要提供更多背景解释
- 文化参考:替换美国特有的例子为拉美青少年熟悉的参考
- 幽默元素:调整以适应拉美青少年的幽默感
- 教育参考:考虑拉美教育体系中相应的知识点和学科划分
- 激励方式:调整以反映拉美文化中的价值观和动机因素**语言适应:**
- 使用适合目标年龄段的西班牙语词汇和表达
- 考虑拉美西班牙语的地区特点(而非欧洲西班牙语)
- 保持原文的互动性和对话感[科普文章]
...
通过掌握这些多语言翻译技巧,您可以更有效地引导大模型生成高质量的翻译,确保内容在跨语言传递过程中保持准确、自然和文化适应性。
七、角色扮演对话场景
角色扮演是大模型的一个强大功能,通过精心设计的Prompt,可以引导模型扮演特定角色,提供专业建议、创造性对话或模拟特定场景的互动。本节将介绍如何设计高效的角色扮演Prompt。
角色定义技巧
1. 角色背景全面描述
技巧:提供详细的角色历史和背景,说明角色的知识范围和限制。
解释:角色的背景决定了其视角、知识范围和行为方式。全面的背景描述能帮助模型更准确地把握角色特征,生成更一致、更有深度的回应。
示例:
// 低效
扮演一个科学家。// 高效
请扮演一位名叫艾伦·陈的资深天体物理学家。你有以下背景和特点:**专业背景:**
- 麻省理工学院物理学博士,专攻黑洞物理
- 在NASA喷气推进实验室工作了15年
- 参与过多个太空望远镜项目
- 发表过30+关于黑洞和暗物质的研究论文
- 知识范围仅限于2023年之前公开发表的科学发现**个性特点:**
- 严谨但富有好奇心
- 善于用类比解释复杂概念
- 略带幽默感,偶尔会引用科幻作品
- 对未经证实的理论持谨慎态度
- 热衷于科学普及请以艾伦的身份回答我关于黑洞的问题,使用专业但平易近人的语言,适当加入个人见解,但不要超出你的知识范围。
2. 语言特征精确刻画
技巧:描述角色的说话方式和习惯,提供典型用语和表达模式。
解释:语言特征是角色个性的重要体现。精确的语言刻画能帮助模型生成更具特色、更符合角色身份的对话内容,增强角色的真实感和一致性。
示例:
// 低效
扮演一个维多利亚时代的英国贵族。// 高效
请扮演一位19世纪末维多利亚时代的英国上流社会贵族——亨利勋爵。你的语言特征如下:**语言风格:**
- 使用正式、优雅的英式英语
- 句式倾向于复杂和从容
- 经常使用委婉表达和含蓄暗示
- 避免直接表达强烈情感或不满**典型表达:**
- 使用"I dare say"、"I should think"等缓和断言的表达
- 称呼男性为"Sir"或"Mr.",女性为"Madam"或"Lady"
- 常用"Indeed"、"Rather"、"Quite so"等回应
- 使用"one"代替"you"作为泛指(如"One must always remember...")**禁忌表达:**
- 避免使用现代俚语或口语表达
- 不使用缩写形式(使用"cannot"而非"can't")
- 避免过于直接的批评或赞美**对话示例:**
"I dare say the weather has been rather disagreeable of late. One hopes for a more amenable climate as we approach the season."请以亨利勋爵的身份与我交流,保持一贯的语言特征和维多利亚时代的世界观。
3. 价值观与动机阐明
技巧:说明角色的核心信念和价值观,描述角色的行动动机。
解释:价值观和动机是角色决策和行为的内在驱动力。明确这些要素能帮助模型在回应中体现角色的一致性思维模式和行为倾向,使角色更加立体和可信。
示例:
// 低效
扮演一个环保主义者。// 高效
请扮演一位名叫玛雅的资深环保活动家。以下是她的核心价值观和动机:**核心价值观:**
- 相信生态系统的平衡高于短期经济利益
- 认为每个人都有责任为后代保护地球
- 重视科学证据和实证研究
- 相信系统性变革比个人行为更重要
- 尊重原住民的环境智慧和权利**行动动机:**
- 亲眼目睹家乡森林被砍伐的经历
- 希望为子孙后代留下宜居的地球
- 对环境不公正现象的愤怒(弱势群体往往承担更多环境风险)
- 受到生物多样性美丽和价值的启发
- 对已取得的环保成就的希望和自豪**决策框架:**
- 优先考虑长期环境影响而非短期便利
- 寻求兼顾社会公正和环境保护的解决方案
- 在激进行动和渐进改革间寻找平衡
- 基于科学证据而非纯粹情感做判断请以玛雅的身份回答关于环境问题的问题,体现她的价值观和动机,但保持理性和基于事实的讨论风格。
4. 互动风格指导
技巧:定义角色的社交互动方式,说明角色对不同情境的反应模式。
解释:互动风格决定了角色如何与他人交流和建立关系。明确的互动指导能帮助模型生成更符合角色性格的对话反应,增强角色扮演的连贯性和沉浸感。
示例:
// 低效
扮演一个咖啡店老板。// 高效
请扮演一位名叫马可的意大利裔咖啡店老板。以下是他的互动风格特点:**社交特点:**
- 热情友好但不过分熟稔
- 对老顾客会记住他们的常点饮品和名字
- 喜欢简短但真诚的交流
- 在忙碌时保持高效但不失礼貌
- 对咖啡话题特别热衷,会自然延长相关对话**反应模式:**
- 面对赞美:谦虚接受,归功于家族传统和优质原料
- 面对抱怨:认真倾听,真诚道歉,提供解决方案
- 面对犹豫的顾客:耐心提供建议,不施加压力
- 面对无礼行为:保持专业但略显冷淡
- 面对咖啡相关问题:热情详尽解答,展现专业知识**对话节奏:**
- 繁忙时段:简洁高效,专注于服务
- 安静时段:更放松,愿意闲聊
- 与新顾客:友好但保持适度距离
- 与老顾客:更随意,会询问个人近况请以马可的身份与我互动,根据对话情境调整你的互动风格,展现一位专业、热情但不过分亲昵的咖啡店老板形象。
对话流程控制技巧
1. 情境设定与边界
技巧:详细描述对话发生的场景,明确对话的范围和限制。
解释:清晰的情境设定为角色扮演提供了具体的背景和框架。明确的边界能帮助模型理解互动的适当范围,避免偏离预期场景或角色设定。
示例:
// 低效
我们来玩个角色扮演游戏。// 高效
我们将进行一个医患咨询的角色扮演。场景设定如下:**场景背景:**
- 地点:一家综合医院的心脏科诊室
- 时间:工作日上午的常规门诊
- 你的角色:一位经验丰富的心脏科医生张教授
- 我的角色:一位40岁的患者,近期出现胸闷、气短症状**互动边界:**
- 对话仅限于医疗咨询范围内
- 你可以询问病史、症状和生活习惯
- 你可以提供一般性医疗建议和可能的诊断方向
- 不应提供确定的诊断或具体药物处方
- 对严重情况应建议进一步检查或就医
- 不涉及医院具体收费或保险政策**对话目标:**
- 了解患者症状
- 评估可能的风险因素
- 提供初步专业意见
- 建议适当的后续步骤请以张教授的身份开始这次咨询,先简单自我介绍,然后询问我的症状详情。
2. 互动规则明确定义
技巧:设定对话的基本规则,说明角色能力的边界。
解释:明确的互动规则为角色扮演提供了结构和指导。这些规则能帮助模型理解如何在保持角色一致性的同时,处理各种可能的对话情况,包括边界情况和挑战性问题。
示例:
// 低效
扮演一个历史学家,回答我关于古罗马的问题。// 高效
请扮演一位专注于古罗马共和国末期的历史学者。我们的对话将遵循以下规则:**角色能力范围:**
- 你精通公元前100年至公元前27年的罗马历史
- 你熟悉该时期的政治制度、军事活动和社会结构
- 你了解凯撒、庞培、屋大维等历史人物的生平和影响
- 你可以讨论历史事件的不同学术解释和争议**互动规则:**
1. 当被问及你专长范围内的问题时,提供详细、学术性的回答
2. 当被问及其他时期的罗马历史时,可以提供概述,但明确表示这不是你的专长领域
3. 当被问及非罗马历史时,礼貌说明这超出了你的专业范围
4. 区分历史事实和学术推测,明确指出哪些是有确凿证据的,哪些是学术假设
5. 引用主要的历史来源(如西塞罗的著作、萨鲁斯特的记述等)
6. 避免使用现代视角或价值观来评判古罗马的行为和制度**回答结构:**
- 先提供简明直接的回答
- 然后补充相关背景和上下文
- 必要时提及不同的历史解释
- 可能时引用原始史料或考古证据我将开始提问,请按照这些规则以历史学者的身份回答。
3. 对话进展引导
技巧:提供对话发展的方向性指导,设定关键情节点或转折。
解释:对话进展引导能帮助角色扮演保持结构和目的性。这些指导能确保对话朝着预期方向发展,同时保留足够的灵活性以应对不同的互动可能性。
示例:
// 低效
扮演一个侦探,我是你的助手,我们在调查一个案件。// 高效
请扮演一位名叫福尔摩斯的侦探,我将扮演你的助手华生。我们正在调查一起珠宝失窃案。对话将按以下阶段进展:**第一阶段:案件简报**
- 你将首先询问案件的基本情况
- 我会提供初步信息:一颗价值连城的蓝宝石从博物馆展柜中消失,安保系统未被触发
- 你应表现出对某些细节的特别兴趣,并提出深入问题**第二阶段:现场调查**
- 我们将讨论参观犯罪现场的发现
- 你应指出一些常人容易忽略的线索(如展柜玻璃上的微小划痕)
- 你可以要求检查特定区域或物品**第三阶段:嫌疑人分析**
- 我会提供三位嫌疑人的基本信息
- 你应分析每位嫌疑人的动机和机会
- 你可以要求获取更多关于特定嫌疑人的信息**第四阶段:推理与结论**
- 你将综合所有线索,进行推理
- 你应解释作案手法和动机
- 最终指出真正的罪犯**互动指南:**
- 在每个阶段,你都应展现出敏锐的观察力和逻辑推理能力
- 偶尔使用你标志性的"基本演绎法"短语
- 在关键时刻可以有"顿悟"瞬间
- 保持神秘感,不要过早揭示全部推理过程请以福尔摩斯的身份开始这次调查,从询问案件基本情况开始。
4. 多角色互动协调
技巧:描述多个角色间的关系,提供角色间互动的指导原则。
解释:多角色互动增加了角色扮演的复杂性和丰富性。明确的互动协调能帮助模型在扮演多个角色或与用户扮演的角色互动时,保持各角色的一致性和关系的合理性。
示例:
// 低效
扮演一个面试官和应聘者。// 高效
请在一次技术岗位面试中同时扮演两个角色:技术面试官李总监和人力资源经理王经理。我将扮演应聘者。角色设定如下:**李总监(技术面试官):**
- 性格:直接、重视实际能力、略显严肃
- 关注点:技术深度、解决问题的思路、实际项目经验
- 提问风格:技术细节导向,可能会追问并深入探讨
- 与王经理的关系:相互尊重但偶有专业视角差异**王经理(HR经理):**
- 性格:友好、善于沟通、注重团队契合度
- 关注点:沟通能力、团队合作、职业发展规划
- 提问风格:行为面试问题,关注过去经历和软技能
- 与李总监的关系:会适时补充或转换话题,平衡面试氛围**角色互动协调:**
1. 两位面试官应交替提问,展现不同的关注点
2. 李总监的问题应更技术性,王经理的问题更侧重软技能
3. 两人可能在某些问题上有轻微的观点差异
4. 王经理可能会在技术问题过于深入时适时转换话题
5. 李总监可能会在某些回答上表现出更高的标准**面试流程:**
1. 开场:王经理先进行友好介绍
2. 简历回顾:李总监询问技术背景
3. 技术能力:李总监提出技术问题和场景
4. 软技能评估:王经理询问团队合作和沟通
5. 应聘者提问:两位面试官根据各自专长回答
6. 结束:王经理说明后续流程请以这两个角色开始面试,先由王经理进行开场介绍,然后进入面试流程。
通过掌握这些角色扮演对话技巧,您可以更有效地引导大模型创建丰富、一致且沉浸式的角色互动体验,无论是用于创意写作、教育模拟还是专业场景演练。
八、数据格式化处理场景
在处理数据时,大模型可以帮助我们将非结构化或半结构化的数据转换为更有组织、更易于使用的格式。精心设计的Prompt能显著提高这类任务的准确性和效率。
输入数据描述技巧
1. 数据结构精确定义
技巧:详细说明数据的格式和结构,描述字段的含义和关系。
解释:清晰的数据结构描述是成功处理数据的基础。明确的结构定义能帮助模型准确理解输入数据的组织方式和各部分的含义,从而更准确地执行转换或提取任务。
示例:
// 低效
帮我整理这些数据。姓名:张三,年龄:30;姓名:李四,年龄:25// 高效
请将以下非结构化文本数据转换为CSV格式。数据具有以下特点:
1. 每条记录由分号(;)分隔
2. 每条记录包含多个字段,字段之间用逗号(,)分隔
3. 每个字段由"字段名:字段值"组成
4. 主要字段包括"姓名"(字符串类型)和"年龄"(整数类型)
5. 数据可能包含空格,但空格不是有意义的分隔符**输入数据:**
"姓名:张三,年龄:30;姓名:李四,年龄:25; 姓名:王五, 年龄: 35"**期望输出格式:**
```csv
姓名,年龄
张三,30
李四,25
王五,35
#### 2. 示例数据提供**技巧**:提供具有代表性的数据样本,包含各种可能的数据情况。**解释**:示例数据能直观展示数据的实际形态和变化情况。全面的示例能帮助模型理解数据的多样性和复杂性,为处理各种边缘情况做好准备。**示例**:
```plaintext
// 低效
将这些日志条目转换为JSON格式。[日志条目]
...// 高效
请将以下服务器日志条目转换为结构化JSON格式。日志条目具有以下模式:`[时间戳] [日志级别] [服务名] [消息内容] (可选:错误代码)`**示例数据及其变体:**
1. 标准格式:`[2023-06-01 14:30:45] [INFO] [UserService] User login successful`2. 带错误代码:`[2023-06-01 14:35:12] [ERROR] [PaymentService] Transaction failed (ERR-4501)`3. 多行消息内容:
[2023-06-01 14:40:23] [WARN] [DataService] Connection unstable
Retry attempt 3 of 5
4. 特殊字符:
`[2023-06-01 14:45:56] [INFO] [SearchService] Query: "user:admin AND status:active"`**期望的JSON结构:**
```json
{
"timestamp": "2023-06-01 14:30:45",
"level": "INFO",
"service": "UserService",
"message": "User login successful",
"error_code": null
}
请处理以下日志条目,转换为上述JSON格式:
[日志条目]
…
#### 3. 数据质量问题说明**技巧**:描述可能存在的数据问题,提供处理异常数据的指导。**解释**:现实世界的数据常常存在各种质量问题。明确的数据质量说明和处理指导能帮助模型以一致和可预期的方式处理异常情况,提高结果的可靠性。**示例**:
```plaintext
// 低效
清理并格式化这些客户数据。[客户数据]
...// 高效
请清理并格式化以下客户数据,处理各种可能的数据质量问题。数据以CSV格式提供,包含以下字段:客户ID、姓名、电子邮件、电话号码、注册日期。**已知的数据质量问题及处理指南:**1. **缺失值:**- 姓名: 如缺失,标记为"[未提供]"- 电子邮件: 如缺失,标记为"no_email@example.com"- 电话号码: 如缺失,留空- 注册日期: 如缺失,使用"1900-01-01"作为占位符2. **格式不一致:**- 电话号码: 统一格式为"+[国家代码]-[号码]",如"+86-13812345678"- 注册日期: 统一为YYYY-MM-DD格式3. **无效数据:**- 电子邮件: 如格式无效,标记为"[邮箱格式错误]"并保留原值- 注册日期: 如日期无效(如2月30日),调整为该月最后一天4. **重复数据:**- 如客户ID重复,保留最新的注册日期记录- 添加一列"数据质量标记",标示"重复"5. **异常值:**- 注册日期在未来: 标记为"[日期错误]"并设为当前日期- 姓名超过50个字符: 截断并添加"..."请处理以下客户数据,并在输出中添加一列"数据质量备注",说明对每行数据进行的任何更正:[客户数据]
...
4. 数据范围与约束明确
技巧:说明数据的取值范围,描述数据间的依赖关系。
解释:数据范围和约束是理解数据语义的重要部分。明确的范围和约束信息能帮助模型更准确地验证和处理数据,确保结果符合业务规则和逻辑要求。
示例:
// 低效
验证这些产品数据是否有效。[产品数据]
...// 高效
请验证以下产品数据是否符合我们的数据规范,并标记出任何违反规则的条目。数据规范如下:**字段约束:**
1. **产品ID:** - 格式: 字母前缀(2位)+数字(6位),如"AB123456"- 唯一性: 必须在整个数据集中唯一2. **产品名称:**- 长度: 5-100个字符- 不允许特殊字符,除了连字符(-)和空格3. **价格:**- 范围: $0.01 - $9,999.99- 精度: 最多两位小数4. **库存量:**- 范围: 0 - 10,000- 整数值5. **类别:**- 必须是预定义列表中的值: "电子产品", "服装", "家居", "食品", "玩具"**字段间依赖关系:**
1. 如果类别是"食品",则必须有"保质期"字段
2. 如果价格>$1,000,则"高价值"标志必须为true
3. 如果库存量为0,则"可购买"状态必须为false请分析以下产品数据,对每条记录进行验证,并提供以下输出:
1. 有效记录的数量和百分比
2. 每种违规类型的统计
3. 详细的违规记录列表,包括违规原因[产品数据]
...
输出格式控制技巧
1. 输出模板精确定义
技巧:提供详细的输出格式模板,说明各字段的格式要求。
解释:明确的输出模板是确保结果符合预期格式的关键。详细的模板定义能帮助模型生成结构一致、格式规范的输出,便于后续处理和使用。
示例:
// 低效
把产品信息列出来。产品A - $50 - 库存100
产品B - $75 - 库存50// 高效
请将以下产品信息格式化为JSON对象数组。每个对象应严格遵循以下结构和格式要求:```json
{"product_id": "string", // 产品唯一标识符"product_name": "string", // 产品全名"price": {"amount": number, // 价格数值,保留两位小数"currency": "string" // 货币代码,如"USD"},"inventory": {"in_stock": number, // 当前库存数量,整数"available_for_sale": boolean // 是否可购买},"category": "string", // 产品类别"last_updated": "string" // ISO 8601格式的日期时间
}
格式要求:
- 所有字符串值应使用双引号
- 价格金额必须保留两位小数,如"50.00"
- 布尔值使用true/false,不带引号
- 日期格式为"YYYY-MM-DDTHH:MM:SSZ"
- 数组元素之间使用逗号分隔,最后一个元素后不加逗号
- 保持一致的缩进(2个空格)
输入信息:
产品A - $50 - 库存100 - 电子产品 - 2023-06-01
产品B - $75 - 库存50 - 家居 - 2023-05-15
产品C - $120.50 - 库存0 - 服装 - 2023-06-10
请将这些信息转换为符合上述模板的JSON格式。
#### 2. 处理规则明确说明**技巧**:详细描述数据转换规则,提供特殊情况的处理指南。**解释**:数据转换常涉及各种规则和特殊情况处理。明确的处理规则能确保模型以一致和符合预期的方式转换数据,特别是在处理边缘情况时。**示例**:
```plaintext
// 低效
将这些地址数据标准化。[地址数据]
...// 高效
请将以下非标准化的地址数据转换为标准格式,遵循以下处理规则:**基本转换规则:**
1. 所有地址组成部分应按此顺序排列:街道号码、街道名称、单元/公寓号、城市、州/省、邮编、国家
2. 街道名称首字母大写(如"Main Street"而非"main street")
3. 州/省使用标准两字母缩写(如"CA"代表"California"或"加利福尼亚")
4. 国家名称完整拼写,首字母大写
5. 邮编格式统一(美国为5位数或5+4位数,加拿大为A1A 1A1格式)**特殊情况处理:**
1. 缩写扩展:- "St." → "Street"- "Ave." → "Avenue"- "Blvd." → "Boulevard"- "Apt." → "Apartment"2. 方向标识规范化:- "N" → "North"- "S" → "South"- "E" → "East"- "W" → "West"- 方向放在街道名称之前(如"North Main Street")3. 单位/公寓号处理:- 统一格式为"Unit X"或"Apartment X"- 如果使用"#"符号,替换为"Unit"(如"#101" → "Unit 101")4. 多行地址合并:- 将多行地址合并为单行,组成部分之间用逗号分隔**输出格式:**
标准化地址: [完整标准化地址]
组成部分:
- 街道: [街道号码和名称]
- 单元: [单元/公寓信息,如有]
- 城市: [城市名称]
- 州/省: [标准化州/省缩写]
- 邮编: [标准化邮编]
- 国家: [国家名称]
请处理以下地址数据:[地址数据]
...
3. 格式一致性要求
技巧:强调输出格式的一致性,提供格式验证的标准。
解释:格式一致性对于数据的可用性和可靠性至关重要。明确的一致性要求能帮助模型生成格式统一、结构规范的输出,减少后续处理的复杂性。
示例:
// 低效
将这些日期转换为标准格式。[日期列表]
...// 高效
请将以下各种格式的日期统一转换为ISO 8601标准格式(YYYY-MM-DD)。转换过程必须严格遵循以下一致性要求:**格式一致性要求:**
1. 所有日期必须使用连字符(-)作为分隔符,不使用斜杠(/)或点(.)
2. 年份必须使用4位数字表示(如"2023"而非"23")
3. 月份和日期必须使用2位数字表示,必要时补零(如"05"代表五月,而非"5")
4. 不包含时间部分,仅日期
5. 不使用任何本地化格式(如月份名称)**验证标准:**
1. 年份范围: 1900-2099
2. 月份范围: 01-12
3. 日期范围: 根据月份和闰年规则确定(如4月为01-30)
4. 闰年规则: 能被4整除但不能被100整除,或能被400整除**特殊情况处理:**
1. 无效日期(如2月30日): 标记为"[无效日期]"并提供原始值
2. 含模糊月/日的日期(如04/05可能是4月5日或5月4日):- 美国格式假设为MM/DD- 其他地区格式假设为DD/MM- 在输出中标注"[可能的歧义]"
3. 仅有月份和年份: 使用该月1日作为日期,并标注"[推断日期]"
4. 未来日期: 正常转换,但标注"[未来日期]"**输出格式:**
原始日期: [原始输入]
标准化日期: [YYYY-MM-DD格式]
备注: [任何特殊处理说明,如有]
请处理以下日期列表:[日期列表]
...
4. 可读性与实用性平衡
技巧:指导在机器可读性和人类可读性间取舍,说明格式化的目的和用途。
解释:不同的使用场景对数据格式有不同的要求。明确的可读性与实用性平衡指导能帮助模型生成最适合特定用途的输出格式,在机器处理效率和人类理解便利性之间找到最佳平衡点。
示例:
// 低效
格式化这些监控数据。[监控数据]
...// 高效
请将以下服务器监控数据格式化为既适合人类阅读又便于程序处理的格式。这些数据将用于两个目的:
1. 技术团队的日常监控仪表板(人类阅读)
2. 自动化警报系统的输入(机器处理)**平衡要求:**
1. **人类可读性需求:**- 关键指标应直观可见- 数据应有层次结构,便于快速浏览- 异常值应有视觉上的强调- 时间序列数据应便于识别趋势2. **机器可读性需求:**- 结构一致,便于程序解析- 字段名称统一且无歧义- 数值不含单位文本(单位在元数据中说明)- 时间戳格式标准化**推荐输出格式:**
使用JSON格式,但增强其可读性:
- 保持一致的缩进(2个空格)
- 关键字段放在对象开头
- 相关字段分组
- 为异常值添加额外标记字段
- 包含元数据部分说明单位和阈值**示例平衡格式:**
```json
{"metadata": {"server_id": "srv-42","timestamp": "2023-06-15T14:30:00Z","units": {"cpu": "percent","memory": "GB","disk": "GB","network": "Mbps"},"thresholds": {"cpu_warning": 80,"memory_warning": 85,"disk_warning": 90}},"status": {"overall": "warning", // 人类可读的总体状态"has_alerts": true // 机器可处理的布尔标志},"metrics": {"cpu": {"usage": 87.5,"is_warning": true, // 便于机器处理的标志"cores": [{"id": 0, "usage": 75.2},{"id": 1, "usage": 92.8, "is_warning": true},{"id": 2, "usage": 88.4, "is_warning": true},{"id": 3, "usage": 93.6, "is_warning": true}]},"memory": {"total": 32,"used": 24.6,"free": 7.4,"usage_percent": 76.9},// 其他指标...}
}
请将以下监控数据转换为符合上述平衡要求的格式:
[监控数据]
…
通过掌握这些数据格式化处理技巧,您可以更有效地引导大模型处理各种数据转换、清洗和格式化任务,提高数据处理的准确性、一致性和实用性。## 九、高级技巧与最佳实践掌握了基础原则和场景化技巧后,我们可以进一步探索一些高级策略,以应对更复杂的挑战,优化效率,并提升跨模型的适应性。### 1. Token优化策略Token是模型处理信息的单位,优化Token消耗不仅能降低成本,有时还能提高响应速度和质量。**技巧1:精简表达**
- **说明**:使用简洁明了的指令语言,避免不必要的寒暄、重复或修饰。直接切入主题,用最少的词语表达清晰的意图。
- **示例**:```plaintext// 低效 (相对冗长)请你作为一个专业的市场分析师,帮我分析一下当前电动汽车市场的最新趋势,特别是关于电池技术和充电设施方面的发展,内容要详细一点,给出你的看法。// 高效 (更精简)作为市场分析师,分析当前电动汽车市场的关键趋势,聚焦电池技术和充电设施。提供简要见解。
技巧2:分步处理大型任务
- 说明:将复杂或长篇的任务分解为多个小步骤,每次只向模型请求一部分内容。这可以避免超出模型的上下文窗口限制,并允许在过程中进行调整。
- 示例 (概念性):
// Prompt 1: 任务分解 我要写一份关于气候变化对农业影响的综合报告。请先帮我列出报告的主要章节大纲。// Prompt 2: 针对性生成 (基于大纲) 请详细阐述大纲中的第二章:“气候变化对主要粮食作物产量的影响”。引用至少两项研究。// Prompt 3: 继续生成 接下来,请撰写第三章:“适应气候变化的农业策略”。 ... (依此类推)
技巧3:上下文压缩
- 说明:在需要提供大量背景信息时,使用摘要、关键信息列表或引用ID代替完整的长文本,减少输入Token。
- 示例:
// 低效 (提供完整长篇报告) 基于以下[长篇市场研究报告全文],请总结消费者对新产品的反馈。 [报告全文...]// 高效 (提供报告摘要) 基于以下[市场研究报告摘要],请总结消费者对新产品的反馈。 [报告摘要...]
技巧4:利用模型记忆(如适用)
- 说明:在支持连续对话的模型中,利用其短期记忆能力,避免在后续Prompt中重复之前已提供的信息。直接引用之前的讨论或结果。
- 示例:
// Prompt 1 分析A公司的SWOT。// Prompt 2 (低效,重复信息) 基于刚才对A公司的SWOT分析,请为A公司提出三条战略建议。// Prompt 2 (高效,利用记忆) 基于刚才的SWOT分析,请为A公司提出三条战略建议。
2. 跨模型兼容性技巧
不同的大模型有各自的特点和能力差异。编写具有良好兼容性的Prompt,可以让你在不同平台间切换时,仍能获得相对一致和有效的结果。
技巧1:聚焦通用核心能力
- 说明:专注于所有主流模型都具备的核心能力,如文本生成、总结、翻译、基本推理等。避免依赖特定模型的专有功能、特殊语法或知识库。
- 示例:
// 依赖特定模型功能 (可能不通用) 请使用[某模型特定]的知识图谱功能,分析“人工智能”和“机器学习”的关系。// 通用指令 请解释“人工智能”和“机器学习”这两个概念的区别与联系。用一个简单的例子说明它们的关系。
技巧2:使用清晰、标准的自然语言
- 说明:使用结构清晰、语法规范、无歧义的自然语言指令。避免使用过于口语化、模糊或特定文化背景的表达。
- 示例:
// 低效 (模糊,依赖模型猜测) 给我弄点关于那个新电影的东西。// 高效 (清晰,标准) 请提供关于电影《[电影名称]》的剧情简介、主要演员列表和上映日期。
技巧3:提供明确的格式指导
- 说明:对于需要结构化输出的任务,明确指定通用的格式(如Markdown、JSON、CSV),并提供清晰的模板。这比依赖模型自行决定格式更可靠。
- 示例:(参考数据格式化章节的示例)
技巧4:渐进式测试与调整
- 说明:在不同模型上测试同一个Prompt,观察结果差异。根据需要进行微调,找到一个在多个模型上都能表现良好的“最大公约数”式Prompt。
3. 复杂任务拆解技巧
面对高度复杂的任务,直接用一个Prompt往往难以获得理想结果。有效的任务拆解是关键。
技巧1:识别独立子任务
- 说明:将复杂目标分解为一系列逻辑上独立的、更小、更易于管理的子任务。每个子任务对应一个或多个具体的Prompt。
- 示例 (概念性):
// 复杂任务描述 创建一个简单的在线待办事项列表Web应用,前端使用React,后端使用Node.js和Express,数据存储在内存中。// 优化后的拆解式Prompt (分步请求) // Prompt 1: 后端框架 请生成一个基础的Node.js/Express服务器结构,包含一个用于管理待办事项(增、删、改、查)的API路由框架。数据暂时存储在内存数组中。// Prompt 2: 前端组件 请生成一个React组件,用于显示待办事项列表,并包含添加新事项的输入框和按钮。// Prompt 3: API集成 请展示如何在React组件中使用fetch API调用后端创建的待办事项管理API(获取列表、添加新项)。 ... (后续可能涉及删除、修改等)
技巧2:设计任务流程与依赖关系
- 说明:明确子任务之间的执行顺序和依赖关系。前一个子任务的输出可能作为后一个子任务的输入。
- 示例:在上述Web应用示例中,必须先生成后端API框架,然后才能在前端组件中调用它。
技巧3:结果整合与验证
- 说明:规划如何将各个子任务的结果整合成最终的解决方案。在整合过程中进行验证,确保各部分协同工作正常。
- 示例:生成后端代码后,先本地运行测试API;生成前端代码后,连接API进行集成测试。
技巧4:迭代反馈与修正
- 说明:在任务拆解的每个阶段,都可能需要根据模型的输出进行反馈和修正。将复杂任务视为一个多轮对话和协作的过程。
掌握这些高级技巧,能让你在面对更复杂、更具挑战性的任务时,依然能够高效、灵活地利用大模型的能力,实现更宏伟的目标。
十、总结与资源推荐
恭喜您完成了这份大模型高效Prompt编写指南!通过学习核心原则、掌握不同场景下的具体技巧,并了解高级策略,您现在应该具备了更强的能力来引导大模型生成高质量、符合预期的响应。
核心技巧回顾:
- 清晰性与具体性:始终明确您的指令,并提供足够的上下文。
- 结构化思维:无论是输入还是输出,结构化都能提升效率和准确性。
- 场景化应用:针对不同任务(文本生成、信息提取、代码、翻译、角色扮演、数据处理)采用特定的优化策略。
- 迭代优化:将Prompt编写视为一个持续改进的过程,通过反馈不断完善。
- 效率与兼容性:关注Token优化和跨模型兼容性,提升实用价值。
- 任务拆解:面对复杂问题,学会将其分解为可管理的小步骤。
持续学习与实践:
Prompt工程是一个不断发展的领域。要保持领先,建议您:
- 持续实践:在日常工作和学习中积极应用所学技巧,熟能生巧。尝试解决真实世界的问题。
- 关注模型更新:各大模型平台会不断更新其模型能力和特性。了解这些更新,有助于您利用最新的功能。
- 阅读社区分享:关注AI和Prompt工程相关的社区、博客和论坛(如Reddit的r/PromptEngineering、相关的技术博客等),学习他人的经验和创意。
- 尝试不同模型:体验不同大模型的特点和优势,了解它们的差异,有助于培养更通用的Prompt编写能力。
- 保持好奇心:探索大模型的新应用场景,挑战更复杂的任务,不断拓展您与AI协作的可能性。
结语:
有效的Prompt是释放大模型潜力的钥匙。它不仅是一项技术技能,更是一种与智能体高效沟通的艺术。
祝在Prompt编写的旅程中不断进步,探索无限可能!