【大模型驯化-Prompt】企业级大模型Prompt调试技巧与batch批量调用方法

【大模型驯化-Prompt】企业级大模型Prompt调试技巧
 
本次修炼方法请往下查看
在这里插入图片描述

🌈 欢迎莅临我的博客个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地!
🎇 免费获取相关内容文档关注: 微信公众号 发送 pandas 即可获取
🎇 相关内容
视频**讲解 B站

🎓 博主简介:AI算法驯化师,混迹多个大厂搜索、推荐、广告、数据分析、数据挖掘岗位 个人申请专利40+,熟练掌握机器、深度学习等各类应用算法原理和项目实战经验

🔧 技术专长: 在机器学习、搜索、广告、推荐、CV、NLP、多模态、数据分析等算法相关领域有丰富的项目实战经验。已累计为求职、科研、学习等需求提供近千次有偿|无偿定制化服务,助力多位小伙伴在学习、求职、工作上少走弯路、提高效率,近一年好评率100%

📝 博客风采: 积极分享关于机器学习、深度学习、数据分析、NLP、PyTorch、Python、Linux、工作、项目总结相关的实用内容。

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

🌵文章目录🌵

  • 🎯 一、基本介绍
  • 💡 2. 使用方法
    • 2.1 网页版
    • 2.1 接口版
  • 🔍 3. Prompt的一些创建心得
  • 🔧 4. Prompt高阶用法

下滑查看解决方法

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

  

🎯 一、基本介绍

  Prompt 工程是创建提示或指导像 ChatGPT 这样的语言模型输出的过程。它允许用户控制模型的输出并生成符合其特定需求的文本。
   prompt的设计一定要有逻辑和系统性,现在大模型对于文本的分类、抽取、生成、理解等nlp任务都特别的强大,在通用的领域里面基本不会比传统的模型效果差,但是受限于gpu资源和预算,目前对于大规模的任务很多都是通过大模型进行样本的修正和标注,在用小模型进行在线部署,后续如果性能提高、费用降低很多之前的小模型都会基于大模型进行任务的处理。

  • prompt的三要素:
  • 任务:对提示要求模型生成的内容进行清晰而简洁的陈述。
  • 指令:在生成文本时模型应遵循的指令。
  • 角色:模型在生成文本时应扮演的角色。
  • 对于prompt来说,最为重要的几个点,就是上面的三个要素,在设计prompt时,一定需要表达明确和具体,从而使得整体prompt逻辑顺畅。

💡 2. 使用方法

2.1 网页版

  大模型的发展使得当前的工作效率都有了极大的提升,当前不管是pm、运营、研发都不得不提升对大模型的使用,下面介绍一些免费的网页版本大模型使用方法,具体主要有如下的一些工具:
  kimi: 网页地址,这个对话助手是用来写长文章、看论文的超级好手,下面为一个例子具体怎么去用来看论文:
在这里插入图片描述
  对于上述图片中红色框中的东西就是为prompt,对于大多数非大模型开发者来说,都是通过网页对话的方式进行,如上述的prompt为对论文进行摘要,如果想要输出一定的格式,则需要修改上述的输入为:

https://arxiv.org/pdf/2106.09685 请总结该篇文章,输出格式为:
1. 核心思想总结; 2. 论文中的创新点总结; 3. 数据对比理论推导详细介绍

   豆包:地址,这个产品为字节旗下的ai产品,在语音对话上面有极大的优势,可以用来锻炼英语,大家感兴趣的可以下载app来玩玩,目前在产品体验上面还是相当不错的

2.1 接口版

  对于大多数的大模型开发者来说,网页版都只能是临时的处理一个特定的任务,而在企业工作时,通常需要对多个数据进行处理,下面以chatgpt为主的代码调用方法:

from openai import OpenAI
def get_chatgpt_result(prompt_info):"""chatgpt的运行结果"""client = OpenAI(api_key="sk-xxx",)messages = [{"role": "user", "content": prompt_info}]response = client.chat.completions.create(model="gpt-3.5-turbo",messages=messages,temperature=0, # this is the degree of randomness of the model's output)return response.choices[0].message["content"]

  如上述的代码所示,通过接口调用chatgpt相对来说也比较简单,只需要修改里面的参数传入即可

  

🔍 3. Prompt的一些创建心得

  prompt 通用的一些提示词 :生成、总结、严格按照、提取、xx专家

  • 提示技巧
  • 具体的模板为:按照以下指示生成[任务]:[指令]
  • 其中任务指的是具体的目标,指令指的是生成目标的要求
  • 具体的例子:按照以下指示生成【符合相关法律法规的法律文件】:【文件应符合相关法律法规】
  • 角色技巧
  • 具体的模板为:作为[角色]生成[任务]
  • 其中角色指的是在生产任务时某个领域的专家,任务就是具体的目标
  • 具体的例子:作为【律师】,生成【法律文件】
  • 提示+角色
  • 将上述两个技巧结合起来的具体例子如下所示:
  • 任务:为新智能手机生成产品描述
  • 指令:描述应该是有信息量的,具有说服力,并突出智能手机的独特功能
  • 角色:市场代表 种子词:“创新的”
  • 提示公式:作为市场代表,生成一个有信息量的、有说服力的产品描述,突出新智能手机的创新功能。该智能手机具有以下功能【插入您的功能】
  • 对比提示
  • 具体的模板为:基于[数量]个示例生成文本,这种方式可以使得模型聚焦到某一个点上,大幅提升模型对文本的理解能力,在特定的任务上使用比较多
  • 其中数量为某一个任务的现实存在的对比对象
  • 使用少量示例【3个其他电子阅读器】为这款新电子阅读器生成评论
  • 思考提示
  • 具体的模板:【让我们思考|讨论|谈谈|等一下】+ 任务,该方法在用于生成式内容中比较常用,可以模拟一个人去思考具体的任务,在相对推理的提示中用的比较多
  • 具体的例子:【让我们讨论】人工智能的当前状态
  • 自洽提示
  • 用于确保ChatGPT的输出与提供的输入一致。这种技术对于事实核查、数据验证或文本生成中的一致性检查等任务非常有用。
  • 具体公式:【生成】与以下产品信息一致的产品评论【插入产品信息】
  • 具体例子:以与提供的上下文一致的方式完成以下句子【插入句子】
  • 任务:检查给定新闻文章的一致性
    输入文本:“文章中陈述该城市的人口为500万,但后来又说该城市的人口为700万。”
    提示公式:“请确保以下文本是自洽的:文章中陈述该城市的人口为500万,但后来又说该城市的人口为700万。”
  • 种子词提示
  • 种子词提示是一种通过提供特定的种子词或短语来控制ChatGPT输出的技术。种子词提示的提示公式是种子词或短语
  • 具体的模板:请根据以下【种子词】生成文本
  • 具体例子:作为研究员,请在与种子词“科学”相关且以研究论文的形式书写的情况下完成以下句子:【插入句子】
  • 整合提示
  • 这种方法的具体作用用于将当前的信息和目前已经存在的信息进行融合到一起,生成新的信息的过程
  • 具体公式:将以下信息与关于[具体主题]的现有知识整合:[插入新信息]
  • 多项式提示
  • 这种技术向模型提供一个问题或任务以及一组预定义的选项作为潜在答案,通过这种方法可以取代传统技术来进行文本分类的技术
  • 具体的模板:通过选择以下选项之一回答以下问题:[插入问题] [插入选项1] [插入选项2] [插入选项3]
  • 通过改写上述的模板,增加每个选项的解释,和输出要求就可以得到使用gpt进行文本分类的效果,而且准确率都比较高
  • 控制提示
  • 控制生成提示是一种技术,可让模型在生成文本时对输出进行高度控制。该方法在文本生成的时候特别的适用,通过设计一个生成模板,使得生成的内容按照一定的逻辑进行输出
  • 具体的模板:生成遵循以下语法规则的文本:[插入规则]:[插入上下文]
  • 抽取提示
  • 允许模型在保留其主要思想和信息的同时生成给定文本的较短版本。该方法主要应用在文本的摘要生成中,通过设计对长文本进行主题思想的提取得到想要的核心内容
  • 具体模板:【规则】+【文章】
  • 这种方法在目前的文本摘要抽取中用的比较多,具体会和控制提示一起连用,用控制提示来制定抽取的规则
  • 对抗提示
  • 它允许模型生成抵抗某些类型的攻击或偏见的文本,种技术可用于训练更为稳健和抵抗某些类型攻击或偏见的模型。
  • 具体模板:生成难以分类为【插入标签】的文本
  • 这种方法通常用来进行传统分类模型的样本微调,通过gpt生成大量传统模型无法进行分类的样本,从而丰富传统模型的样本,使得模型的样本更加丰富,最后提升传统模型的鲁棒性
  • 聚类提示
  • 聚类提示是一种技术,它可以让模型根据某些特征或特点将相似的数据点分组在一起,这种方法可以取代传统的基于机器学习聚类的方法
  • 具体的模板:将以下新闻文章根据主题分组成簇:【插入文章】
  • 该方法通常和控制提示一起连用,将控制提示作为聚类的解释说明和游戏规则进行设计
  • 强化学习提示
  • 强化学习提示是一种技术,可以使模型从过去的行动中学习,并随着时间的推移提高其性能
  • 具体模板:使用强化学习将以下文本[插入文本]从[插入语言]翻译成[插入语言]
  • 这种方法在于想要生成与之对应的文本风格
  • ner提取学习
  • ner模型在文本理解和抽取里面是一个比较重要的模型,目前基于gpt进行ner的抽取相对传统的方法准确率基本不会差
  • 具体模板:[插入文章]上执行命名实体识别,并识别和分类人名、组织机构、地点和日期

🔧 4. Prompt高阶用法

  通常企业里面实际操作时,我们通常提取的prompt特别的长,但是输入的文本都比较短,这个时候如果每次循环的调用会使得整个模型的耗费特别的多,因此,我们需要将多个输入合并一个batch的输入进行判断,可以极大的降低输入token的耗费情况,具体的实现代码如下所示:

import openai
import re
import datetime
import pandas as pd
import time
import math
import numpy as npdef get_prompt(info):"""对样本进行标签设置"""prompt_info = ("""你是一个xx专家,根据内容解释:第一大类:个别字、词不文明,包含但不仅限于以下类别,且需要关注谐音等近似词汇和表情包1)涉黄涉性或者言语带有猥亵成分,如:靓女、大美女、丝袜、啪啪、炮、妹子、骚、鸡巴、嫖娼等;2)涉政,如:港澳台等领土范围、国家政权、八嘎牙路、牙路等;3)涉恐,如:虚假不实言论等;请对内容输出一个概率为0-1之间的概率值,1为越不会引发争议和舆情风险,0为越容易引发争议和舆情风险,如果判断为0则把触发的条件也加上:内容评论信息:内容1:xx笔记2:傻狗门卫,睡得跟死猪似的,答案:内容1:1内容2:0,傻狗内容信息:{info}答案:""")# print("---", notes)notes_str = "\n".join(["笔记" + str(index + 1) + ":" + notes[index] for index in range(len(notes))])prompt = prompt_info.format(notes=notes_str)print(prompt)result = openai.ChatCompletion.create(model="gpt-4-0613",# model="gpt-3.5-turbo",user="user参数可传递一个随机id,用于排查问题,例如traceId、uuid、requestId等",messages=[{"role": "user", "content": prompt},])once = result['choices'][0]['message']['content']print("once", once)res = once.split('\n')out = []for tmp in res:try:sp = re.split(":|:", tmp)if len(sp) != 2:out.append(['其他'])continueout.append(sp[-1])except Exception as e:print("-----", e)raise Exception("自定义异常信息")# print(out)return outdef once_request(result, notes, all_notes):label = 'null'label_index = []try:label = get_prompt(notes)except Exception as e:print(f"the openai is error is: {e}")if len(label) == len(notes):result.extend(label)all_notes.extend(notes)notes.clear()if __name__ == '__main__':openai.api_key = "xx"openai.api_base = "xx"once_request_count = 30data = pd.read_csv('xx', sep="\t") result = []cnt = 0notes = []all_notes = []predict = []for i in data.values:notes.append(i[-1])if len(notes) < once_request_count:continueonce_request(result, notes, all_notes)if len(notes) > 0:once_request(result, notes, all_notes)cnt += 1df1 = pd.DataFrame({"text": all_notes,"result": result})print(df1)df1.to_csv('result', index=False, sep='\t')

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

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

相关文章

网上预约就医取号系统

摘 要 近年来&#xff0c;随着信息技术的发展和普及&#xff0c;我国医疗信息产业快速发展&#xff0c;各大医院陆续推出自己的信息系统来实现医疗服务的现代化转型。不可否认&#xff0c;对一些大型三级医院来说&#xff0c;其信息服务质量还是广泛被大众所认可的。这就更需要…

@ModelAttribute

基础知识 1.ModelAttribute注解源码&#xff0c;从中可以知道&#xff0c;该注解可以标注在参数上和方法上 2.应用场景&#xff1a;先大致有个概念&#xff0c;可以用来存储项目根路径 3.介绍&#xff1a;ModelAttribute 是 Spring 框架中的一个注解&#xff0c;用于在 Spring …

Linux Centos 环境下搭建RocketMq集群(双主双从)

1、下载rocketmq的包 下载 | RocketMQ 2、配置环境变量 1、编辑环境变量文件&#xff1a;vim /etc/profile2、加入如下配置&#xff1a; #rocketmq 4.9.8 ROCKETMQ_HOME/home/rocketmq/rocketmq-4.9.8 export PATH${ROCKETMQ_HOME}/bin:${PATH}3、刷新配置&#xff1a;source…

修复kazam意外中断的视频文件

0. Problem 在用kazam录视频的过程中&#xff0c;PC意外重启了&#xff0c;然后kazam没有把文件自动转换成MP4&#xff0c;而是存为以下两个文件&#xff1a; kazam_xxxxx.movie kazam-xxxxx.movie.mux这两个文件一个0k&#xff0c;另一个是有size的&#xff0c;但是没办法直…

计算机组成原理 | 计算机系统概述

CPI:(Clockcycle Per Instruction)&#xff0c;指每条指令的时钟周期数。 时钟周期&#xff1a;对CPU来说&#xff0c;在一个时钟周期内&#xff0c;CPU仅完成一个最基本的动作。时钟脉冲是计算机的基本工作脉冲&#xff0c;控制着计算机的工作节奏。时钟周期 是一个时钟脉冲所…

Elk安装及使用

es安装及使用 单机版安装 集群安装 132 node-01 133 node-02 135 node-03 日志用户权限有问题 看日志 解决方案&#xff1a; 出现错误后&#xff0c;再次重启前&#xff0c;需要删除三个节点/data/下的内容 9300-http 9300-tcp logstasha安装及使用 Ssh错误 Yum安装默认路…

小巧悦耳的百元耳机,也有纯净的音乐享受,西圣AVA2体验

无论是居家休闲还是出门在外&#xff0c;音乐成为了许多人生活中不可或缺的一部分。特别是在拥有一款既经济又好听的蓝牙耳机之后&#xff0c;我们就可以在通勤路上和办公室里&#xff0c;隔绝外界干扰&#xff0c;找回属于自己的天地&#xff0c;提升生活品质。目前我用的是一…

【shell脚本速成】函数

文章目录 一、函数1.1、函数介绍1.2、函数定义1.3、函数调用 &#x1f308;你好呀&#xff01;我是 山顶风景独好 &#x1f388;欢迎踏入我的博客世界&#xff0c;能与您在此邂逅&#xff0c;真是缘分使然&#xff01;&#x1f60a; &#x1f338;愿您在此停留的每一刻&#xf…

LeetCode 19.删除链表的倒数第N个结点

链接 https://leetcode.cn/problems/remove-nth-node-from-end-of-list/description/ 题目: 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5…

JMeter的基本使用与性能测试,完整入门篇保姆式教程

Jmeter 的简介 JMeter是一个纯Java编写的开源软件&#xff0c;主要用于进行性能测试和功能测试。它支持测试的应用/服务/协议包括Web (HTTP, HTTPS)、SOAP/REST Webservices、FTP、Database via JDBC等。我们最常使用的是HTTP和HTTPS协议。 Jmeter主要组件 线程组&#xff08…

基于springboot实现影院订票系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现影院订票系统演示 摘要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本影院订票系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在…

python20 函数的定及调用

函数的定及调用 函数是将一段实现功能的完整代码&#xff0c;使用函数名称进行封装&#xff0c;通过函数名称进行调用。以此达到一次编写&#xff0c;多次调用的目的 用 def 关键字来声明 函数 格式&#xff1a; def 函数名(参数列表):函数体[:return 返回值是可选的&#xff0…

MySQL按小时分组统计日志记录数量

业务场景 MySQL按小时分组统计日志记录数量。最近需要统计一些日志流水&#xff0c;统计出打卡的高峰期&#xff0c;所以需要对日志流水按小时进行分组统计&#xff0c;统计出每半小时或者每小时内的打卡次数 按小时统计 这里使用DATE_FORMAT函数&#xff0c;然后再根据crea…

电脑怎么录制游戏视频?轻松捕捉每一帧精彩

随着游戏产业的蓬勃发展&#xff0c;越来越多的玩家不仅满足于在游戏世界中的探索与冒险&#xff0c;更希望将自己的游戏精彩瞬间记录下来&#xff0c;分享给更多的朋友。可是电脑怎么录制游戏视频呢&#xff1f;本文旨在为广大游戏爱好者提供一份详细的电脑游戏视频录制攻略&a…

excel基本操作

excel 若要取消在数据表中进行的所有筛选 步骤操作&#xff1a; 单击“数据”选项卡。在“排序和筛选”组中&#xff0c;找到“清除”按钮。点击“清除”按钮。 图例&#xff1a; 将文本文件的数据导入到Excel工作表中进行数据处理 步骤&#xff1a; 在Excel中&#xff0c…

气象数据NC、grb2解析成矢量json、CMIS、MICPS及图片应用到webgis

一、基础概念 气象数据通常以多种格式存储和交换&#xff0c;以适应不同的应用需求和处理工具。以下是一些常见的气象数据格式及其转换方法的概述&#xff1a; 常见气象数据格式 1. NetCDF&#xff08;Network Common Data Form&#xff09;&#xff1a;一种自描述、自包含的…

js如何使得四舍五入的百分比之和为100%

在JavaScript中&#xff0c;如果你想要确保一组四舍五入后的百分比之和严格等于100%&#xff0c;那么你不能直接对每个百分比进行四舍五入&#xff0c;因为四舍五入会引入误差。但是&#xff0c;你可以采用一种策略&#xff0c;即先对所有的百分比进行常规的四舍五入&#xff0…

数据结构6---树

一、定义 树(Tree)是n(n>0)个结点的有限集。当n0时成为空树,在任意一棵非空树中: 1、有且仅有一个特定的称为根(Root)的结点; 2、当n>1时,其余结点可分为m(m>日)个互不相交的有限集T1、T2、...、 Tm&#xff0c;其中每一个集合本身又是一棵树&#xff0c;并且称为根的…

“打造智能售货机系统,基于ruoyi微服务版本生成基础代码“

目录 # 开篇 1. 菜单 2. 字典配置 3. 表配置 3.1 导入表 3.2 区域管理 3.3 合作商管理 3.4 点位管理 4. 代码导入 4.1 后端代码生成 4.2 前端代码生成 5. 数据库代码执行 6. 点位管理菜单顺序修改 7. 页面展示 8. 附加设备表 8.1 新增设备管理菜单 8.2 创建字…

Python武器库开发-武器库篇之SMB服务暴力破解(五十五)

Python武器库开发-武器库篇之SMB服务暴力破解(五十五) SMB服务&#xff08;Server Message Block&#xff09;是一种用于文件共享、打印机共享和其他资源共享的网络协议。它最初由IBM开发&#xff0c;后来被微软广泛采用。 SMB服务允许多台计算机在网络上共享文件和资源&…