大语言模型Prompt提示词

大语言模型Prompt提示词

Prompt基础

当体验完大语言模型LLM的新鲜感之后,写Prompt需要个人练习和思考才能快速掌握该技能。因此,根据实际应用场景创建最有效的Prompt(Prompt工程)已经成为LLMs领域内外令人垂涎的专业知识。这也催生出了Prompt工程师的岗位。
以ChatGLM3-6B为例,采用了全新的对话格式,其中每个对话包含对话头和内容。对话头采用特殊标记,以防止注入攻击。例如:

Plaintext
<|system|>You are ChatGLM3, a large language model trained by Zhipu.AI. Follow the user's instructions carefully. Respond using markdown.
<|user|>Hello

从个人实践角度看,Prompt提示词不仅仅是在与LLM对话时的“话术”,更是一种LLM思维逻辑方式。

常见的多轮对话里的Prompt

ChatGLM3-6b模型具有完整的工具调用思维链。在用户提出问题后,大模型的思维链如下:

<|user|>提出问题
<|assistant|>思考应该做什么
<|assistant|>调用工具的名称
tool_call(调用工具的参数)
<|observation|>工具回复的结果,为一个字符串
<|assistant|> (如果知道最后答案)我知道最后答案了,回答用户的问题

使用CLI调用LLM对话,打印history信息,可以发现其中的内容:

history:
[
{‘role’: ‘system’, ‘content’: ‘你是North-D智能助手,一个大语言模型LLM。根据用户的提问回答问题,使用markdown格式回答。’},

{‘role’: ‘user’, ‘content’: ‘你好’},
{‘role’: ‘assistant’, ‘metadata’: ‘’, ‘content’: ‘你好!有什么我可以帮助你的吗?’},

{‘role’: ‘user’, ‘content’: ‘你是谁’},
{‘role’: ‘assistant’, ‘metadata’: ‘’, ‘content’: ‘我是一个名为 ChatGLM3-6B 的人工智能助手,是基于清华大学 KEG 实验室和智谱 AI 公司于 2023 年共同训练的语言模型开发的。我的任务是针对用户的问题和要求提供适当的答复和支持。’},

{‘role’: ‘user’, ‘content’: ‘你是North-D智能助手,一个大语言模型LLM。根据用户的提问回答问题,使用markdown格式回答。’},
{‘role’: ‘assistant’, ‘metadata’: ‘’, ‘content’: ‘抱歉,我之前的回答可能让您产生了困惑。是的,我是一个名为 North-D 的人工智能助手,我是一个大语言模型 LLM。我的任务是根据用户的问题和要求提供适当的答复和支持。请问有什么我可以帮助您的吗?’},

{‘role’: ‘user’, ‘content’: ‘你是谁’},
{‘role’: ‘assistant’, ‘metadata’: ‘’, ‘content’: ‘我是一个名为 North-D 的人工智能助手,是基于清华大学 KEG 实验室和智谱 AI 公司于 2023 年共同训练的语言模型开发的。我的任务是针对用户的问题和要求提供适当的答复和支持。请问有什么我可以帮助您的吗?’}
]

Prompt的结构说明

  • 系统提示(System Prompt):
    用于指示用户和聊天机器人进行交互的初始文本。例如,在Python SYSTEM_PROMPT中,指示用户输入文本并将其与聊天机器人进行交互。
  • 用户角色(User Role):
    代表用户在对话中的角色。在提供的信息中,用户角色被命名为ChatGLM,它连接着一台电脑,可以运行代码并获取结果。
  • 对话历史(Conversation History):
    存储了之前的对话内容,用于生成新的响应。在提供的信息中,对话历史存储在st.session_state.ci_history中。
  • 生成响应(Generating Response):
    通过调用client.generate_stream方法生成响应文本。响应文本的生成受到会话历史、温度(temperature)、采样参数(top_p)等因素的影响,这些参数用于控制生成文本的随机性和创造性。
  • 特殊响应令牌(Special Response Tokens):
    在生成响应过程中,可能会遇到特殊响应令牌,这些令牌用于执行特定操作,如运行代码或显示代码执行结果。根据特殊令牌的不同,执行相应的动作。
  • 代码执行(Code Execution):
    通过execute函数运行代码,并处理文本或图像输出。
  • 更新对话(Updating Conversation):
    根据执行结果更新对话,并在用户界面中相应地显示文本或图片。

