halo~我是bay_Tong桐小白
本文内容是桐小白个人对所学知识进行的总结和分享,知识点会不定期进行编辑更新和完善,了解最近更新内容可参看更新日志,欢迎各位大神留言、指点
感谢新老朋友给予过的关心,过去经历了很多,身心状态慢慢调整,因此更新文章较慢,给关注我的新老朋友道声抱歉,也再次给对桐小白给予关心的新老朋友表示感谢~
Prompt提示词工程(初步)
【更新日志】
最近更新:
- 暂无编辑记录,持续更新中……
大模型分类
基础大模型(Base LLM):基于文本训练数据,来预测文字内容,做文字接龙
指令调整型大模型(Instruction Tuned LLM):
- 使用已经在大量文本数据上训练过的基础大模型
- 使用输入和输出的指令来进行微调,让它更好地遵循这些指令
- RLHF(人类反馈强化学习)进一步优化,使系统能更好地提供帮助和遵循指令
RLHF(Reinforcement Learning fromHuman Feedback,人类反馈强化学习) 起到的作用是,通过将人类的反馈纳入训练过程,为机器提供了一种自然的、人性化的互动学习过程。详细见百度百科
prompt就是遵循了指令调整型大模型的设计理念而生的概念
prompt基本概念
- 需求设想:图灵测试,设计一个智能的聊天机器人,实现人机交流
早期实现:最早的与人对话程序伊莉莎(Eliza),通过大量if-else进行文本的匹配生成,是世界上第一个真正意义上的聊天机器人 - prompt:通俗讲跟大模型说的每一句话都是prompt,即告诉大模型想要生成的内容
- prompt工程:通过优化输入提示来提升模型的输出质量
简单说 prompt 就是给大模型一个明确的任务说明书,告诉模型需求,引导模型做出相应的响应,使其更精准更高质量完成指定任务,最常见于使用大模型进行交互
prompt功能特点
指南(guidelines for prompt)
大模型的局限性:幻觉问题,通过大量数据生成的文本信息可能与事实或专业知识的真实性发生偏离,也即大模型在大量数据信息下可能会发生信息错乱,如林黛玉倒拔垂杨柳
最基本解决策略:遵循良好的prompt原则,例如
- 要求模型首先从文本中找到相关引用
- 要求它使用这些引用来回答问题,并且可以追溯答案回源文档
大模型本身存在很多局限性,相应技术也在其发展和使用过程中不断进行完善,因此大模型存在的缺陷以及相应的针对方法会在不同的大模型技术中多次提及
prompt原则
一、填写明确和具体的指令
- 给到大模型尽可能清晰的提示说明,尽可能详细地描述问题的需求,避免模糊的词语
- 使用分隔符清楚地指示输入的不同部分,可以避免提示冲突,如:请对<>中的文本进行翻译 <我是一篇人工智能笔记>
在代码开发中,prompt通常使用模板与输入结合的方式
> 提示冲突:如果允许用户向提示中添加一些输入,他们可能会给出与你想要的任务不相符的指令导致模型遵循用户的指令,类似与**SQL注入同理的提示词注入**
- 少量训练提示,即在模型执行任务之前,提供成功执行任务的示例
- 结构化输出,要求大模型按照指定格式进行回答(如HTML、JSON等)
- 要求模型检查是否满足条件,如果不满足则输出无法进行回答
二、给模型足够的时间思考
- 指定完成任务所需的步骤(即思考的路径),即CoT思维链技巧
- 指示模型在匆忙做出结论之前思考解决方案,如要求大模型判断给定的文本是否符合某一要求时,指示大模型先对问题进行思考,得出的结果再拿去和给定的文本进行对比和判断,综合给出回答
迭代(iterative prompt development)
prompt工程是一个不断迭代使用的过程,没有一个适合所有场景的完美提示,提示词的使用需要在不断的提示→输出→修改提示→再输出的迭代过程中逐步优化提示与输出结果
- prompt提示开发本身就是一个迭代的过程,好的提示工程师的关键并不在于知道完美的提示,而在于拥有开发对应用程序有效提示的良好过程
- 当复杂的应用需要大量的用例时,需要在不断迭代开发提示的过程中,根据大量案例进行评估;
- 当应用程序趋于成熟时,可以通过测试大量参数表的不同提示以查看多个事实的平均或最好最坏情况表现
通过prompt完成常用功能(摘要、推理、转换、扩展)
- 摘要:对文本进行梗概,常用于归纳总结、概括、说明
- 推理:对文本进行分析,理解文本情感做出评价;提取分析文本的主题、关键词(即零样本/少样本学习)
- 转换:将输入文本转换为不同格式,并可以完成翻译、帮助拼写、语法纠正、格式转换、语气语调风格变换等功能
- 扩展:结合prompt所有特性,生成更长更自由形式的响应
temperature属性: 表示模型的探索程度或随机性,用于改变模型响应的多样性,参数默认为0.7,范围在0-1之间
- 如果想构建可靠的可预测的系统,设参数为0
- 如果想用更有创意的方式使用模型获得更广泛的不同输出,可以将参数设高
自定义聊天机器人
一般组成部分:LLM(大模型配置)、messages(传给大模型的消息)、response(大模型生成的回复)
LLM中通常配置大模型的api_key等信息
messages作为传给大模型的消息,通常分role和content两个部分:
role属性给大模型设置好某条消息的身份
system:系统消息,用于设置助手行为和人设,引导它的回应
user:用户消息,表示该消息为用户的输如内容
assistant:助手消息,表示该消息为大模型的输出回复内容
content是大模型交互的依据,被称为上下文
- 与大语言模型的每次对话都是独立的交互,这也意味着大模型不具有记忆功能
- 如果希望模型从先前的对话部分中提取或记住信息,则必须将这部分输入存入上下文,也就是说意味着每次对话必须提供当前对话中需要的所有相关消息,以供模型使用
response用于接收大模型生成的所有内容
因此一个完整功能的自定义聊天机器人实现通常包含以下步骤:
- 设置好大模型调用的相关配置
- 定义好role,从用户输入获取prompt,将用户的输入、模型的回应,均追加到上下文列表中
- 每次使用上下文进行模型的调用
持续更新中……
我是桐小白,一个摸爬滚打的计算机小白