【AI大模型应用开发】1.0 Prompt Engineering(提示词工程)- 典型构成、原则与技巧,代码中加入Prompt

从这篇文章开始,我们就正式开始学习AI大模型应用开发的相关知识了。首先是提示词工程(Prompt Engineering)。

文章目录

    • 0. 什么是提示词(Prompt)
    • 1. 为什么Prompt会起作用 - 大模型工作原理
    • 2. Prompt的典型构成、原则与技巧
    • 3. 开始使用Prompt
    • 4. 代码中加入Prompt
      • 4.1 OpenAI API解释

0. 什么是提示词(Prompt)

AI大模型火了也已经有一年多了,相信大家或多或少都听过或见过一个词叫“Prompt”,这就是提示词。
用户给大模型输入一个Prompt,大模型会根据你的Prompt给出一个回复,这是目前为止,最常用的使用大模型的方法。网络上很多号称“不用编程,轻松实现自己的应用、助理”等,都是基于Prompt来做的。即使是需要通过编程的方式来使用大模型达到自己需求的,过程中也会大量使用Prompt,将Prompt固化到程序中,作为“代码”的一部分
所以,在现在的AI时代,Prompt也可以看作是一门【编程语言】,最近新兴了一个职业叫做【提示词工程师】,也就类似是AI时代的程序员。

现在Prompt工程并没有形成一套完整的标准化体系,网络上关于如何使用Prompt的文章也是铺天盖地,非常杂乱,让人眼花缭乱。因为本人想以实战为主,因此本文只是总结一下Prompt的最基本构成和原则

重要提醒

  • Promt是一个需要不断优化的过程,没有哪一篇文章或哪一个Prompt是适用于所有场景,或者拿来直接可用的。
  • 即使同一个场景,相同的Prompt,不同的大模型之间也会效果不同。如果换了大模型,提示词大概率需要重新优化
  • 所以不要光看网上的什么【最佳实践】,还是要下场实操,在不断迭代中学会优化Prompt的方法,才是最重要的。

1. 为什么Prompt会起作用 - 大模型工作原理

简要概括:它只是根据上文,猜下一个词的概率,在前几个概率大的词中选择一个输出。
在这里插入图片描述

2. Prompt的典型构成、原则与技巧

在这里插入图片描述

3. 开始使用Prompt

如果不会编程,或不想写代码,可以直接在AI软件中使用Prompt,例如:

  • ChatGPT
    在这里插入图片描述

  • 文心一言
    在这里插入图片描述

4. 代码中加入Prompt

4.1 OpenAI API解释

下面是上篇文章【AI大模型应用开发】0. 开篇,用OpenAI API写个Hello World !我们的“Hello World”程序,里面包含了一个函数chat.completions.create

from openai import OpenAI
# 加载 .env 到环境变量
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())client = OpenAI()response = client.chat.completions.create(model="gpt-3.5-turbo-1106",messages=[{"role": "user","content": "你是谁?"}],
)print(response.choices[0].message.content)

该函数有几个重要参数解释下:

  • model:用来指定使用哪个模型,例如:gpt-3.5-turbo-1106

  • messages:传入大模型的prompt,prompt有三种角色:

    • system:系统指令,最重要,用于初始化GPT行为,以及规定GPT的角色、背景和后续行为模式。system是主提示,可以进行更加详细的设置。
    • user: 用户输入的信息。
    • assistant: 机器回复,由 API 根据 system 和 user 消息自动生成的。
  • temperature:参数值越小,模型就会返回越确定的一个结果。如果调高该参数值,大语言模型可能会返回更随机、创意的结果,如诗歌、写作等,可以适当提高。

  • max_token:控制了输入和输出的总的token上限,要求我们的prompt不能太长,或者控制上下文轮次!(给你估算成本和节省成本用的)

  • Top_p:与 temperature 一起称为核采样的技术,可以用来控制模型返回结果的真实性。如果你需要准确和事实的答案,就把参数值调低。如果你想要更多样化的答案,就把参数值调高一些。

Temperature和Top_p,一般建议是改变其中一个参数就行,不用两个都调整。调了效果也不一定显著;

本篇文章就先写到这里,下篇文章我们开始在代码中将Prompt用起来,并尝试将一些技巧加进去看下效果。


从今天开始,持续学习,开始搞事情。踩坑不易,欢迎关注我,围观我!
在这里插入图片描述

有任何问题,欢迎+vx:jasper_8017,我也是个小白,期待与志同道合的朋友一起讨论,共同进步!

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

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

相关文章

【5】商密测评密码辅助工具

0X01 前言 最近在学了下商密测评,研究了下技术层面的测评,感觉找工具不方便,就顺手自己造了个辅助工具,都是自己遇到需要用的。 0x02 工具功能介绍 不爱打字,直接上图。后续根据技术测评层面需要继续完善和增加功能。…

基于VSG控制的MMC并网逆变器MATLAB仿真模型

微❤关注“电气仔推送”获得资料(专享优惠) 模型简介 根据传统同步发电机的运行特性设计了MMC-VSG功频控制器和励磁控制器, 实现了MMC-VSG逆变器对高压电网电压和频率的支撑。该模型包含MMC变流器模块,环流抑制模块,…

HackTheBox-Keeper

OpenVPN连接 连接上HackTheBox! 同时找到这个靶机,进行join!分配的靶机的地址位10.10.11.227! 信息收集 nmap -sT --min-rate 10000 -p- 10.10.11.227 开放端口为22和80端口 服务版本和操作系统信息探测: nmap -s…

Milvus Cloud与携程的向量探索大公开

