LLM 提示工程:技巧与最佳实践

张开发
2026/4/20 1:55:30 15 分钟阅读

分享文章

LLM 提示工程:技巧与最佳实践
LLM 提示工程技巧与最佳实践引言大语言模型LLM如GPT-4、Claude、LLaMA等的出现彻底改变了我们与人工智能交互的方式。然而要充分发挥这些模型的潜力掌握提示工程Prompt Engineering至关重要。提示工程是一门艺术和科学它涉及设计有效的提示来引导LLM产生准确、有用的输出。本文将深入探讨LLM提示工程的核心技巧和最佳实践帮助你成为提示工程的专家。提示工程的基本原理什么是提示工程提示工程是设计和优化提示Prompts的过程以引导大语言模型产生期望的输出。一个好的提示应该明确具体清晰表达你的需求结构合理组织信息以便模型理解上下文充分提供足够的背景信息指令明确告诉模型你期望的输出格式和内容LLM的工作原理理解LLM的工作原理有助于我们设计更好的提示自回归生成LLM一次生成一个词基于之前的上下文概率模型每个词的生成都基于概率分布上下文窗口模型只能关注有限的上下文长度参数规模模型参数越多理解能力越强提示工程的核心技巧1. 指令清晰明确技巧使用直接、明确的指令避免模糊的表达。示例差写点关于人工智能的东西好写一篇500字的文章介绍人工智能在医疗领域的应用重点关注诊断辅助和药物研发代码示例# 差的提示 prompt 写点关于Python的东西 # 好的提示 prompt 写一篇300字的教程介绍Python中的列表推导式包括基本语法、使用场景和性能优势并提供3个具体示例2. 提供上下文和背景技巧为模型提供足够的上下文信息帮助它理解任务的背景和要求。示例差总结这个文档好请总结以下关于气候变化的科学报告重点关注其对全球农业的影响。报告内容[插入报告内容]代码示例# 提供上下文的提示 context 这是一份关于2023年全球AI发展趋势的报告其中提到了生成式AI的快速发展、AI在医疗领域的应用增长、以及AI伦理问题的日益关注。 prompt f基于以下上下文总结2023年全球AI发展的三个主要趋势\n{context}3. 使用结构化格式技巧使用结构化的格式组织提示如编号列表、表格等使模型更容易理解你的要求。示例差比较Python和JavaScript好请从以下几个方面比较Python和JavaScript\n1. 语法特点\n2. 应用场景\n3. 性能表现\n4. 生态系统\n使用表格格式呈现比较结果代码示例# 结构化提示 prompt 请分析以下产品的优缺点并给出改进建议 产品智能手环 分析维度 1. 功能特点 2. 设计外观 3. 价格定位 4. 电池续航 请使用以下格式输出 优点 - [优点1] - [优点2] ... 缺点 - [缺点1] - [缺点2] ... 改进建议 - [建议1] - [建议2] ...4. 示例引导Few-shot Learning技巧提供少量示例帮助模型理解你期望的输出格式和内容。示例差翻译这些句子好请将以下中文句子翻译成英文\n示例1\n中文我爱编程\n英文I love programming\n\n示例2\n中文今天天气很好\n英文The weather is nice today\n\n现在翻译\n中文人工智能正在改变世界代码示例# Few-shot提示 prompt 请将以下数学问题转换为Python代码 示例1 问题计算1到100的和 代码sum(range(1, 101)) 示例2 问题计算列表中所有偶数的和 代码sum(x for x in lst if x % 2 0) 现在转换 问题计算字典中所有值的平均值5. 角色设定技巧为模型设定一个具体的角色使其输出更符合特定场景的需求。示例差写一个关于健康饮食的建议好你是一位专业的营养师请为一位30岁的办公室工作者设计一周的健康饮食计划考虑到他的工作性质和可能的时间限制代码示例# 角色设定提示 prompt 你是一位资深的前端开发工程师请分析以下代码的问题并提供优化建议 代码 function fetchData() { for (let i 0; i 1000; i) { fetch(https://api.example.com/data/ i) .then(response response.json()) .then(data console.log(data)); } } 请从性能、可读性和最佳实践三个方面分析6. 约束和限制技巧明确设定输出的约束和限制如长度、格式、风格等。示例差写一个故事好写一个500字以内的科幻故事主题是时间旅行风格要温馨感人结局要有意外的转折代码示例# 带约束的提示 prompt 请生成一个Python函数实现二分查找算法要求 1. 函数名binary_search 2. 参数一个有序列表和目标值 3. 返回值目标值的索引若不存在返回-1 4. 代码长度不超过30行 5. 包含详细的注释高级提示技巧1. 链式思考Chain-of-Thought技巧引导模型逐步思考展示推理过程适用于复杂问题。示例差解决这个数学问题3x 5 17好请解决这个数学问题并展示你的思考过程3x 5 17。思考步骤\n1. 首先我需要将常数项移到等式右边\n2. 然后两边同时除以系数得到x的值代码示例# 链式思考提示 prompt 请解决以下逻辑题并展示你的思考过程 问题有A、B、C三个人其中一个是医生一个是律师一个是教师。已知 1. A不是医生 2. B不是律师 3. C不是教师 4. 医生和律师在一次会议上见过面 请问A、B、C分别是什么职业 请按照以下步骤思考 1. 列出所有可能的职业组合 2. 根据条件排除不可能的组合 3. 验证剩余的组合是否符合所有条件2. 自我修正技巧引导模型自我检查和修正提高输出质量。示例差写一个关于环保的演讲稿好写一个3分钟的环保演讲稿面向中学生。完成后请检查以下几点\n1. 内容是否适合中学生理解\n2. 例子是否生动具体\n3. 语言是否简洁有力\n4. 结构是否清晰\n如有问题请进行修改代码示例# 自我修正提示 prompt 请生成一个Python正则表达式用于验证电子邮件地址。完成后请检查以下几点 1. 是否支持常见的邮箱域名 2. 是否正确处理用户名部分的特殊字符 3. 是否考虑了长度限制 4. 是否有语法错误 如有问题请进行修改并解释修改原因3. 多步骤任务分解技巧将复杂任务分解为多个步骤逐步完成。示例差分析这个市场报告好请按照以下步骤分析这份市场报告\n1. 首先提取报告中的关键数据和趋势\n2. 然后分析这些数据对行业的影响\n3. 接着识别报告中提到的机遇和挑战\n4. 最后基于分析给出3-5条战略建议代码示例# 多步骤任务分解提示 prompt 请按照以下步骤生成一个完整的数据分析报告 步骤1理解数据 - 数据集包含哪些字段 - 数据的基本统计信息是什么 步骤2数据清洗 - 需要处理哪些缺失值 - 如何处理异常值 步骤3数据分析 - 主要的趋势和模式是什么 - 有哪些显著的相关性 步骤4可视化建议 - 推荐使用哪些图表类型 - 如何有效地展示关键发现 步骤5结论和建议 - 基于分析得出的主要结论是什么 - 有哪些数据驱动的建议提示工程的最佳实践1. 清晰明确的指令使用祈使句如请、生成、分析等避免模糊的词汇如一些、可能、大概等明确输出的格式和要求2. 适当的上下文提供足够的背景信息包含相关的示例和参考资料考虑模型的知识截止日期3. 合理的长度平衡详细程度和简洁性避免过长的提示以免超出模型的上下文窗口对于复杂任务考虑使用多轮交互4. 测试和迭代测试不同的提示格式和结构分析模型的输出找出改进点不断优化提示提高输出质量5. 伦理和安全避免使用可能产生有害内容的提示确保提示符合平台的使用政策考虑模型输出的潜在影响实际应用案例案例1内容创作提示你是一位专业的科技作家请为技术博客写一篇关于大语言模型的文章。要求 1. 标题吸引人包含关键词大语言模型和未来发展 2. 内容结构包括引言、核心技术、应用场景、挑战与机遇、结论 3. 长度约800字 4. 语言风格专业但易懂适合技术爱好者阅读 5. 包含1-2个具体的应用案例输出# 大语言模型重塑人工智能的未来发展 ## 引言 近年来大语言模型LLM如GPT-4、Claude等的出现标志着人工智能领域的重大突破。这些模型不仅能够理解和生成人类语言还能执行复杂的任务从撰写文章到解决数学问题从代码生成到创意写作。本文将探讨大语言模型的核心技术、应用场景以及未来发展的机遇与挑战。 ## 核心技术 大语言模型的核心技术包括 1. **Transformer架构**通过自注意力机制捕捉文本中的长距离依赖关系 2. **大规模预训练**在海量文本数据上进行无监督学习 3. **微调**在特定任务上进行有监督学习提高模型性能 4. **提示工程**通过精心设计的提示引导模型产生期望的输出 ## 应用场景 大语言模型已经在多个领域展现出巨大潜力 ### 案例1智能客服 某电商平台部署了基于大语言模型的智能客服系统能够理解客户的自然语言查询提供个性化的解决方案。系统上线后客服响应时间缩短了60%客户满意度提高了25%。 ### 案例2代码生成 软件开发公司使用大语言模型辅助编程开发人员只需描述需求模型就能生成相应的代码。这使得开发效率提高了40%同时减少了代码错误率。 ## 挑战与机遇 **挑战** - 模型偏见可能反映训练数据中的偏见 - 事实准确性可能产生错误信息 - 计算资源需求训练和部署成本高昂 - 伦理问题可能被用于生成有害内容 **机遇** - 自动化程度提升减少重复性工作 - 创意能力增强辅助人类创作 - 个性化服务提供定制化的用户体验 - 跨语言交流打破语言障碍 ## 结论 大语言模型正在重塑人工智能的未来发展它们不仅是工具更是人类智能的延伸。随着技术的不断进步我们可以期待大语言模型在更多领域发挥重要作用为社会创造更大的价值。然而我们也需要谨慎对待其潜在风险确保技术的发展符合人类的利益。 未来大语言模型将继续进化变得更加智能、高效和安全。它们将成为我们解决复杂问题、推动创新的有力助手开启人工智能发展的新篇章。案例2代码生成提示你是一位资深的Python开发工程师请生成一个完整的Python函数实现以下功能 功能计算一个目录及其子目录中所有文件的总大小 要求 1. 函数名calculate_directory_size 2. 参数directory_path字符串目录路径 3. 返回值总大小整数字节 4. 处理异常情况如目录不存在 5. 包含详细的文档字符串 6. 代码风格符合PEP 8规范输出import os def calculate_directory_size(directory_path): 计算一个目录及其子目录中所有文件的总大小 Args: directory_path (str): 目录路径 Returns: int: 总大小字节 Raises: FileNotFoundError: 如果目录不存在 PermissionError: 如果没有权限访问目录 total_size 0 if not os.path.exists(directory_path): raise FileNotFoundError(f目录不存在: {directory_path}) if not os.path.isdir(directory_path): raise NotADirectoryError(f路径不是目录: {directory_path}) try: for root, _, files in os.walk(directory_path): for file in files: file_path os.path.join(root, file) try: total_size os.path.getsize(file_path) except (FileNotFoundError, PermissionError): # 跳过无法访问的文件 pass except PermissionError: raise PermissionError(f没有权限访问目录: {directory_path}) return total_size # 示例用法 if __name__ __main__: try: size calculate_directory_size(.) print(f目录大小: {size} 字节) print(f目录大小: {size / (1024 * 1024):.2f} MB) except Exception as e: print(f错误: {e})案例3数据分析提示你是一位数据分析师请分析以下销售数据并提供详细的分析报告 数据 月份 | 销售额万元 | 订单数 | 客户数 1月 | 120 | 350 | 280 2月 | 150 | 420 | 320 3月 | 130 | 380 | 300 4月 | 180 | 500 | 350 5月 | 200 | 550 | 380 6月 | 220 | 600 | 400 要求 1. 分析销售额、订单数和客户数的趋势 2. 计算每月的平均订单金额 3. 识别增长最快的指标 4. 给出业务建议 5. 使用表格和图表展示数据用文字描述图表内容输出# 销售数据分析报告 ## 数据概览 | 月份 | 销售额万元 | 订单数 | 客户数 | 平均订单金额元 | |------|----------------|--------|--------|-------------------| | 1月 | 120 | 350 | 280 | 3,428.57 | | 2月 | 150 | 420 | 320 | 3,571.43 | | 3月 | 130 | 380 | 300 | 3,421.05 | | 4月 | 180 | 500 | 350 | 3,600.00 | | 5月 | 200 | 550 | 380 | 3,636.36 | | 6月 | 220 | 600 | 400 | 3,666.67 | ## 趋势分析 ### 销售额趋势 销售额呈现稳步上升趋势从1月的120万元增长到6月的220万元增长率约83.3%。特别是4月到6月销售额增长更为显著。 ### 订单数趋势 订单数与销售额保持一致的增长趋势从1月的350单增长到6月的600单增长率约71.4%。 ### 客户数趋势 客户数也呈现持续增长从1月的280个增长到6月的400个增长率约42.9%。 ### 平均订单金额趋势 平均订单金额从1月的3,428.57元逐渐增长到6月的3,666.67元增长约6.9%表明客户的平均购买金额有所提升。 ## 增长最快的指标 | 指标 | 1月值 | 6月值 | 增长率 | |------------|-------|-------|--------| | 销售额 | 120 | 220 | 83.3% | | 订单数 | 350 | 600 | 71.4% | | 客户数 | 280 | 400 | 42.9% | | 平均订单金额 | 3,428.57 | 3,666.67 | 6.9% | 销售额是增长最快的指标其次是订单数。 ## 业务建议 1. **客户获取策略**客户数增长率低于销售额和订单数建议加强客户获取策略如社交媒体营销、 referral programs等。 2. **客户留存**虽然客户数在增长但应关注客户留存率培养忠实客户群体。 3. **平均订单金额**平均订单金额增长相对缓慢建议通过交叉销售、 upselling等策略提高客单价。 4. **季节性因素**观察到4-6月销售增长更为显著可能存在季节性因素建议提前备货和调整营销策略。 5. **数据驱动决策**建立更详细的销售数据跟踪系统包括产品类别、客户 demographics等以便进行更深入的分析。 ## 结论 总体来看业务呈现良好的增长态势销售额、订单数和客户数都在稳步上升。通过实施上述建议有望进一步提升业务表现实现可持续增长。提示工程的工具和资源常用工具Prompt Engineering IDEs如Promptify、LangChain等提示模板库如Hugging Face的Prompt TemplatesLLM playgrounds如OpenAI Playground、Anthropic Claude等自动化工具如AutoGPT、AgentGPT等学习资源官方文档OpenAI、Anthropic等平台的官方文档在线课程Coursera、Udemy上的提示工程课程社区论坛Reddit的r/MachineLearning、Hugging Face论坛书籍《Prompt Engineering for LLMs》等代码优化建议1. 提示模板化# 原始代码 prompt 请写一篇关于 topic 的文章长度约 str(length) 字 # 优化代码 prompt_template 请写一篇关于{topic}的文章长度约{length}字 prompt prompt_template.format(topictopic, lengthlength)2. 提示缓存import hashlib import pickle class PromptCache: def __init__(self, cache_fileprompt_cache.pkl): self.cache_file cache_file self.cache self._load_cache() def _load_cache(self): try: with open(self.cache_file, rb) as f: return pickle.load(f) except: return {} def _save_cache(self): with open(self.cache_file, wb) as f: pickle.dump(self.cache, f) def get(self, prompt): key hashlib.md5(prompt.encode()).hexdigest() return self.cache.get(key) def set(self, prompt, response): key hashlib.md5(prompt.encode()).hexdigest() self.cache[key] response self._save_cache() # 使用示例 cache PromptCache() prompt 写一篇关于人工智能的文章 # 检查缓存 response cache.get(prompt) if not response: # 调用LLM获取响应 response llm.generate(prompt) # 存入缓存 cache.set(prompt, response) print(response)3. 多提示策略def generate_with_fallback(prompt, modelgpt-4): 使用多提示策略生成内容 # 主提示 main_prompt f{prompt}\n请提供详细、准确的回答 try: # 尝试使用主提示 response llm.generate(main_prompt, modelmodel) return response except Exception as e: print(f主提示失败: {e}) # 使用备用提示 fallback_prompt f{prompt}\n请简洁明了地回答 try: response llm.generate(fallback_prompt, modelgpt-3.5-turbo) return response except Exception as e: print(f备用提示失败: {e}) return 抱歉无法生成内容结论提示工程是充分发挥大语言模型潜力的关键技能。通过掌握本文介绍的技巧和最佳实践你可以设计出更有效的提示获得更准确、有用的模型输出。提示工程不是一成不变的它需要不断学习和实践。随着LLM技术的不断发展提示工程的方法也会不断进化。保持学习的态度关注最新的研究和实践你将成为提示工程的专家。记住好的提示应该是清晰明确准确表达你的需求结构合理组织信息以便模型理解上下文充分提供足够的背景信息指令明确告诉模型你期望的输出格式和内容不断优化通过测试和迭代改进提示通过精心设计的提示你可以让大语言模型成为你的有力助手帮助你解决各种复杂的问题创造更多的价值。

更多文章