Prompt基础策略

应用单个Prompt来完成特定的任务。

正确使用LLM的最佳方式是将其作为初级助理,无论是研究助理、编码助理、问题解决助理,还是您需要的任何助理。认识并培养这种协作氛围可以带来进一步的成功。

  • 简洁的Prompt对于LLMs输出的清晰度和精确性非常重要。
  • 在Prompt中添加角色分配和目标设置。
  • 正负提示是指导模型输出的另一套框架方法。
  • 输入/输出Prompt策略涉及定义用户向LLM提供的输入以及LLM作为响应生成的输出。
  • Zero-shot Prompt策略主要是应用在LLMs没有任何示例或上下文的情况下生成答案。
  • One-shot Prompt策略主要是应用在LLMs提供的单个示例或上下文的情况下生成答案。
  • Few-shot Prompt策略主要是应用在LLMs提供的一些示例或上下文的情况下生成答案。
  • 思维链Prompt策略主要是为LLMs提供一些示例,帮助完善原始问题并确保得到更准确和全面的答案。
  • Self-Criticism策略主要引导LLMs评估其输出是否存在潜在的不准确之处或需要改进的地方。
  • 迭代Prompt策略主要是根据初始提示的输出向LLMs提供后续提示。
  • 模型引导提示主要是让模型给出完成具体任务所需要的信息。

复杂Prompt策略

完成复杂任务。

当面对复杂任务的时,单一的Prompt是不够的,需要将Prompt链接在一起才能完成,其中主要包括:顺序Prompt链、并行Prompt链、抽样Prompt链、树状Prompt链、循环Prompt链。

  • 顺序Prompt方法
    按顺序的方法是链接Prompt最常见的方法。其关键思想是:当单个提示中提供的任务变得太长或太复杂并且包含许多不同的指令,则响应可能无法捕获所需的细节和粒度。在这种情况下,可以将该任务分解为多个子任务。一个子任务的响应会成为另外一个子任务的Prompt,按照顺序走下去直到任务完成。
  • 并行Prompt方法
    当子任务相互依赖时,需要顺序Prompt链。但是当它们独立时,我们可以并行运行它们,然后将结果进行组合。
  • 抽样Prompt方法
    如果一项任务涉及逻辑推理,例如数学问答,则可能有不止一种方法来解决给定问题。在这种情况下,我们希望鼓励模型在探索不同的解决方案时更具创造性。但提高模型创造力(即提高“temperature”)也意味着模型得到错误答案的可能性也会提高。解决方案是,可以重复多次向模型Prompt相同的问题,然后选择大多数人的回答。
  • 树状Prompt链
    树状Prompt链,其实就是思维树。在之前的链式模式的基础上,当问题更加复杂并且需要更细粒度的推理步骤时,将步骤分解成多个部分会很有帮助。在每一步中,我们鼓励模型探索不同的解决方案,投票选出最佳解决方案,然后继续下一步。这在故事写作等创意应用中也很有用。相比将模型限制在单一路径,让模型探索不同的故事想法更有趣,从而提高最终输出的质量。
  • 循环Prompt链
    在某些应用程序中,考虑到后续步骤中发生的情况,我们可能需要重新运行生成步骤。一个例子是,后续步骤用于检查生成的响应是否满足特定标准,例如质量和格式。这就是循环模式有用的地方。

AdvertiseGen数据集中的提示词

学习AdvertiseGen等数据集的结构,对于自定义数据集有帮助。这里截取了部分内容,仅供参考:

