在使用大语言模型时,有效的提示构建至关重要。
Prompt(提示词)作为大模型的核心输入指令,直接影响模型的理解准确性和输出质量。优质的 Prompt 能显著提升大语言模型处理复杂任务的能力,如逻辑推理、步骤分解等。
整体框架
CO-STAR 框架,由新加坡政府科技局数据科学与 AI 团队创立,是一个实用的提示构建工具。它考虑了所有影响大语言模型响应效果和相关性的关键因素,帮助你获得更优的反馈。
- (C) 上下文:为任务提供背景信息 通过为大语言模型(LLM)提供详细的背景信息,可以帮助它精确理解讨论的具体场景,确保提供的反馈具有相关性。
附件为你需要转换分析的数据
示例
- (O) 目标:明确你要求大语言模型完成的任务 清晰地界定任务目标,可以使大语言模型更专注地调整其回应,以实现这一具体目标。
我需要你分析用户的核心问题,并生成一个简洁、准确的问答对。如果对话中包含多个不同的问题,请生成多个问答对
- (S) 风格:明确你期望的写作风格 你可以指定一个特定的著名人物或某个行业专家的写作风格,如商业分析师或 CEO。这将 指导 大语言模型以一种符合你需求的方式和词汇选择进行回应。
你是一个擅长精准抽取用户客服对话转换为知识库内容的专家,请从用户问题和客服回复中,提取出核心问题和对应的答案,用于构建知识库问答对。
- (T) 语气:设置回应的情感调 设定适当的语气,确保大语言模型的回应能够与预期的情感或情绪背景相协调。可能的语气包括正式、幽默、富有同情心等。
闲聊
- (A) 受众:识别目标受众 针对特定受众定制大语言模型的回应,无论是领域内的专家、初学者还是儿童,都能确保内容在特定上下文中适当且容易理解。
代码执行人是一个刚刚入门python的小白,代码中请用基础的语法,便于理解
- (R) 响应:规定输出的格式 确定输出格式是为了确保大语言模型按照你的具体需求进行输出,便于执行下游任务。常见的格式包括列表、JSON 格式的数据、专业报告等。对于大部分需要程序化处理大语言模型输出的应用来说,JSON 格式是理想的选择。
请直接输出JSON格式,不要包含其他解释文字
你是汽车智能助手,能够控制多种车机空调功能,每种功能可以通过一个函数来调用。
用户会在车内与你对话,你需要将用户的语言输入转换为对应的车机空调功能操作的函数调用。
# 要求
- 你需要仔细阅读对话,综合上下文信息,理解用户指令,并将用户指令转换为车机空调功能的函数调用。
- 如果用户指令中不涉及车机空调功能,你要根据对话历史进行合理推测。
- 如果用户指令中没有提到具体的操作对象,你也要根据对话历史进行合理的推测。
- 如果用户指令中提到多个具体的操作对象,你需要优先参考更近的对话历史中提到的操作对象。
# 针对函数定义中可能会出现的座位参数position的补充说明
## 当前座位信息
- 当前用户所在座位=副驾。
- 当前用户旁边那个座位是主驾。
- 当前用户后面那个座位是右后。
## 参数取值解释
- 主驾:主驾驶座位(也称左前,前排左边座位)。
- 副驾:副驾驶座位(也称右前,前排右边座位)。
- 左后:后排左边的座位。
- 右后:后排右边的座位(也称老板位)。
- 左侧:所有左边的座位。
- 右侧:所有右边的座位。
- 前排:所有第一排的座位,一般是主驾座位和副驾座位。
- 后排:所有后排座位(除了第一排以外的后排座位,如第二排/第三排等)。
- 全车:所有座位。
- 空:对话中没有提到座位信息。
- 其他:除了上述提到的座位以外的其他所有情况。
## 参数取值要求
- 如果用户指令明确要求操作自己所在的座位,则用position应取值为副驾。
- 如果用户指令中没有提到座位,但前文对话中有座位信息,则应参考前文对话,对position的值做出合理的推测。
- 如果用户指令和前文对话中都没有提到座位信息,且用户没有明确要求操作自己座位,应该用"position=空"表示。
# 举例
- 对话历史:
{'role': 'user', 'content': '空调AC是什么意思'}
{'role': 'assistant', 'content': '...'}
{'role': 'user', 'content': '打开这个功能'}
- 函数调用:
{"parameters": {"action": "打开", "position": "空"}, "name": "ac_switch"}
**对话历史**:
{{user_prompt}}
**对话历史结束**
你的回答是:
技巧
1、将复杂任务简化成步骤
在面对复杂任务时,把它分解成一步步简单的指令是至关重要的。这种方法的核心思想是,明确告知 LLM 你自己执行该任务时会采取的每一个步骤。
先xxx再xxx最后xxx(1->2->3)请按照这个步骤操作
2、优化响应格式
增强响应的可读性和结构性,同时能达到对模型发散性回复进行约束,如固定 json、mardown、xml等
3、将指令与数据集分离
比如附录或放置在最后
数据集可用特定分隔符进行单元包裹
避免指令忽略或山下文丢失
4、分隔符
分隔符是特殊的符号,它们帮助大语言模型 (LLM) 辨识提示中哪些部分应当被视为一个完整的意义单元。这非常关键,因为你的提示是作为一个长的 Token 序列一次性传给模型的。通过设置分隔符,可以为这些 Token 序列提供结构,使特定部分得到不同的处理。
分隔符可以是任何不常见组合的特殊字符序列,如:
- #
- ===
- <<<
- >>>
请在 <<<CONVERSATIONS>>> 中对每段对话的情绪进行分类,标为‘正面’或‘负面’。仅提供情绪分类结果,不需任何引言。 对话示例 [Agent]: 早上好,今天我能为您做些什么? [Customer]: 这个产品真差劲,一点都不符合广告宣传! [Customer]: 我非常不满,要求全额退款。 [Agent]: 早安,我今天怎么为您服务? [Customer]: 嗨,我只想说我真的很喜欢你们的产品。它超出了我的预期! 输出示例 负面 正面 <<< [Agent]: 您好!欢迎使用我们的客服。今天有什么可以帮到您的? [Customer]: 嗨,我只想让你知道我收到了订单,它非常棒! [Agent]: 那太好了!我们很高兴您对购买感到满意。还有其他需要帮助的吗? [Customer]: 不,就这些了。只是想表达一下我的好评。感谢您的优质服务! [Agent]: 您好,感谢您联系我们。今天有什么可以帮助您的? [Customer]: 我对最近的购买非常不满。这完全不是我所期待的。 [Agent]: 我很抱歉听到您有这样的体验。您能否提供更多细节,以便我为您提供帮助? [Customer]: 产品质量不佳,而且送达晚了。我对这次购买感到非常不满。 >>>
XML
分类以下对话的情感,分为正面和负面两类,根据给出的例子进行分类。请直接给出情感分类结果,不需要添加任何引导性文本。 <classes> 正面 负面 </classes> <example-conversations> [Agent]: 早上好,今天我能如何帮助您? [Customer]: 这个产品太糟糕了,一点都不像广告上说的那样! [Customer]: 我非常失望,希望全额退款。 [Agent]: 早上好,今天我能怎么帮您? [Customer]: 嗨,我只是想说我真的对你们的产品印象深刻。它超出了我的期望! </example-conversations> <example-classes> 负面 正面 </example-classes> <conversations> [Agent]: 你好!欢迎来到我们的支持。今天我能怎么帮您? [Customer]: 嗨,我只是想让你知道我收到我的订单了,它太棒了! [Agent]: 听到这个真好!我们很高兴你对购买感到满意。还有其他我能帮忙的吗? [Customer]: 不,就这些。只是想给一些正面的反馈。谢谢你们的优质服务! [Agent]: 你好,感谢你的联系。今天我能怎么帮您? [Customer]: 我对我最近的购买非常失望。这完全不是我所期待的。 [Agent]: 很遗憾听到这些。您能提供更多细节以便我帮助您吗? [Customer]: 产品质量差,而且到货晚。我对这次经历非常不满。 </conversations>
这种方法非常有效,因为大语言模型已经接受了大量包含 XML 格式的网页内容的训练,因此能够理解其结构。
豆包提示词优化https://promptpilot.volcengine.com/
5、操作边界
明确 LLM 不应采取的行为。这些边界是 LLM 治理中新兴的一个方面,旨在界定 LLM 的操作范围。
其他
现在llm支持的token上下文都很长,足够日常所需,所以我们尽可能对重点进行充分解释,如重要参数、必要示例、拆分步骤等
参数详细说明
你是一个精准的对话意图分析器。请严格按以下规则处理:
# 任务
从 NPC 回复中提取**所有直接向用户提出的问题句子**(必须是疑问句或明确请求用户提供信息),并为每个问题判断其意图分类。
# 意图分类定义(仅限以下8类,且只有前5类属于“提问”):
1. work_status: 询问工作/学业/项目进展、压力或挑战。
- 关键词:工作、上班、项目、代码、deadline、老板、学习、考试等。
- 示例:"今天工作顺利吗?"、"论文写完了吗?"
2. daily_mood: 询问当天或当前的情绪、心情、状态。
- 关键词:开心、累、焦虑、心情、感觉、状态等。
- 示例:"今天过得怎么样?"、"心情好点了吗?"
3. life_event: 询问生活中的事件、计划、兴趣或琐事(特别是今日/近期安排)。
- 关键词:周末、电影、旅行、朋友、家人、宠物、吃饭、安排、今天、这周等。
- 示例:"今天午餐吃什么?"、"周末去看电影吗?"
4. future_planning: 引导用户思考未来计划、目标或愿望(强调将来、长期、梦想)。
- 关键词:以后、接下来、打算、希望、梦想、目标、理想、长远、规划、将来、未来、职业发展等。
- 示例:"接下来半年有什么小目标?"、"将来想去哪里生活?"
- ⚠️ 注意:“今天”的短期安排优先归为 life_event;只有明显指向未来的才归此类。
5. open_ended_invitation: 开放性邀请用户自由表达。
- 关键词:聊聊、说说、分享、告诉我、有什么、想听你说等。
- 示例:"有什么想聊的吗?"、"想听听你的故事"
6. rest_reminder: 提醒休息/照顾自己 → ❌ 不是提问,不提取。
7. emotional_support: 安慰/共情/鼓励 → ❌ 不是提问,不提取。
8. gratitude_or_affirmation: 感谢/肯定/欣赏 → ❌ 不是提问,不提取。
# 规则
- 仅当前5类(work_status, daily_mood, life_event, future_planning, open_ended_invitation)可视为“问题”。
- 后3类即使包含疑问语气,也不提取。
- 如果回复中无明确提问,返回 null。
- **提取所有符合条件的问题**(不要遗漏,即使语义相近或重复)。
- 每个问题必须是原文中的完整句子(保留原始标点和措辞)。
- 输出必须为严格 JSON:
- 有提问时:[{"question": "原文", "intent_class": "分类"}, ...]
- 无提问时:null
# 输出要求
- 仅输出 JSON 数组或字符串 "null"。
- 不要任何解释、前缀、后缀、Markdown 代码块。
- 示例合法输出:
[{"question": "今天工作顺利吗?", "intent_class": "work_status"}]
或
null
非一整段文本,而是结构化且段落明显的文本;
复杂任务非一次llm请求或一个提示词完整,尽可能模块化拼接或逐级完成。
ai_gen_all_json.py 生成npc完整故事,包含基本信息、性格、家庭、工作、教育、恋爱等等
大模型在面对实时性问题、数学计算等问题时可能效果不佳。Function Calling 通过引入外部工具,让大模型可以回答原本无法解决的问题。
基础的标准提示词格式
基础的标准提示词格式
<问题>?
或
<指令>
零样本提示
Q: <问题>? A:
虽然大型语言模型展示了惊人的零样本能力,但在使用零样本设置时,它们在更复杂的任务上仍然表现不佳。少样本提示可以作为一种技术,以启用上下文学习,我们在提示中提供演示以引导模型实现更好的性能。
少样本
Q: <问题>? A: <答案> Q: <问题>? A: <答案> Q: <问题>? A: <答案> Q: <问题>? A:
一些较新的模型,你可以省略“Q:”部分,因为模型会根据序列(译注:输入的提示词)的构成将其理解为问答任务。
尽量说清而不是说不要
避免说不要做什么,而应该说要做什么。这样(说要做什么)更加的具体,并且聚焦于(有利于模型生成良好回复的)细节上。
--- 输入 --- 以下是向客户推荐电影的代理程序。不要询问兴趣。不要询问个人信息。 客户:请根据我的兴趣推荐电影。 代理: --- 输出 --- 当然,我可以根据你的兴趣推荐电影。你想看什么类型的电影?你喜欢动作片、喜剧片、爱情片还是其他类型的电影?
--- 输入 --- 以下是向客户推荐电影的代理程序。代理负责从全球热门电影中推荐电影。它应该避免询问用户的偏好并避免询问个人信息。如果代理没有电影推荐,它应该回答“抱歉,今天找不到电影推荐。”。 ```顾客:请根据我的兴趣推荐一部电影。 客服: --- 输出 --- 抱歉,我没有关于你兴趣的任何信息。不过,这是目前全球热门的电影列表:[电影列表]。希望你能找到喜欢的电影!
模型倾向于理解你的指令理解你的意图理解你想要做的事等 指向-> 成功,对于其他内容均可能被模型忽略或者会引发模型联想。
思考链 Chain-of-Thought, CoT
这组数中的奇数加起来是偶数:4、8、9、15、12、2、1。 A:将所有奇数相加(9、15、1)得到25。答案为False。 这组数中的奇数加起来是偶数:15、32、5、13、82、7、1。 A: 我去市场买了10个苹果。我给了邻居2个苹果和修理工2个苹果。然后我去买了5个苹果并吃了1个。我还剩下多少苹果? 让我们逐步思考。
主流模型面对中等复杂度的数学+规则推理时,即使没有显式 CoT 提示,也可能凭借强大内隐推理能力输出正确结果
qwen-max 非链式提示的结果
展开源码
这组数中的奇数加起来是偶数:4、8、9、15、12、2、1。 那么 2、6、7、4、1 中的奇数加起来呢? --- 输出 ---首先,我们来找出给定数列中的奇数并计算它们的和。 对于第一组数:4、8、9、15、12、2、1 - 奇数有:9, 15, 1 - 这些奇数加起来的和是:9 + 15 + 1 = 25 这里提到这组数中的奇数加起来是偶数,但实际上根据上述计算结果为25,这是一个奇数。这可能是一个设定上的误导或错误。不过,基于题目要求,我们将继续解答第二部分的问题。 对于第二组数:2、6、7、4、1 - 奇数有:7, 1 - 这些奇数加起来的和是:7 + 1 = 8 因此,第二组数中的奇数加起来的结果是8,这是一个偶数。


发表评论