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

news2024/11/29 12:55:08

【大模型驯化-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 np


def 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(['其他'])
                continue
            out.append(sp[-1])
        except Exception as e:
            print("-----", e)
            raise Exception("自定义异常信息")
    # print(out)
    return out

def 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 = 30
    data = pd.read_csv('xx', sep="\t") 
    result = []
    cnt = 0
    notes = []
    all_notes = []
    predict = []
    for i in data.values:
        notes.append(i[-1])
        if len(notes) < once_request_count:
            continue
        once_request(result, notes, all_notes)
    if len(notes) > 0:
        once_request(result, notes, all_notes)
    cnt += 1

    df1 = pd.DataFrame({
        "text": all_notes,
        "result": result
    })
    print(df1)
    df1.to_csv('result', index=False, sep='\t')

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

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

相关文章

『FPGA通信接口』LVDS接口(4)LVDS接收端设计

文章目录 1.LVDS接收端概述2逻辑框图3.xapp855训练代码解读4.接收端发送端联调5.传送门 1.LVDS接收端概述 接收端的传输模型各个属性应该与LVDS发送端各属性一致&#xff0c;例如&#xff0c;如果用于接收CMOS图像传感器的图像数据&#xff0c;则接收端程序的串化因子、通道个…

批量推送邮件如何高效实现?邮件推送技巧?

批量推送邮件有哪些注意事项&#xff1f;如何优化邮件推送效果&#xff1f; 无论是市场营销、客户服务还是内部沟通&#xff0c;批量推送邮件都发挥着关键作用。然而&#xff0c;如何高效实现批量推送邮件却是一个需要深思的问题。AokSend将探讨一些提高批量推送邮件效率的方法…

C++ GPU编程(英伟达CUDA)

安装编译环境 https://developer.download.nvidia.com/compute/cuda/12.5.0/local_installers/cuda_12.5.0_555.85_windows.exe CMakeLists.txt cmake_minimum_required(VERSION 3.10)set(CMAKE_CXX_STANDARD 17) set(CMAKE_BUILD_TYPE Release) #set(CMAKE_CUDA_ARCHITECTUR…

手写方法实现字符串例如:“123“与整型例如:123相互转化(面试必会)

目录 二、字符串类型转化为整型 1. 初始化变量 2.定义字符串索引值 3.思考如何将字符1转化为数字1 4. 转化思路 5.考虑字符串转化负数例&#xff1a;-123456 6.完整代码 四、最后 一、前言 在c语言和c中&#xff0c;有许许多多的数据类型相互转化的方法&#xff0c;这里…

CARIS HIPS and SIPSv12 是专业的多波束水深数据和声呐图像处理软件

CARIS HIPS and SIPS是专业的多波束水深数据和声呐图像处理软件。CARIS HIPS and SIPS适用于海洋应用需求。其可靠性和可用性对多波束水深数据处理和声呐图像都是很重要的。CARIS HIPS用于处理多波束水深数据&#xff0c;CARIS SIPS用于处理侧扫声呐图像和多波束背向散射回波数…

卫星智慧停车导航系统有哪些优势

卫星智慧停车导航系统凭借其先进的技术和创新的理念&#xff0c;为现代城市停车问题提供了有效的解决方案。以下是卫星智慧停车导航系统的主要优势&#xff1a; 一、实时性与准确性 卫星智慧停车导航系统通过集成全球卫星定位系统(GPS)和地理信息系统(GIS)&#xff0c;能够实时…

Redis 持久化策略

Redis 提供了多种持久化机制&#xff0c;用于将数据保存到磁盘中&#xff0c;以防止因服务器重启或故障而导致的数据丢失。主要的持久化策略有两种&#xff1a;RDB (Redis Database) 和 AOF (Append Only File)&#xff0c;即当 Redis 服务器重新启动时&#xff0c;会读取相应的…

自研地面站!自主开源无人飞行系统 Prometheus V2 版重大升级详解

自主开源无人飞行系统 Prometheus V2 相对于 Prometheus V1 在多方面做了重大的升级&#xff0c;今天我们将聊聊 Prometheus V2 的地面站升级。 地面站的重大提升 熟悉 Prometheus 的小伙伴们可能知道&#xff0c;V1 版本是没有专门的地面站的。而在 Prometheus V2 中&#x…

【MAVEN学习 | 第2篇】Maven工程创建及核心功能

