编写prompt的原则

📅 2026/6/25 21:37:04
编写prompt的原则
1.编写明确且具体的指令通过提供尽可能清晰和具体的指令来表达希望模型执行的操作。这将引导模型给出正确的输出并减少得到无关或不正确响应的可能。注意编写清晰的指令不意味着简短的指令因为在许多情况下更长的提示更清晰且提供了更多上下文可能导致更详细和相关的输出。策略一使用分隔符清晰地表示输入的不同部分将特定的文本部分和提示的其余部分隔开例如prompt f 把用三个反引号括起来的文本总结成一句话。 {text} # 指令内容使用 来分隔指令和待总结的内容这一策略可避免提示词冲突提示词冲突是指如果允许用户向提示词中添加一些输入则可能会给出与预期任务不符的指令导致遵循的不是自己想要的指令。策略二要求一个结构化的输出可以是 JSON、HTML 等格式。该策略要求生成一个结构化的输出这可以使模型的输出更容易被解析在 Python 中将其读入字典或列表中。例如prompt f 请生成包括书名、作者和类别的三本虚构书籍清单\ 并以 JSON 格式提供其中包含以下键:book_id、title、author、genre。 response get_completion(prompt) print(response)结果{ books: [ { book_id: 1, title: The Shadow of the Wind, author: Carlos Ruiz Zafón, genre: Mystery }, { book_id: 2, title: The Name of the Wind, author: Patrick Rothfuss, genre: Fantasy }, { book_id: 3, title: The Hitchhikers Guide to the Galaxy, author: Douglas Adams, genre: Science Fiction } ] }策略三要求模型检查是否满足条件。要求模型在执行前先验证假设如果不符即停止同时预判边缘情况并制定应对策略以防意外错误。例如# 有步骤的文本 text_1 f 泡一杯茶很容易。首先需要把水烧开。\ 在等待期间拿一个杯子并把茶包放进去。\ 一旦水足够热就把它倒在茶包上。\ 等待一会儿让茶叶浸泡。几分钟后取出茶包。\ 如果你愿意可以加一些糖或牛奶调味。\ 就这样你可以享受一杯美味的茶了。 prompt f 您将获得由三个引号括起来的文本。\ 如果它包含一系列的指令则需要按照以下格式重新编写这些指令 第一步 - ... 第二步 - … … 第N步 - … 如果文本中不包含一系列的指令则直接写“未提供步骤”。 \\\{text_1}\\\ response get_completion(prompt) print(Text 1 的总结:) print(response)结果Text 1 的总结: 第一步 - 把水烧开。 第二步 - 拿一个杯子并把茶包放进去。 第三步 - 把烧开的水倒在茶包上。 第四步 - 等待几分钟让茶叶浸泡。 第五步 - 取出茶包。 第六步 - 如果你愿意可以加一些糖或牛奶调味。 第七步 - 就这样你可以享受一杯美味的茶了。策略四提供少量示例即在要求模型执行实际任务之前提供给它少量成功执行任务的示例。prompt f 你的任务是以一致的风格回答问题。 孩子: 教我耐心。 祖父母: 挖出最深峡谷的河流源于一处不起眼的泉眼最宏伟的交响乐从单一的音符开始最复杂的挂毯以一根孤独的线开始编织。 孩子: 教我韧性。 response get_completion(prompt) print(response)结果祖父母: 韧性就像是一棵树它需要经历风吹雨打、寒冬酷暑才能成长得更加坚强。在生活中我们也需要经历各种挫折和困难才能锻炼出韧性。记住不要轻易放弃坚持下去你会发现自己变得更加坚强。2.给模型时间去思考针对模型因任务复杂而匆忙得出错误结论的情况建议通过重构查询强制模型在输出最终答案前进行多步推理。给予模型更多的“思考时间”以分配充足的计算资源能有效提升复杂任务的准确性。策略一指定完成任务所需的步骤prompt_2 f 1-用一句话概括下面用括起来的文本。 2-将摘要翻译成英语。 3-在英语摘要中列出每个名称。 4-输出一个 JSON 对象其中包含以下键English_summarynum_names。 请使用以下格式 文本要总结的文本 摘要摘要 翻译摘要的翻译 名称英语摘要中的名称列表 输出 JSON带有 English_summary 和 num_names 的 JSON Text: {text} response get_completion(prompt_2) print(\nprompt 2:) print(response)策略二指导模型在下结论之前找出一个解决方案例如prompt f 请判断学生的解决方案是否正确请通过如下步骤解决这个问题 步骤 首先自己解决问题。 然后将你的解决方案与学生的解决方案进行比较并评估学生的解决方案是否正确。在自己完成问题之前请勿决定学生的解决方案是否正确。 使用以下格式 问题问题文本 学生的解决方案学生的解决方案文本 实际解决方案和步骤实际解决方案和步骤文本 学生的解决方案和实际解决方案是否相同是或否 学生的成绩正确或不正确 问题 我正在建造一个太阳能发电站需要帮助计算财务。 - 土地费用为每平方英尺100美元 - 我可以以每平方英尺250美元的价格购买太阳能电池板 - 我已经谈判好了维护合同每年需要支付固定的10万美元并额外支付每平方英尺10美元 作为平方英尺数的函数首年运营的总费用是多少。 学生的解决方案 设x为发电站的大小单位为平方英尺。 费用 1. 土地费用100x 2. 太阳能电池板费用250x 3. 维护费用100,000100x 总费用100x250x100,000100x450x100,000 实际解决方案和步骤 response get_completion(prompt) print(response)结果正确的解决方案和步骤 1. 计算土地费用100美元/平方英尺 * x平方英尺 100x美元 2. 计算太阳能电池板费用250美元/平方英尺 * x平方英尺 250x美元 3. 计算维护费用10万美元 10美元/平方英尺 * x平方英尺 10万美元 10x美元 4. 计算总费用100x美元 250x美元 10万美元 10x美元 360x 10万美元 学生的解决方案和实际解决方案是否相同否 学生的成绩不正确3.局限性虚假知识模型偶尔会生成一些看似真实实则编造的知识模型在训练过程中接触了大量的知识但它并没有完全记住所见的信息因此它并不很清楚自己知识的边界。这意味着它可能会尝试回答有关晦涩主题的问题并编造听起来合理但实际上并不正确的答案。我们称这些编造的想法为幻觉。因此我们要根据以上策略来避免模型给出虚假知识且另一个方法是要求模型先定位源文本中的相关引用再基于这些引用生成答案通过追溯源文档来提升准确性。