Prompt最初是NLP(自然语言处理)研究者为下游任务设计出来的一种任务专属的输入模板,类似于一种任务(例如:分类、聚类等)会对应一种Prompt。
我们每一次访问大模型的输入为一个Prompt,而大模型给我们的返回结果则被称为Completion
LLM生成是具有随机性的,在模型的顶层通过选取不同的预测概率的预测结果来生成最后的结果。
我们一般可以通过控制temperature参数来控制LLM生成结果的随机性与创造性。
Temperature一般取值在0~1之间
事实上,它并不在大模型本身训练中得到体现,而是大模型服务方为提升用户体验锁设置的一种策略。
具体来说,在使用ChatGpt API时,你可以设置两种Prompt:
pythonimport qianfan, os
from dotenv import load_dotenv, find_dotenv
# 读取本地/项⽬的环境变量。
# find_dotenv() 寻找并定位 .env ⽂件的路径
# load_dotenv() 读取该 .env ⽂件,并将其中的环境变量加载到当前的运⾏环境中
# 如果你设置的是全局的环境变量,这⾏代码则没有任何作⽤。
_ = load_dotenv(find_dotenv())
def gen_wenxin_messages(prompt):
'''
构造⽂⼼模型请求参数 messages
请求参数:
prompt: 对应的⽤户提示词
'''
messages = [{"role": "user", "content": prompt}]
return messages
def get_completion(prompt, model="ERNIE-Bot", temperature=0.01):
'''
获取⽂⼼模型调⽤结果
请求参数:
prompt: 对应的提示词
model: 调⽤的模型,默认为 ERNIE-Bot,也可以按需选择 ERNIE-Bot-4 等其他模型
temperature: 模型输出的温度系数,控制输出的随机程度,取值范围是 0~1.0,且不能
设置为 0。温度系数越低,输出内容越⼀致。
'''
chat_comp = qianfan.ChatCompletion()
message = gen_wenxin_messages(prompt)
resp = chat_comp.do(messages=message,
model=model,
temperature = temperature,
system="你是⼀名个⼈助理-⼩鲸⻥")
return resp["result"]
print(get_completion("你好,介绍⼀下你⾃⼰"))
"""
参数解释:
· messages,即调⽤的 prompt。⽂⼼的 messages 配置与 ChatGPT 有⼀定区别,其不⽀持
max_token 参数,由模型⾃⾏控制最⼤ token 数,messages 中的 content 总⻓度、
functions 和 system 字段总内容不能超过 20480 个字符,且不能超过 5120 tokens,否则模
型就会⾃⾏对前⽂依次遗忘。⽂⼼的 messages 有以下⼏点要求:① ⼀个成员为单轮对话,多个成员
为多轮对话;② 最后⼀个 message 为当前对话,前⾯的 message 为历史对话;③ 成员数⽬必须为
奇数,message 中的 role 必须依次是 user、assistant。注:这⾥介绍的是 ERNIE-Bot 模型
的字符数和 tokens 限制,⽽参数限制因模型⽽异,请在⽂⼼千帆官⽹查看对应模型的参数说明。
· stream,是否使⽤流式传输。
· temperature,温度系数,默认 0.8,⽂⼼的 temperature 参数要求范围为 (0, 1.0],不能
设置为 0。
"""
对于具有较强⾃然语⾔理解、⽣成能⼒,能够实现多样化任务处理的⼤语⾔模型(LLM) 来说,⼀个好的 Prompt 设计极⼤地决定了其能⼒的上限与下限。
如何去使⽤ Prompt,以充分发挥 LLM 的性能?
⾸先我们需要知道设计 Prompt 的原则,它们是每⼀个开发者设计 Prompt 所必须知道的基础概念。
本节讨论了设计⾼效 Prompt 的两个关键原则:编写清晰、具体的指令和给予模型充⾜思考时间。掌握这两点,对创建可靠的语⾔模型交互尤为重要。
原则1:编写清晰、具体的指令
,""",< >, ,: 等做分隔符,只要能明确起到隔断作⽤即可。
注
使⽤分隔符尤其需要注意的是要防⽌提示词注⼊(Prompt Rejection)。什 么是提示词注⼊?
就是⽤户输⼊的⽂本可能包含与你的预设 Prompt 相冲突的内容,如果不加分隔, 这些输⼊就可能“注⼊”并操纵语⾔模型,轻则导致模型产⽣毫⽆关联的不正确的输 出,严重的话可能造成应⽤的安全⻛险。
原则2:给予模型充足思考时间
注意
在开发与应⽤语⾔模型时,需要注意它们可能⽣成虚假信息的⻛险。尽管模型 经过⼤规模预训练,掌握 了丰富知识,但它实际上并没有完全记住所⻅的信息, 难以准确判断⾃⼰的知识边界,可能做出错误推断。
若让语⾔模型描述⼀个不存在的产品,它可能会⾃⾏构造出似是⽽⾮的细节。这被称为“幻觉” (Hallucination),是语⾔模型的⼀⼤缺陷。
本文作者:Eric
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!