【User Tech】2024 我们来啦! 今年,【User Tech】将更加专注于为社区用户提供技术功能解读、热点答疑,聚焦更丰富、更多样化的行业或使用场景的用户案例。我们期待通过分享更多关于 Milvus Cloud 的实战经验,为大家在 AI、大模型、…

YOLOv8算法改进【NO.98】改进损失函数为最新提出的Shape-IoU

前 言 YOLO算法改进系列出到这,很多朋友问改进如何选择是最佳的,下面我就根据个人多年的写作发文章以及指导发文章的经验来看,按照优先顺序进行排序讲解YOLO算法改进方法的顺序选择。具体有需求的同学可以私信我沟通: 第一…

李沐之经典卷积神经网络

目录 1. LeNet 2. 代码实现 1. LeNet 输入是32*32图片,放到一个5*5的卷积层里面,卷积层的输出通道数是6,高宽都是28(32-5128)。再经过2*2的池化层,把28*28变成14*14(28-22)/214&am…

《Vue2 进阶知识》动态挂载组件之Vue.extend + vm.$mount

前言 目前工作还是以 Vue2 为主,今早有人提问 如何动态挂载组件? 话说很久很久以前就实现过,今天再详细的整理一下此问题! 开始 动态组件如下,是个简单的例子: 但请注意这里给了个 id"test2"…

vue 组件 import make sure to provide the “name“ option.

百度了好多结果,都过时了,例如: 模块引入是否加{} 再比如: 对于递归组件,请确保提供“name”选项。 出现该错误情况之一: 错误由未正确引入组件或子组件引起,如element-ui中form表单组件未引…

PostgreSQL之SEMI-JOIN半连接

什么是Semi-Join半连接 Semi-Join半连接,当外表在内表中找到匹配的记录之后,Semi-Join会返回外表中的记录。但即使在内表中找到多条匹配的记录,外表也只会返回已经存在于外表中的记录。而对于子查询,外表的每个符合条件的元组都要…

GitLab 502 Whoops, GitLab is taking too much time to respond. 解决

1、先通过gitlab-ctl restart进行重启,2分钟后看是否可以正常访问,为什么要2分钟,因为gitlab启动会有很多配套的服务启动,包括postgresql等 2、如果上面不行,再看gitlab日志,通过gitlab-ctl tail命令查看&…

【Arduino】编程语言:定时函数、数学函数、字符函数(功能、语法格式、参数说明、返回值) | 软件开发环境:安装步骤介绍(EXE安装版、ZIP安装版)

你的负担将变成礼物,你受的苦将照亮你的路。———泰戈尔 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌿[2] 2023年城市之星领跑者TOP1(哈尔滨)🌿 🌟[3] 2022年度博客之星人工智能领域TOP4🌟 🏅[4] 阿里云社区…

再发一波微信红包封面,免费!免费!免费!

我是90后程序员,大家都叫我小码哥,从事互联网近10余年了,一直想在互联网上分享自己的管理经验和技术经验,同时也想找一些志同道合的朋友,一起聊聊如何从互联网中快速的成长起来,无论是通过技术、互联网风口…

谈谈曲线与曲面

目录 1、非参数曲线与曲面 2、方程式曲线与曲面 3、参数曲线与曲面 3.1平面参数曲线 3.2空间参数曲线 3.3参数曲面 1、非参数曲线与曲面 非参数曲线曲面是一种与参数曲线曲面相对的概念。在非参数方法中,曲线或曲面不是通过参数方程来定义的,而是通…

【AI视野·今日Robot 机器人论文速览 第七十二期】Mon, 8 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Mon, 8 Jan 2024 Totally 13 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers Deep Reinforcement Learning for Local Path Following of an Autonomous Formula SAE Vehicle Authors Harvey Merton, Thoma…

算法通关村番外篇-跳表

大家好我是苏麟 , 今天来聊聊调表 . 跳表很少很少实现所以我们只了解就可以了 . 跳表 链表在查找元素的时候,因为需要逐一查找,所以查询效率非常低,时间复杂度是O(N),于是就出现了跳表。跳表是在链表基础上改进过来的&#xff0…

OpenCV——图像按位运算

目录 一、算法概述1、逻辑运算2、函数解析3、用途 二、代码实现三、结果展示 OpenCV——图像按位运算由CSDN点云侠原创,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法概述 1、逻辑运算 OpenCV4 针对两个图像之…

JDBC初体验(二)——增、删、改、查

本课目标 理解SQL注入的概念 掌握 PreparedStatement 接口的使用 熟练使用JDBC完成数据库的增、删、改、查操作 SQL注入 注入原理:利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行能力,它可以通过在…

银河麒麟v10安装前端环境(Node、vue、Electron+vite)

此帖子所提到的所有依赖包都是基于银河麒麟v10真机的arm架构包,如果是在windows上的虚拟机上 把依赖包换成x64的包即可,方法步骤都是一样 一.node安装 原始方法安装(建议用第二种nvm方法,因为更简单): 1…

工业异常检测AnomalyGPT-训练试跑及问题解决

写在前面,AnomalyGPT训练试跑遇到的坑大部分好解决,只有在保存模型失败的地方卡了一天才解决,本来是个小问题,昨天没解决的时候尝试放弃在单卡的4090上训练,但换一台机器又遇到了新的问题,最后决定还是回来…

图像识别与计算机视觉有什么区别?

图像识别和计算机视觉在很多方面存在差异,这些差异主要体现在以下几个方面: 1. 研究范围 图像识别是计算机视觉领域的一个子集。计算机视觉不仅包括图像识别,还涵盖了更广泛的内容,如场景理解、目标跟踪、分割、识别和解释等。简而…