文章目录 一. 基于IDEA的Maven工程创建1.1 Maven工程GAVP属性&#xff08;1&#xff09;GroupID 格式&#xff08;2&#xff09;ArtifactID 格式&#xff08;3&#xff09;Version版本号格式&#xff08;4&#xff09;Packaging定义规则 1.2 IDEA构建Maven JavaSE工程1.3 IDEA构…

大模型培训 AUTOWEBGLM:自动网页导航智能体

大语言模型&#xff08;LLMs&#xff09;在智能代理任务中发挥着重要作用&#xff0c;尤其是在网络导航方面。然而&#xff0c;现有的代理在真实世界的网页上表现不佳&#xff0c;主要原因网络导航代理面临着三大挑战&#xff1a;网页上行动的多样性、HTML文本的处理限制以及开…

数据结构6---树

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

模块化沙箱

模块化沙箱是什么&#xff1f;模块化沙箱有什么作用&#xff1f; 模块化沙箱是一种高灵活性和高扩展性的数据安全产品&#xff0c;通过选择不同的沙箱模块&#xff0c;满足不同的安全需求。 同时&#xff0c;模块化沙箱也是零信任的重要一环&#xff0c;根据企事业单位各类国…

11、鸿蒙学习—UDID获取方法

一、手机的UDID获取方法如下&#xff1a; 1、打开“设置 > 关于手机”&#xff0c;多次点击版本号&#xff0c;打开开发者模式。 2、打开“设置 > 系统和更新”&#xff0c;在最下方找到“开发人员选项”&#xff0c;打开“USB调试”开关。 3、使用PC连接手机后&#…

网红和主播们是用的什么美颜工具?深入剖析美颜sdk与美颜Api

在现代社交媒体和直播平台的兴起中&#xff0c;网红和主播们依靠精美的外表吸引大量观众&#xff0c;获得高人气和收益已成为常态。这其中&#xff0c;美颜工具起到了至关重要的作用。这篇文章将深入剖析网红和主播们常用的美颜工具&#xff0c;特别是美颜SDK和美颜API的原理和…

想要成为程序员,首先你需要掌握这这三种编程语言!

作为程序员&#xff0c;掌握多种编程语言是非常有价值的&#xff0c;因为不同的编程语言有不同的优势和适用场景。然而&#xff0c;要指定“必须掌握”的三种编程语言是相当主观的&#xff0c;因为这取决于个人的职业目标、所在行业的需求以及技术趋势。不过&#xff0c;以下三…

NodeJs实现对本地 mysql 数据库的增删改查

写在前面 今天我们接着写nodejs对数据库的操作&#xff0c;今天实现简单的增删改查&#xff0c;读之前请先移步到这里NodeJs 连接本地 mySql 数据库获取数据,避免后续一些代码出险阅读断层。 安装 nodemon npm install nodemon因为 nodejs 的服务是本地启动&#xff0c;避免后…

数据治理工程师CDGA备考心得、时间安排、题库资源

1.写在前面 之前做一些数据质量控制、元数据、主数据相关工作&#xff0c;一直忙于工作&#xff0c;没有去往考证的方面想&#xff0c;去年年底心血来潮就决定考一考&#xff0c;证多不压身嘛&#xff08;也有部分学生向我咨询&#xff09;&#xff0c;资源在文章结尾&#xff…

图说SpringCloudStream消息驱动

SpringCloud Stream消息驱动实现原理 通过定义Binder绑定器作为中间层&#xff0c;实现了应用程序和消息中间件之间实现细节的隔离。通过向应用程序暴露统一的Channel通道&#xff0c;可以让应用程序不再需要考虑各种不同的消息中间件实现的兼容性问题。当需要升级消息中间件&a…

【软件测试入门】测试用例经典设计方法 — 因果图法

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、因果图设计测试用例的步骤 1、分析需求 阅读需求文档&#xff0c;如果User Case很复杂&am…

光大证券-放量恰是入市时:成交量择时初探

核心算法 1. 在熊市中&#xff0c;各成交量时序排名出现的频次基本随排名变小而单调增大&#xff1b;在牛市中&#xff0c;各成交量时序排名出现的频次基本随排名变小而单调减少&#xff1b;而在震荡市中&#xff0c;各成交量时序排名出现的频次两头大&#xff0c;中间小&…