LLM: Prompt的使用

本文使用的LLM是OpenAI的gpt系列。刚开始学大模型,如果出现错误内容或着描述不恰当的部分,后续会修改。

  Prompt是输入给大模型的文本或语句,用来引导大模型(Large Language Model, LLM)生成相关的输出。好的prompt可以提高大模型输出的准确性和可靠性。一般而言,好的prompt的特点是:具体、丰富、少歧义

1.Prompt

1.1 prompt典型构成

  一般情况下,一个好的prompt主要包括以下几个方面的内容:

  • 角色:给 AI 定义一个最匹配任务的角色,比如:“你是一位软件工程师”等;
  • 指示:任务描述;
  • 上下文:给出与任务相关的其它背景信息(经常用在多轮对话中);
  • 例子:示例;
  • 输入:任务的输入信息,在提示词中明确的标识出用户输入;
  • 输出:输出的格式描述,以便后继模块自动解析模型的输出结果,比如JSON、XML等;

tips: 大模型对prompt的开头和结尾部分更敏感;OpenAI GPT 对 Markdown 格式的prompt友好; 如果更换了大模型或者大模型更新了,prompt也需要跟着更新。

1.2 prompt用法

这里给出一个使用prompt操作GPT模型的例子(这里使用的是GPT的API,具体环境执行配置,这里不赘述),具体代码如下:

from openai import OpenAI
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())
client=OpenAI()
message=[{"role":"system","content":"你是一个微信公众号文章的写手。"},{"role":"user","content":"写一段话介绍大模型,字数要求200字以内。"},
]
response=client.chat.completions.create(model="gpt-4",messages=message,temperature=0.8)
print(response.choices[0].message.content)

GPT输出内容为(每次输出内容均不相同):

大模型,指的是通过大量数据训练得到的庞大的人工智能系统。这类模型因其庞大的参数数量和强大的数据处理能力而得名。它们能够处理复杂的任务,如自然语言理解、图像识别、语音处理等。大模型通过深度学习技术,学习数据中的模式和规律,从而实现对语言、图像等多种类型数据的理解和生成。这些模型的训练需要大量的计算资源和数据,因此常常由拥有强大计算能力的大型科技公司或研究机构开发。大模型的出现推动了人工智能技术的边界,使得机器能够在更多领域内执行复杂的任务,表现出接近甚至超越人类的能力。

关于上述GPT代码,这里只关注client.chat.completions.create中的message参数(其他参数后序博客介绍)。message参数主要用来接收prompt。关于message的说明主要有以下几点:

  • message是一个object组成的数组。每个object都必须至少包含两个字段:rolecontentcontent中的内容即为具体的信息内容。
  • 目前message支持的角色类型role有:systemuserassistanttool
  • rolesystem时,可以存放prompt中的角色信息。
  • roleuser时,可以存放prompt中的其他信息。
  • roleassistant时,代表大模型返回的内容。注意:将assistant类型的信息通过messages参数再次传递给大模型,可以实现多轮对话。GPT这些模型本身是没有多轮对话的能力的。
  • roletool时,用来保存tool_call的返回结果。(后续博客会做详细介绍)

下面举一个简单的例子验证在messages中添加rolesystem类信息时的作用,具体如下:

message=[{"role":"system","content":"你是一个微信公众号文章的写手。你叫小A"},{"role":"user","content":"你是谁?"},
]response=client.chat.completions.create(model="gpt-3.5-turbo",messages=message,temperature=0.8)print(response.choices[0].message.content)

其输出内容为:

嘿,我是小A,是这个微信公众号的写手。有什么可以帮你的吗?

如果运行命令print(response.choices[0].message),将会看到如下结果(GPT返回的信息中role的值为assistant):