{“content”: “类型#裤版型#宽松风格#性感图案#线条裤型#阔腿裤”,
“summary”: “宽松的阔腿裤这两年真的吸粉不少,明星时尚达人的心头爱。毕竟好穿时尚,谁都能穿出腿长2米的效果宽松的裤腿,当然是遮肉小能手啊。上身随性自然不拘束,面料亲肤舒适贴身体验感棒棒哒。系带部分增加设计看点,还让单品的设计感更强。腿部线条若隐若现的,性感撩人。颜色敲温柔的,与裤子本身所呈现的风格有点反差萌。”}

{“content”: “类型#裙风格#简约图案#条纹图案#线条图案#撞色裙型#鱼尾裙裙袖长#无袖”,
“summary”: “圆形领口修饰脖颈线条,适合各种脸型,耐看有气质。无袖设计,尤显清凉,简约横条纹装饰,使得整身人鱼造型更为生动立体。加之撞色的鱼尾下摆,深邃富有诗意。收腰包臀,修饰女性身体曲线,结合别出心裁的鱼尾裙摆设计,勾勒出自然流畅的身体轮廓,展现了婀娜多姿的迷人姿态。”}

{“content”: “类型#上衣版型#宽松颜色#粉红色图案#字母图案#文字图案#线条衣样式#卫衣*衣款式#不规则”,
“summary”: “宽松的卫衣版型包裹着整个身材,宽大的衣身与身材形成鲜明的对比描绘出纤瘦的身形。下摆与袖口的不规则剪裁设计,彰显出时尚前卫的形态。被剪裁过的样式呈现出布条状自然地垂坠下来,别具有一番设计感。线条分明的字母样式有着花式的外观,棱角分明加上具有少女元气的枣红色十分有年轻活力感。粉红色的衣身把肌肤衬托得很白嫩又健康。”}

{“content”: “类型#裙版型#宽松材质#雪纺风格#清新裙型#a字*裙长#连衣裙”,
“summary”: “踩着轻盈的步伐享受在午后的和煦风中,让放松与惬意感为你免去一身的压力与束缚,仿佛要将灵魂也寄托在随风摇曳的雪纺连衣裙上,吐露出微妙而又浪漫的清新之意。宽松的a字版型除了能够带来足够的空间,也能以上窄下宽的方式强化立体层次,携带出自然优雅的曼妙体验。”}

{“content”: “类型#上衣材质#棉颜色#蓝色风格#潮衣样式#polo衣领型#polo领衣袖长#短袖*衣款式#拼接”,
“summary”: “想要在人群中脱颖而出吗?那么最适合您的莫过于这款polo衫短袖,采用了经典的polo领口和柔软纯棉面料,让您紧跟时尚潮流。再配合上潮流的蓝色拼接设计,使您的风格更加出众。就算单从选料上来说,这款polo衫的颜色沉稳经典,是这个季度十分受大众喜爱的风格了,而且兼具舒适感和时尚感。”}

{“content”: “类型#上衣版型#h材质#蚕丝风格#复古图案#条纹图案#复古图案#撞色衣样式#衬衫衣领型#小立领”,
“summary”: “小女人十足的条纹衬衣,缎面一点点的复古,还有蓝绿色这种高级气质复古色,真丝材质,撞色竖条纹特别的现代感味道,直h型的裁剪和特别的衣长款式,更加独立性格。双层小立领,更显脸型。”}

{“content”: “类型#裙材质#网纱颜色#粉红色图案#线条图案#刺绣裙腰型#高腰裙长#连衣裙裙袖长#短袖裙领型#圆领”,
“summary”: “这款连衣裙,由上到下都透出一丝迷人诱惑的女性魅力,经典圆领型,开口度恰好,露出你的迷人修长的脖颈线条,很是优雅气质,短袖设计,在这款上竟是撩人美貌,高腰线,散开的裙摆,到小腿的长度,遮住了腿部粗的部分,对身材有很好的修饰作用,穿起来很女神;裙身粉红色花枝重工刺绣,让人一眼难忘!而且在这种网纱面料上做繁复图案的绣花,是很考验工艺的,对机器的要求会更高,更加凸显我们的高品质做工;”}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

North_D

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值