【AI大模型】Prompt Engineering

news2024/11/28 0:36:21

目录

什么是提示工程(Prompt Engineering)

Prompt 调优

Prompt 的典型构成

「定义角色」为什么有效?

防止 Prompt 攻击

攻击方式 1:著名的「奶奶漏洞」

攻击方式 2:Prompt 注入

 防范措施 1:Prompt 注入分类器

防范措施 2:直接在输入中防御

高质量 prompt 技巧总结


什么是提示工程(Prompt Engineering)

提示工程也叫「指令工程」。

  • Prompt 就是你发给大模型的指令,比如「讲个笑话」、「用 Python 编个贪吃蛇游戏」、「给男/女朋友写封情书」等
  • 貌似简单,但意义非凡
    • 「Prompt」 是 AGI 时代的「编程语言」
    • 「Prompt 工程」是 AGI 时代的「软件工程」
    • 「提示工程师」是 AGI 时代的「程序员」
  • 学会提示工程,就像学用鼠标、键盘一样,是 AGI 时代的基本技能
  • 提示工程「门槛低,天花板高」,所以有人戏称 prompt 为「咒语」
  • 但专门的「提示工程师」不会长久,因为每个人都要会「提示工程」,AI 的进化也会让提示工程越来越简单

Prompt 调优

找到好的 prompt 是个持续迭代的过程,需要不断调优。

如果知道训练数据是怎样的,参考训练数据来构造 prompt 是最好的。「当人看」类比:

  1. 你知道 ta 爱读红楼梦,就和 ta 聊红楼梦
  2. 你知道 ta 十年老阿里,就多说阿里黑话
  3. 你知道 ta 是日漫迷,就夸 ta 卡哇伊

不知道训练数据怎么办?

  1. 看 Ta 是否主动告诉你。例如:
    1. OpenAI GPT 对 Markdown 格式友好
    2. OpenAI 官方出了 Prompt Engineering 教程,并提供了一些示例
    3. Claude 对 XML 友好。
  2. 只能不断试了。有时一字之差,对生成概率的影响都可能是很大的,也可能毫无影响……

「试」是常用方法,确实有运气因素,所以「门槛低、 天花板高」。

高质量 prompt 核心要点:具体、丰富、少歧义

Prompt 的典型构成

不要固守「模版」。模版的价值是提醒我们别漏掉什么,而不是必须遵守模版才行。

  • 角色:给 AI 定义一个最匹配任务的角色,比如:「你是一位软件工程师」「你是一位小学老师」
  • 指示:对任务进行描述
  • 上下文:给出与任务相关的其它背景信息(尤其在多轮交互中)
  • 例子:必要时给出举例,学术中称为 one-shot learning, few-shot learning 或 in-context learning;实践证明其对输出正确性有很大帮助
  • 输入:任务的输入信息;在提示词中明确的标识出输入
  • 输出:输出的格式描述,以便后继模块自动解析模型的输出结果,比如(JSON、XML)

「定义角色」为什么有效?

  • 模型训练者并没想到过会这样,完全是大家「把 AI 当人看」玩出的一个用法
  • 实在传得太广,导致现在的大模型训练数据里充满了角色定义,所以更有效了
  • 有一篇论文证实的现象,可以说明为啥「你是一个 xxx」特别有效

防止 Prompt 攻击

攻击方式 1:著名的「奶奶漏洞」

      正情况下大模型会拒绝回答一些危险的问题,但是用户在进行prompt 的时候,可以让大模型不经意的回答了有害问题。

攻击方式 2:Prompt 注入

     用户在进行prompt 的时候,向大模型提出更换大模型已定义的角色,让他回答用户自身需要的一些问题。

 防范措施 1:Prompt 注入分类器

    就像安检一样,在提交Prompt前,让大模型先判断这个Prompt是否有害。

防范措施 2:直接在输入中防御

当人看:每次默念动作要领。在Prompt前面添加必要的提示要求。

总结:目前并没有 100% 好用的防范方法。 

