


























在大模型能力日新月异的今天,许多人发现自己与AI的对话常常陷入“鸡同鸭讲”的尴尬境地。
精心设计的提问,换来的可能是文不对题、逻辑混乱的回答。问题往往不在于模型的能力上限,而在于我们沟通的方式。
谷歌发布的69页《提示工程》白皮书,正好解决了这一痛点,将如何高效驱动大模型的方法论提炼为一系列清晰、可操作的实践。
本文,我将结合自身经验,为你解读这份资料的核心精髓。

想象一下训练小狗捡球:如果你含糊地说“去拿过来”,它可能叼回一只拖鞋;但如果你清晰地指向球并说“捡那个红色的球”,成功率会大增。
提示工程的本质与此类似:通过设计清晰、结构化的指令(提示词),引导大模型生成精准、符合预期的输出,避免其因语义模糊而产生“幻觉”或无关内容。
谷歌白皮书明确指出,大语言模型本质上是基于已学习的海量数据,进行下一个词的概率预测。一个优质的提示,关键在于表达直白、意图清晰、约束明确。
一次,我想了解水果“苹果”的特性,模型却给我回复了手机“苹果”公司。类似的误解在日常使用中屡见不鲜。无论是生代码、写报告还是写作,低质量的提示词都会导致结果错误,浪费大量时间在调整和重试上。
掌握提示工程,意味着你从模型的“被动接收”转变为“主动驱动”。白皮书的核心观点之一就是:这是一项可学习、可实践的沟通技能,就像清晰地和同事沟通需求一样。
白皮书列举了多种技巧,我从中提炼出五种最实用、见效最快的方法,并附上代码示例。
这是最基础的方式,直接给出任务指令,不提供额外示例。适用于简单、定义明确的任务。
适用场景:情感分类、实体识别、简单翻译。
示例:情感分析
判断这条电影评论属于正面(POSITIVE)、中性(NEUTRAL)还是负面(NEGATIVE)?
评论:“每一分钟都很喜欢!”
答案:
模型输出:正面(POSITIVE)
白皮书提醒:零样本提示在处理复杂、矛盾或隐含语义的文本时(例如“这部电影精彩到让我睡着了”),效果可能不稳定。
通过提供少量输入-输出示例,让模型理解任务格式并模仿。这是保证输出格式一致性的方式。
适用场景:数据格式转换、风格模仿、复杂规则。
示例:将自然语言订单转换为JSON
把这份披萨订单转成JSON格式。 示例1:"小份披萨加辣香肠" 输出:{"size": "small", "toppings": ["pepperoni"]} 示例2:"大份披萨加橄榄、蘑菇" 输出:{"size": "large", "toppings": ["olives", "mushrooms"]} 现在处理:"中份披萨加香肠" 输出:
模型输出:{"size": "medium", "toppings": ["sausage"]}
最佳实践:通常提供2-3个高质量示例即可显著提升效果。
在对话开始时,为模型设定一个全局性的、高优先级的指令角色或输出规则。这能从根本上约束模型的回答范式。
适用场景:强制特定格式、扮演固定角色、设定安全或风格护栏。
示例:强制JSON格式输出
你是一个情感分析API。请始终将分析结果以严格的JSON格式返回,键为“sentiment”,值为“POSITIVE”、“NEUTRAL”或“NEGATIVE”之一。
用户输入:“我觉得还行吧。”
模型输出:
{ "sentiment": "NEUTRAL" }
专家建议:在开发AI应用或构建工作流时,系统提示是确保输出可被json解析的关键。
让模型扮演某个特定领域的专家或角色,其回答会更具该角色的风格和知识深度。
适用场景:创意写作、专业咨询、教学讲解、模拟对话。
示例:旅行向导
你现在是一名资深旅行向导,熟悉罗马的历史与文化。请为首次到访的游客列出3个必去景点,并附上简短的推荐理由。
模型输出:
玩法扩展:你可以让模型扮演“严格的代码审查员”、“耐心的编程教练”或“犀利的商业顾问”,从而获得不同视角的反馈。
要求模型展示其推理的中间步骤,尤其适用于数学、逻辑或复杂推理问题。这不仅能提高答案准确性,也便于我们判断
适用场景:数学计算、逻辑谜题、多步骤问题求解。
示例:年龄计算
请一步步推理:当我5岁时,我姐姐的年龄是我的两倍。现在我已经20岁了,请问我姐姐现在多少岁?
模型输出:
注意:思维链提示会增加生成内容的长度和Token消耗,在不需要解释过程时慎用。
提示词决定了内容的“方向”,而参数则控制了输出的“风格”和“边界”。
示例:控制故事风格
讲一个关于猫的短故事。
风格:活泼,不超过15个字
可能输出:猫咪追激光,像毛茸茸忍者翻沙发
讲一个关于猫的短故事。
风格:舒缓,不超过8个字
可能输出:猫咪在阳光下打盹
起步建议:从
Temperature=0.2开始,在稳定性和灵活性间取得比较好的平衡。
结合白皮书与我的实践经验,总结出以下要点:
上个月,我需要批量重命名一个目录下的所有文件。手动操作太蠢,自己写脚本又嫌麻烦。我决定用白皮书中的方法,让AI来干这个活。
我的提示词:
请生成一个安全、健壮的Python脚本,实现以下功能: 1. 提示用户输入一个文件夹路径。 2. 为该文件夹内的所有文件(不包括子文件夹)的文件名前添加前缀“old_”。 3. 需要包含完善的错误处理(如路径不存在、权限错误等)。 4. 代码需有清晰的中文注释。 请只输出代码。
AI生成的脚本:
import os def add_prefix_to_files(): """ 为指定文件夹内的所有文件添加前缀。 """ # 获取用户输入的文件夹路径并去除首尾空格 folder_path = input("请输入文件夹路径:").strip() # 检查路径是否存在且是一个目录 ifnot os.path.exists(folder_path): print(f"错误:路径 '{folder_path}' 不存在。") return ifnot os.path.isdir(folder_path): print(f"错误:'{folder_path}' 不是一个有效的文件夹。") return try: # 遍历文件夹中的所有项 for item_name in os.listdir(folder_path): original_path = os.path.join(folder_path, item_name) # 仅处理文件,忽略子文件夹 if os.path.isfile(original_path): new_name = "old_" + item_name new_path = os.path.join(folder_path, new_name) # 执行重命名 os.rename(original_path, new_path) print(f"已重命名:{item_name} -> {new_name}") # else: # print(f"跳过目录:{item_name}") print("\n所有文件重命名完成!") except PermissionError: print("错误:没有文件操作权限。请检查文件是否被其他程序占用。") except Exception as e: print(f"发生未知错误:{e}") if __name__ == "__main__": add_prefix_to_files()
效果评估:这段代码直接可用,包含了基本的错误处理,注释清晰。它完美地解决了我的需求。
但白皮书也提醒:永远要对AI生成的代码仔细检查,特别是涉及系统操作、数据安全或业务逻辑的部分。 它可能生成看似合理但有错误的代码。
人工智能并非完美,以下是我遇到过的问题,以及白皮书给出的解决建议:
问题:提示模糊导致答非所问
问题:模型“捏造”事实(幻觉)
问题:输出冗长或重复
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。