ChatCompletionMessage(content=’ 嘿,我是小A,是这个微信公众号的写手。有什么可以帮你的吗?', role=‘assistant’, function_call=None, tool_calls=None)

2 Prompt使用案例

大模型适合完成文本入、文本出类的任务。

2.1 使用prompt实现文章过滤

需求:需要利用大模型依据文章标题挑选出与特定主题相关的文章。假如需要挑选出与“阅读”或者“书籍”相关的文章。
完整代码如下:

from openai import OpenAI
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())
client=OpenAI()def get_completion(messages,model='gpt-4'):response=client.chat.completions.create(model=model,messages=messages,temperature=0.8)return response.choices[0].message.contentprompt="""
##目标
你可以依据用户输入的文章标题,判断这篇文章是否跟阅读或者书籍相关。
##用户输入
{input_article_title}
##输出
只输出“是”或“否”,
##示例
最适合今天读的灵性书籍: 是
肾脏很怕的 8 种食物,很多人每天都吃,还吃不少: 否
"""
article_list=["用七本想象力爆棚的绘本,点燃那颗崭新的童心",
'“书香盈怀 悦读致远” 2023年北京市诵读大赛燕山赛区活动通知',
"哪本书让你流了最多的眼泪?(话费福利)",
"今日宜自我分析",
"文化和自然遗产日:考验你的时刻到啦!",
"英文故事磨耳朵:When Sophie Gets Angry-Really,Really Angry...(附亲子共读获奖名单)",
"今日宜消化情绪",
"拜托了,夏天别和我提吃,除非……",
"预约!预约!预约!",
"今日宜大胆尝试",
"预约!聆听恐龙故事,揭开恐龙足迹背后的远古谜团",
"今日宜品读经典"]messages=[{"role":"user","content":prompt.format(input_article_title=str(article_list))}]
result=get_completion(messages)
print(result)

大模型输出结果为:

是、是、是、否、否、是、否、否、否、否、是、是

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

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

相关文章

ubuntu系统下如何使用vscode编译和调试#小白入门#

编程环境:ubuntu系统为18.04.1,vscode版本为1.66.2 一、VSCode切换中文显示: 1、vscode安装完成后启动,在左侧externsions中搜索“简体中文”插件,并完成安装: 2、选择右下角齿轮形状的"Manage"&#xff…

YOLOv5全网独家改进: 红外小目标 | 注意力机制改进 | 并行化注意力设计(PPA)模块,红外小目标暴力涨点 | 2024年3月最新成果

💡💡💡本文独家改进:红外小目标涨点利器,在多个数据集下进行验证,其中并行化 patch-aware 注意力(PPA)模块,解决目标的大小微小以及红外图像中通常具有复杂的背景的问题点 💡💡💡红外小目标实现暴力涨点,只有几个像素的小目标识别率大幅度提升 改进结构图如…

centos7 安装后不能联网怎么解决

如果您在安装 CentOS 7 后无法连接到互联网,则可以尝试以下步骤来解决该问题: 确认网络连接是否正确配置 请检查您的网络连接是否配置正确。您可以通过运行以下命令来检查您的网络连接状态: 复制 ip addr show如果您看到类似于 enp0s3 或 …

pta L1-008 求整数段和

L1-008 求整数段和 分数 10 全屏浏览 切换布局 作者 杨起帆 单位 浙大城市学院 给定两个整数A和B,输出从A到B的所有整数以及这些数的和。 输入格式: 输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分隔。 输…

Javascript作用域—Javascript基础篇

作用域是在运行时代码中的某些特定部分中变量,函数和对象的可访问性。换句话说,作用域决定了代码区块中变量和其他资源的可见性。 作用域可以分为以下几种类型: 全局作用域(Global Scope):全局作用域是整个…

算法---动态规划练习-7(按摩师)【类似打家劫舍】