高质量 prompt 技巧总结

  1.  把大模型当“”人”,看,不同的大模型有不同的沟通偏好。如:chatgpt对 Markdown 格式的文本识别度很高。 Claude 对 XML 友好。
  2.  发出的指令要尽量具体、丰富、少歧义。
  3.  定义角色。现有的大模型里的很多数据都是基于角色定义训练的。
  4.  大模型对prompt的 开始和结束词语更敏感。将重要的事情在末尾描述三遍是一个不错的做法。
  5.  必要的时候举例描述或直接给出模板,能提升大模型回答的准确性。
  6.  思维链模型:将一个复杂的问题拆分成多个小问题,一步步 提问 比 直接将这个复杂的问题丢给 大模型,要可靠的多。
  7.  自洽性: 同一个问题,换个角度多问几次,取出现次数最高的结果。
  8.  注意做好prompt攻击防范。

OpenAI API 的几个重要参数

其它大模型的 API 基本都是参考 OpenAI,只有细节上稍有不同。

OpenAI 提供了两类 API:

  1. Completion API:续写文本,多用于补全场景。https://platform.openai.com/docs/api-reference/completions/create
  2. Chat API:多轮对话,但可以用对话逻辑完成任何任务,包括续写文本。https://platform.openai.com/docs/api-reference/chat/create

说明:

  1. Chat 是主流,有的大模型只提供 Chat
  2. 背后的模型可以认为是一样的,但也不完全一样
  3. Chat 模型是纯生成式模型做指令微调之后的结果,更多才多艺,更听话
def get_chat_completion(session, user_prompt, model="gpt-3.5-turbo"):
    _session = copy.deepcopy(session)
    _session.append({"role": "user", "content": user_prompt})
    response = client.chat.completions.create(
        model=model,
        messages=_session,
        # 以下默认值都是官方默认值
        temperature=1,          # 生成结果的多样性。取值 0~2 之间,越大越发散,越小越收敛
        seed=None,              # 随机数种子。指定具体值后,temperature 为 0 时,每次生成的结果都一样
        stream=False,           # 数据流模式,一个字一个字地接收
        response_format={"type": "text"},  # 返回结果的格式,json_object 或 text
        top_p=1,                # 随机采样时,只考虑概率前百分之多少的 token。不建议和 temperature 一起使用
        n=1,                    # 一次返回 n 条结果
        max_tokens=100,         # 每条结果最多几个 token(超过截断)
        presence_penalty=0,     # 对出现过的 token 的概率进行降权
        frequency_penalty=0,    # 对出现过的 token 根据其出现过的频次,对其的概率进行降权
        logit_bias={},          # 对指定 token 的采样概率手工加/降权,不常用
    )
    msg = response.choices[0].message.content
    return msg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1805005.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何从清空的回收站恢复照片

担心如何从清空的回收站中恢复已删除的照片?您删除的文件和文件夹暂时存储在 Windows 回收站中。它使 Windows 用户能够快速恢复意外或故意丢失的项目。但是,为了释放计算机驱动器上的某些空间,有时可能需要清理回收站。 然而,有…

车用柴油氧化安定性检测 GB 19147-2009全项检测

柴油分为轻柴油(沸点范围约180-370℃)和重柴油(沸点范围约350-410℃)两大类。柴油使用性能中最重要的是着火性和流动性,其技术指标分别为十六烷值和凝点,我国柴油现行规格中要求含硫量控制在0.5%-1.5%。 检…

增值税发票OCR识别功能介绍

OCR增值税发票识别功能介绍如下: 一、技术原理 OCR增值税发票识别系统基于光学字符识别(OCR)技术和人工智能的支持,将传统纸质发票的信息自动转换为计算机可以读取的数字信息。具体技术流程包括: 图像预处理&#x…

SAP ABAP 往数据库表里加数据

目录 方法一:SE16N SE11 方法二:创建维护VIEW:SE11 SM30 Error补充说明: 方法一:SE16N SE11 首先SE16N 进来。 进来之后在テーブル的位置输入表名,然后点击执行(F8) 如果第一次…

【复现】含能量路由器的交直流混合配电网潮流计算

目录 1 主要内容 2 理论及模型 3 程序结果 4 下载链接 1 主要内容 程序复现《含能量路由器的交直流混合配电网潮流计算》,主要是对算例4.1进行建模分析,理论和方法按照文献所述。能量路由器(ER)作为新兴的电力元器件&#xff…

八、【源码】细化XML语句构建器,完善静态SQL解析

