探索大模型能力--prompt工程
1 prompt工程是什么
1.1 什么是Prompt?
LLM大语言模型终究也只是一个工具,我们不可能每个人都去训一个大模型,但是我们可以思考如何利用好大模型,让他提升我们的工作效率。就像计算器工具一样,要你算10的10倍,你是按10次“10+”,还是直接“10*10”,如何利用工具决定了你几点下班。。
提示词(prompt)就是你给大模型下达的指令输入,它包含以下任意要素:
指令: 想要模型执行的特定任务或者指令。
上下文:包含外部信息或额外的上下文信息,引导语言模型更好地响应。
输入数据: 用户输入的内容或问题
输出指示: 指定输出的类型或格式。
1.2 什么是prompt工程?
提示工程就是开发和优化提示词(Prompt),一种在大模型中使用的技巧,通过提供清晰、简洁的指令或问题,充分发挥大模型的能力,让模型更好地理解我们的需求,从而得到更好的模型输出。
给大模型提示语的时候,你就是产品经理:
你随便提需求,模型也就随口一答;
你提出详细的需求,给出充分的需求背景,给足输出数据,定义好输出格式,好的模型就像一个好的程序员,会给你一个满意的答复的~
2 prompt工程基本原则
我们再回顾下prompt工程课程中的两大基本原则:
2.1 给出清晰,详细的指令
策略1:使用分割符清晰的知识输出的不同部分,比如"",<>,<\tag>等分隔符
策略2:指定一个结构化的输出,比如json,html等格式
策略3:要求模型自检测是否满足条件
策略4:提供少量示例
2.2 给模型思考的时间
我们不一定要一步得到答案,可以让模型进行一系列的推理,给他推理思考的时间,再最终给出答案。
策略1:指定完成任务需要的步骤
告诉模型完成这个指令,需要执行几步,每步的详细步骤
策略2:明确模型再给出结论之前推理出自己的解决方案
让模型自己推理,写出每一步的步骤,给足够的时间(token-钱)边思考边执行。
3 prompt工程迭代思维
迭代思想无处不在,提示工程和软件工程,算法模型一样都是一个迭代的过程。。
4 prompt工程方法
prompt的原则和方法在吴恩达教授的课程中讲解的很详细 ,这里我们再介绍一些高阶方法。
4.1 思维链
思维链的概念是在Google的论文Chain-of-Thought Prompting Elicits Reasoning in Large Language Models中被首次提出。思维链是一系列的短句子,模仿了人类在回答问题时的思考和可能的推理过程。
作者在文中也指出作为一种促进语言模型推理的方法,思维链提示具有几个吸引人的特性:
首先,思维链允许模型将多步问题进行拆分,分解为多个中间步骤。
其次,思维链使得模型的回答过程具有较好的可解释性,同时这一特性为定位推理错误,并修改错误提供了可能。
第三,链式思维推理可用于数学单词问题、常识推理和符号操作等任务,并且理论上适用于任何可以通过语言解决的任务。
最后,只要将思维序列链的例子包含到少样本提示的范例中,就可以很容易地在足够大的现成语言模型中引出思维链推理。
下图一次介绍了少样本提示(a),少样本思维链(b),零样本提示©,零样本思维链(d)
4.2 思维树
Tree of Thoughts (ToT)是思维链的进一步拓展,主要想解决 LM 推理过程存在如下两个问题:
不会探索不同的可能选择分支
无法在节点进行前后向的探索
ToT 将问题建模为树状搜索过程,包括四个步骤:问题分解、想法生成,状态评价以及搜索算法的选择。
4.3 用prompt写prompt
以上方法都太麻烦,还有一些懒人方法。利用ChatGPT插件或者自己写一个prompt来帮你写prompt,用魔法打败魔法。
比如https://github.com/minghaochen/universal-prompt/blob/master/universal-prompt.txt 给出一个优化prompt的模版。
代码语言:javascript
**复制
message = [{"content": """I want you to act as an AI prompt engineer. You are expert at writing ChatGPT Prompts to get the best results.To create efficient prompts that yield high-quality responses, consider the following principles and strategies: \1. Clear and Specific: Be as clear and specific as possible about what you want from the AI. If you want a certain type of response, outline that in your prompt. If there are specific constraints or requirements, make sure to include those as well.2. Open-ended vs. Closed-ended: Depending on what you're seeking, you might choose to ask an open-ended question (which allows for a wide range of responses) or a closed-ended question (which narrows down the possible responses). Both have their uses, so choose according to your needs.3. Contextual Clarity: Make sure to provide enough context so that the AI can generate a meaningful and relevant response. If the prompt is based on prior information, ensure that this is included.4. Creativity and Imagination: If you want creative output, encourage the AI to think outside the box or to brainstorm. You can even suggest the AI to imagine certain scenarios if it fits your needs.There is a well-written prompt delimited by <> for your reference: <Your task is to be my brainstorming partner and provide creative ideas and suggestions for a given topic or problem. Your response should include original, unique, and relevant ideas that could help solve the problem or further explore the topic in an interesting way. Please note that your response should also take into account any specific requirements or constraints of the task.>Your task is to write an effective ChatGPT Prompt based on given keywords or to modify the given prompts. Answer in the same language as me.""","role": "system"}]
message.append({"content": "Please help me to write an effective ChatGPT Prompt based on the following keywords or prompt: {}".format(prompt),"role": "user"})
在调用ChatGPT接口时,使用如上message,就可以优化你的prompt.
代码语言:javascript
**复制
Before:
translate the following English content into Chinese, 并润色
After:
<Please translate the following English text into Chinese, ensuring not only accuracy in translation but also enhancing the prose to flow naturally and elegantly in Chinese. The translation should read as if originally written by a native speaker, with attention to cultural nuances and idiomatic expressions.>
5 实践
上面说了这么多概念和理论方法,还有没有更好的方法,快速让我知道怎么写好prompt?
有!用别人的经验!
前公司有个同事做过一个分享,大佬说过一句话:要想写好prompt最好的方法就是知道他的训练数据是什么样子的。可惜,很少大模型完全开源他们的数据集。
但是很多大模型都会开放一个平台给大家体验,大家也都会将好的用例分享出来。
比如智普清言,我们看看程序员灵感
这里面就是一些优秀prompt,这些经验我们就可以直接拿来主义。
大致可以总结出模版:先给模型一个角色定位(你是一名***),再给出具体的需求(请写一个***需求的代码)。
上一个示例:
代码语言:javascript
**复制
你是一位擅长编写各种程序的资深工程师,我需要你根据以下需求,为我生成一段Python代码:
代码目的:设计一个双十一自动抢购脚本
代码功能:在双十一当天自动登录购物网站,定时抢购预设商品
代码要求:使用面向对象编程方式,使用selenium库进行网页操作
代码语言:javascript
**复制
为了实现这个双十一自动抢购脚本,我们可以进行以下步骤:
1. 首先,需要安装selenium库以及对应浏览器的驱动。
2. 其次,需要登录目标购物网站。
3. 然后,需要定位到目标商品的抢购按钮。
4. 最后,在双十一当天设定一个定时器来点击抢购按钮。
以下是一个简单的示例代码:
```python
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
class DoubleElevenShopper:def __init__(self, website, username, password, item_link):self.website = websiteself.username = usernameself.password = passwordself.item_link = item_linkself.driver = webdriver.Chrome() # 使用Chrome浏览器def login(self):self.driver.get(self.website)username_field = self.driver.find_element_by_name("username") # 这里需要根据目标网站的登录表单进行调整password_field = self.driver.find_element_by_name("password")username_field.send_keys(self.username)password_field.send_keys(self.password)password_field.send_keys(Keys.RETURN)time.sleep(5) # 等待登录完成def buy_item(self):self.driver.get(self.item_link)buy_button = self.driver.find_element_by_id("buy_button") # 这里需要根据目标商品的购买按钮进行调整buy_button.click()def run(self):self.login()self.buy_item()self.driver.quit()
if __name__ == "__main__":shopper = DoubleElevenShopper(website="https://www.example.com",username="your_username",password="your_password",item_link="https://www.example.com/item")shopper.run()
注意:
- 需要安装Chrome浏览器和ChromeDriver。
- 登录和购买按钮的元素定位需要根据具体的购物网站进行调整。
- 此代码为简单示例,实际使用可能需要处理更多的异常情况。
安装selenium库和ChromeDriver:
pip install selenium
下载ChromeDriver并将其路径添加到环境变量中。
最后奉上最全prompt指南:https://github.com/dair-ai/Prompt-Engineering-Guide
写在最后
感兴趣的小伙伴,赠送全套AIGC学习资料,包含AI绘画、AI人工智能等前沿科技教程和软件工具,具体看这里。
AIGC技术的未来发展前景广阔,随着人工智能技术的不断发展,AIGC技术也将不断提高。未来,AIGC技术将在游戏和计算领域得到更广泛的应用,使游戏和计算系统具有更高效、更智能、更灵活的特性。同时,AIGC技术也将与人工智能技术紧密结合,在更多的领域得到广泛应用,对程序员来说影响至关重要。未来,AIGC技术将继续得到提高,同时也将与人工智能技术紧密结合,在更多的领域得到广泛应用。
一、AIGC所有方向的学习路线
AIGC所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
二、AIGC必备工具
工具都帮大家整理好了,安装就可直接上手!
三、最新AIGC学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、AIGC视频教程合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
相关文章:

探索大模型能力--prompt工程
1 prompt工程是什么 1.1 什么是Prompt? LLM大语言模型终究也只是一个工具,我们不可能每个人都去训一个大模型,但是我们可以思考如何利用好大模型,让他提升我们的工作效率。就像计算器工具一样,要你算10的10倍&#x…...

【经验分享】运用云服务器实现挂机手机网课的操作,部分手机软件适用
目录 第一步下载手机模拟器 第二步找到模拟器的文件位置 第三步找到模拟器的下载文件进行打包处理 编辑 第四步将模拟器粘贴到云服务器上 第五步运行程序 第六步在模拟器中下载网课软件 第一步下载手机模拟器 这里我下载的是联想模拟器,用来模拟手机环境 随…...

【从0到1进阶Redis】主从复制 — 主从机宕机测试
上一篇:【从0到1进阶Redis】主从复制 测试:主机断开连接,从机依旧连接到主机的,但是没有写操作,这个时候,主机如果回来了,从机依旧可以直接获取到主机写的信息。 如果是使用命令行,来…...

Flask启动5000端口后关不掉了?
事情是这样的: 使用python app.py启动flask应用后,又启动了另一个flask测试应用,也能启动成功,也没有报设么端口冲突,关闭黑窗口后,访问还是有守护进程在运行, 为什么我知道5000还在运行&#…...

Redis的热key解决
1、Redis热Key会带来哪些问题 1、流量集中,达到物理网卡上限。 当某一热点 Key 的请求在某一主机上超过该主机网卡上限时,由于流量的过度集中,会导致服务器中其它服务无法进行。 2、请求过多,缓存分片服务被打垮。 如果热点过于…...

在linux中查找 / 目录下的以.jar结尾的文件(find / -name *.jar)
文章目录 1、查找 / 目录下的以.jar结尾的文件 1、查找 / 目录下的以.jar结尾的文件 [rootiZuf6332h890vozldoxcprZ ~]# find / -name *.jar /etc/java/java-1.8.0-openjdk/java-1.8.0-openjdk-1.8.0.342.b07-1.el9_0.x86_64/lib/security/policy/limited/US_export_policy.ja…...

【Python爬虫教程】第6篇-使用session发起请求
为什么要使用session 前面介绍了如何使用reqesuts发起请求,今天介绍如何使用session发起请求。session简单理解就是一种会话机制,在浏览器中我们登录完之后,后面再请求服务数据都不需要再登录了,以为Cookie里已经保存了你的会话状…...

【Hot100】LeetCode—763. 划分字母区间
目录 题目1- 思路2- 实现⭐763. 划分字母区间——题解思路 3- ACM 实现 题目 原题连接:763. 划分字母区间 1- 思路 思路 目标:同样的字母 字符串尽可能的长 问1:怎么确定字母数 ——> 哈希表问2:怎么让字符尽可能的长&#…...

分布式服务基于Zookeeper的分布式锁的实现
一、序言 ZooKeeper 的分布式锁机制是一种协调多个客户端访问共享资源的方法。通过使用 ZooKeeper 的持久化节点和临时顺序节点,可以实现高效且可靠的分布式锁。下面是分布式锁的工作原理以及如何使用它的具体步骤。 二、Zookeeper分布式锁的核心原理 创建锁目录节…...

Rust编程-I/O
文件读取: 依赖:标准库中use std::fs; 模块 读取文件:fs::read_to_string(filepath:string) -> Result<String> String是文件内容 下面代码来自《Rust权威指南》,主要作用是从文件中检索,并返回检索内容所在的行…...

FastAPI 学习之路(四十七)WebSockets(三)登录后才可以聊天
之前我们是通过前端自动生成的token信息,这次我们通过注册登录,保存到本地去实现。首先,我们实现一个登录页面,放在templates目录下。 <!DOCTYPE html> <html lang"en"> <head><meta charset&quo…...

数据结构—链式二叉树-C语言
代码位置:test-c-2024: 对C语言习题代码的练习 (gitee.com) 一、前言: 在现实中搜索二叉树为常用的二叉树之一,今天我们就要通过链表来实现搜索二叉树。实现的操作有:建二叉树、前序遍历、中序遍历、后序遍历、求树的节点个数、求…...

nginx代理gitee
背景 若干台agv设备,这些设备都是没有公网的(无法访问百度等)。 一台服务器(ubuntu20.04)有线可以公网,无线可以实现内部通信(agv,plc等设备)。 目的 agv每一次更新代码,拉取代码等都需要切换到有公网的网络,多台agv设…...

一款IM即时通讯聊天系统源码,包含app和后台源码
一款IM即时通讯聊天系统源码 聊天APP 附APP,后端是基于spring boot开发的。 这是一款独立服务器部署的即时通讯解决方案,可以帮助你快速拥有一套自己的移动社交、 企业办公、多功能业务产品。可以 独立部署!加密通道!牢牢掌握通…...

Camunda如何通过外部任务与其他系统自动交互
文章目录 简介流程图外部系统pom.xmllogback.xml监听类 启动流程实例常见问题Public Key Retrieval is not allowed的解决方法java.lang.reflect.InaccessibleObjectException 流程图xml 简介 前面我们已经介绍了Camunda的基本操作、任务、表: Camunda组件与服务与…...

Django ORM中ExpressionWrapper的用途
ExpressionWrapper 在 Django ORM 中,直接在 filter 方法中进行字段间的比较时,不能直接使用算术运算符(如 、-、*、/)来操作 F 对象,需要使用 ExpressionWrapper 来包装表达式并指定输出字段类型。 使用Q对象&#…...

什么软件修复视频画质比较好,视频画质修复工具
有些视频中可能会出现噪点、残影、颜色失真等问题,导致观看时体验感不太好,修复视频画质可以去除这些问题,使视频更加干净、清晰和真实。 高质量的视频画质能够提高观众的观看体验,让观众更加享受观看视频的过程。特别是在需要展示…...

效能工具:执行 npm start 可直接切换proxy代理UR后直接启动项目
1) 背景: 我们项目是2个前端3个后端的配置。前端和每个后端都有需要调试的接口。 因此经常切换vite.congig.js中的proxy后端代理链接,是挺麻烦的。 于是我研究如何能快速切换后端URL,所幸懒人有懒福,我找到了Inquirer 和 fs, 实…...

MongoDB自学笔记(一)
一、MongoDB简介 MongoDB是一款基于C开发的文档型数据库。与传统的关系型数据库有所不同,MongoDB面向的是文档,所谓的文档是一种名为BSON (Binary JSON:二进制JSON格式)是非关系数据库当中功能最丰富,最像…...

【AIGC】二、mac本地采用GPU启动keras运算
mac本地采用GPU启动keras运算 一、问题背景二、技术背景三、实验验证本机配置安装PlaidML安装plaidml-keras配置默认显卡 运行采用 CPU运算的代码step1 先导入keras包,导入数据cifar10,这里可能涉及外网下载,有问题可以参考[keras使用基础问题…...

【Qt】使用临时对象的坑
前言 使用临时对象时,一定要注意临时对象析构后是否会对代码造成影响,下面是一些可能出现的错误 std::string Widget::getStr() {return "nihao"; }void Widget::on_pushButton_clicked() {std::string objStr getStr();const char* str g…...

Apache-Flink未授权访问高危漏洞修复
漏洞等级 高危漏洞!!! 一、漏洞描述 攻击者没有获取到登录权限或未授权的情况下,或者不需要输入密码,即可通过直接输入网站控制台主页面地址,或者不允许查看的链接便可进行访问,同时进行操作。 二、修复建议 根据业务/系统具体情况,结合如下建议做出具体选择: 配…...

Unable to obtain driver using Selenium Manager: Selenium Manager failed解决方案
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...

(01)Unity使用在线AI大模型(使用百度千帆服务)
目录 一、概要 二、环境说明 三、申请百度千帆Key 四、使用千帆大模型 四、给大模型套壳 一、概要 在Unity中使用在线大模型分为两篇发布,此篇文档为在Python中使用千帆大模型,整体实现逻辑是:在Python中接入大模型—>发布为可传参的…...

Zed 编辑器发布了原生 Linux 版本
由 Rust 编写、GPU 加速的 Zed 文本编辑器终于提供了正式的 Linux 原生版本!在过去的几个月里,Zed 的 Linux 支持取得了长足的进步,现在已经进入了更正式的阶段。 今天,这款由前 Atom 开发人员创建的现代开源代码编辑器现在在 Li…...

安全入门day01
一、常用名词 1、前后端 (1)前端 前端主要负责用户界面的展示和交互。它通常包括HTML、CSS和JavaScript等技术的使用,也可能使用各种前端框架和库,如React、Vue.js、Angular等,来构建更加复杂和动态的用户界面。前端…...

基于Adaboost的数据分类算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于Adaboost的数据分类算法matlab仿真,分别对比线性分类和非线性分类两种方式。 2.测试软件版本以及运行结果展示 MATLAB2022A版本运行 (完整程序…...

基于Java的斗地主游戏案例开发(做牌、洗牌、发牌、看牌
package Game;import java.util.ArrayList; import java.util.Collections;public class PokerGame01 {//牌盒//♥3 ♣3static ArrayList<String> list new ArrayList<>();//静态代码块//特点:随着类的加载而在加载的,而且只执行一次。stat…...

Ubuntu 22.04.4 LTS (linux) 安装certbot 免费ssl证书申请 letsencrypt
1 安装certbot sudo apt update sudo apt-get install certbot 2 申请letsencrypt证书 sudo certbot certonly --webroot -w 网站目录 -d daloradius.域名.com 3 修改nginx 配置ssl 证书 # 配置服务器证书 ssl_certificate /etc/letsencrypt/live/daloradius.域名.com/f…...

MT6825磁编码IC在智能双旋机器人中的应用
MT6825磁编码IC在智能双旋机器人中的应用,无疑为这一领域的创新和发展注入了新的活力。作为一款高性能的磁性位置传感器,MT6825以其独特的优势,在智能双旋机器人的运动控制、定位精度以及系统稳定性等方面发挥了关键作用。 www.abitions.com …...