按摩师 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址:点这里 2. 讲解算法原理 首先,给定一个整数数组 nums,其中 nums[i] 表示第 i 天的预约时间长度。 定义两个辅助数组 f 和 g,长度都为 n(n 是数组…

【WPF应用21】WPF 中的 TextBox 控件详解与示例

在 Windows Presentation Foundation (WPF) 中,TextBox 控件是一个强大的输入控件,允许用户输入、编辑和选择文本。TextBox 控件在各种应用程序中都非常常见,例如表单、对话框和编辑器。本文将详细介绍 TextBox 控件的功能、使用方法、属性、…

python爬虫----python列表高级

小伙伴们,大家好!今天学习的内容是python列表高级。 1、添加元素 append:在列表末尾添加元素 A [xiaoWang, xiaoZhang, xiaoHua] print("添加之前,列表A的数据:", A)temp input(请输入要添加的学生姓名:) A.append…

Gartner 公布 2024 年八大网络安全预测

近日,Gartner 安全与风险管理峰会在悉尼举行,旨在探讨网络安全的发展前景。 本次峰会,Gartner 公布了 2024 年及以后的八大网络安全预测。 Gartner 研究总监 Deepti Gopal 表示,随着 GenAI 的不断发展,一些长期困扰网…

【项目技术介绍篇】若依管理系统功能介绍

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过大学刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是&#xff0…

Android ViewBinding 使用

Android ViewBinding 使用 一、引言 随着 Android 开发的不断发展,对于视图绑定的需求也日益增长。ViewBinding 是 Android Jetpack 中的一个功能,它可以帮助开发者以更安全、更简洁的方式引用视图。本教程将详细介绍如何在 Android 项目中使用 ViewBi…

【Web应用技术基础】CSS(5)——表格样式

第一题&#xff1a;表格边框 .html <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>HTML – 简单表格</title><link rel"stylesheet" href"step1/CSS/style.css"></head><bod…

使用改头换面之后的ExoPlayer实现Android视频播放

使用 ExoPlayer 实现 Android 视频播放 概览 在 Android 应用开发中实现视频播放是一个常见需求&#xff0c;尤其在视频流和 IPTV 应用中更为突出。本文将介绍如何在 Android 应用中使用 ExoPlayer 实现高效、流畅的视频播放&#xff0c;内容将包括 Java 和 Kotlin 两种语言的…

2024年数字IC秋招-海康威视-数字逻辑设计工程师-笔试题

文章目录 前言一、多选题1、下面属于AXI定义的传输通道的是2、在SystemVerilog语言中&#xff0c;如果想要约束随机变量x在a和b之间&#xff0c;以下代码中正确的是?3、UVM的通信接口类型包括哪些?4、常见的代码覆盖率收集包括哪些?5、关于linux和windows操作系统的使用&…

Windows无法安装torch==1.4.0

在conda中&#xff0c;每创建一个虚拟环境&#xff0c;就要重新配置其中的pytorch 这次我创建的虚拟环境需要torch1.4.0的版本。 torch网址&#xff1a;https://pytorch.org/get-started/previous-versions/ 解决办法 按以下代码进行安装&#xff1a; pip install torch0.4.0…

JAVA HTTP大文件断点续传上传

功能&#xff1a;大文件上传&#xff0c;断点续传&#xff0c;文件夹上传&#xff0c;重复文件检测&#xff0c;离线进度信息保存&#xff0c;音视频信息读取 优势&#xff1a;无限授权&#xff0c;开源开放&#xff08;自主可控&#xff09;&#xff0c;长期维护 场景&#…

线程创建的几种方式

1.继承Thread类 class MyThread extends Thread {public void run() {// 线程执行的任务for (int i 0; i < 5; i) {System.out.println("Thread: " i);try {Thread.sleep(1000); // 使线程休眠 1 秒} catch (InterruptedException e) {e.printStackTrace();}}}…

unity中 鼠标按下移动端与pc端的位置

if (Input.GetMouseButtonDown(0)) { Vector2 V Input.touchCount > 0 ? Input.GetTouch(0).position : new Vector2(Input.mousePosition.x, Input.mousePosition.y); } 射线检测 if (Input.GetMouseButtonDown(0)) { …

动态规划入门(数字三角形模型)

备战2024年蓝桥杯&算法学习 -- 每日一题 Python大学A组 试题一&#xff1a;摘花生 试题二&#xff1a;最低通行费用 试题三&#xff1a;方格取数 试题四&#xff1a;传纸条 试题一&#xff1a;摘花生 【题目描述】 Hello Kitty想摘点花生送给她喜…

CImage 类及其常用成员函数用法实例详解 一

Cimage类是一个用于处理图像的类&#xff0c;它的主要用途是方便地创建、编辑、保存和显示图像。Cimage类支持多种图像文件格式&#xff0c;包括BMP、GIF、JPG、PNG和TIF等。较CBitmap类使用起来更方便。其构造函数及成员函数如下&#xff1a; 下面详细说明CImage常用成员函数的…