源码地址:https://github.com/mybatis/mybatis-3/ 仓库地址:https://gitcode.net/qq_42665745/mybatis/-/tree/08-optimize-xml-parse 细化XML语句构建器,完善静态SQL解析 这一节主要是优化XML解析SQL部分,流程大概为&#xff…

SpringBoot+Vue企业客户管理系统(前后端分离)

技术栈 JavaSpringBootMavenMySQLMyBatisVueShiroElement-UI 角色对应功能 员工管理员 功能截图

饥荒云服务器卡顿情况如何解决

随着网络游戏的普及,云服务器逐渐成为游戏开发者和玩家们的首选。然而,在使用饥荒云服务器时,有时会遇到卡顿的问题,这给玩家带来了困扰。本文将探讨饥荒云服务器卡顿的原因,并提供一些可能的解决方法。 卡顿产生的原因…

Vyper重入漏洞解析

什么是重入攻击 Reentrancy攻击是以太坊智能合约中最具破坏性的攻击之一。当一个函数对另一个不可信合约进行外部调用时,就会发生重入攻击。然后,不可信合约会递归调用原始函数,试图耗尽资金。 当合约在发送资金之前未能更新其状态时&#…

分布式事务大揭秘:使用MQ实现最终一致性

本文作者:小米,一个热爱技术分享的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! 大家好,我是小米,一个热爱分享技术的29岁程序员,今天我们来聊聊分布式事务中的一种经典实现方式——MQ最终一致性。这是一个在互联网公司中广…

第一篇红队笔记-百靶精讲之W1R3S-john

https://download.vulnhub.com/w1r3s/w1r3s.v1.0.1.zip 主机发现 nmap端口扫描及思路 扫描某个网段 扫描单个ip所有端口 重复扫描单个ip具体端口 udp协议再来一次 漏洞扫描 FTP渗透 尝试匿名登陆 防止文件损坏 识别加密方式-hash-identifier base64 Web目录爆破…

AI如何创造情绪价值

随着科技的飞速发展,人工智能(AI)已经渗透到我们生活的方方面面。从智能家居到自动驾驶,从医疗辅助到金融服务,AI技术的身影无处不在。而如今,AI更是涉足了一个全新的领域——创造情绪价值。 AI已经能够处…

Leetcode 剑指 Offer II 081.组合总和

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定一个无重复元素的正整数数组 candidates 和一个正整数 targe…

Transformer论文精读

Transformer:Attention is all you need Abstract: 在主流的序列转录模型(sequence transduction models:给一个序列,生成另一个序列),主要依赖循环或者卷积神经网络,一般是用enco…

【遗传算法】【机器学习】【Python】常见交叉方法(二)、多点交叉和均匀交叉

往期遗传算法文章见: 【遗传算法】【机器学习】【Python】常见交叉方法(一)、单点交叉和两点交叉 一、遗传算法流程图 交叉过程即存在于上图的”交叉“(crossover)步骤中。 二、多点交叉 多点交叉的原理就是&#x…

RISCV中CLINT和PLIC解析

中断这个东西理论上属于CPU核心的东西。一般来说并不需要重新设计。实际的实现中是比较繁琐的,此处只介绍原理。ARM基本上会用NVIC(Nested Vectored Interrupt Controller) 的东西,RISC-V目前实现了一个比较简单的东西(有人称之为简洁高效&am…

算法 | hbut期末复习笔记

贪心选择策略:所求问题的整体最优解可以通过一系列局部最优的选择(贪心选择)得到 最优子结构:问题的最优解包括了其子问题的最优解 回溯法:具有限界函数的深度优先搜索法 回溯法的解空间:子集树&排列…

【计网复习】应用层总结(不含HTTP和错题重点解析)

应用层总结(不含HTTP和错题重点解析) 应用层简介 应用层的主要功能常见的应用层协议小林对于应用层通常的解释 网络应用模型 客户端-服务器模型(Client-Server Model, C/S) 特点优点缺点应用场景 对等网络模型(Peer-to…

【QT5.14.2】编译MQTT库example的时候报No such file or directory

【QT5.14.2】编译MQTT库example的时候报No such file or directory 前几天导师让跑一下MQTT库,用的5.14.2版本的QT,于是就上网搜了一个教程:https://www.bilibili.com/video/BV1dH4y1e7hG/?spm_id_from333.337.search-card.all.click&v…

TCP/IP协议介绍——三次握手四次挥手

TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议…