基于 llama2 的提示词工程案例2

优化大型语言模型(LLMs)

优化大型语言模型(LLMs)中的提示词(prompts)是提高模型性能和输出相关性的重要手段。以下是一些优化提示词的方向:

  • 明确性:确保提示词清晰明确,直接指向所需的信息或任务。

  • 上下文提供:在提示词中提供足够的上下文信息,帮助模型更好地理解问题。

  • 简洁性:尽量使提示词简洁,避免不必要的信息,以免造成混淆。

  • 语法正确:使用正确的语法和拼写,因为模型可能会模仿提示词中的语法结构。

  • 使用关键词:在提示词中包含与查询相关的关键词或概念。

  • 避免歧义:尽量避免模糊不清的表述,减少模型产生多种解释的可能性。

  • 指令性:如果需要模型执行特定任务,使用直接的指令性语言。

  • 逐步细化:如果问题复杂,可以将其分解为几个小步骤,在提示词中逐步引导。

  • 使用示例:提供示例或模板,帮助模型理解预期的输出格式。

  • 迭代测试:不断测试和迭代提示词,找到最有效的表达方式。

  • 利用反馈:根据模型的输出反馈调整提示词,以提高其性能。

  • 限制和边界:在需要时,明确提示词中的界限和限制,指导模型生成符合要求的输出。

  • 元提示词:使用元提示词(meta-prompts)来指导模型理解任务的高层次目标。

  • 结合搜索结果:如果模型结合了搜索能力,优化提示词以更好地利用搜索结果。

  • 用户反馈:根据用户反馈调整提示词,以提高用户满意度和模型的实用性。

元提示词

元提示词(Meta-prompts)是一种特殊的提示词,它们不仅提供给语言模型具体的任务或问题,而且还提供关于如何处理这些任务的额外指导或上下文。元提示词可以看作是“关于提示的提示”。

以下是一些元提示词的用途和例子:

  1. List item 任务说明:提供关于所需任务的详细信息。

    • 例子:“请以公正和详细的方式分析这篇文章的论点。”
  2. 格式指导:指定输出的格式或结构。

    • 例子:“请按照以下格式回答:‘问题:[问题内容] 答案:[答案内容]’。”
  3. 风格指导:指示模型采用特定的风格或语调。

    • 例子:“请用技术性的语言回答这个问题,适合发表在学术期刊上。”
  4. 思维过程:引导模型展示其思考或推理过程。

    • 例子:“在提供答案之前,请先概述你的思考过程。”
  5. 详细程度:指示所需的信息量或详细程度。

    • 例子:“请简要描述这个概念,但不要提供过多的技术细节。”
  6. 角色扮演:让模型扮演一个特定的角色或视角。

    • 例子:“以一个5岁孩子的理解水平解释这个科学概念。”
  7. 限制条件:指出在生成回答时需要考虑的限制或约束。

    • 例子:“在不超过5句话的范围内总结这个故事的主要情节。”

代码实现

模型加载

from time import time
import torch
import transformers
from transformers import AutoTokenizer, AutoModelForCausalLM
from IPython.display import display, Markdown
#`IPython`是一个交互式Python环境的增强版,`IPython.display`是其中一个模块,其中的`display`函数和`Markdown`类用于在Jupyter Notebook或IPython环境中展示富文本内容。
from torch import cuda, bfloat16

#这里也可以使用auto
#设定使用cpu 还是gpu
device = f'cuda:{cuda.current_device()}' if cuda.is_available() else 'cpu'

#加载本地模型
model = 'D:\临时模型\Meta-Llama-3-8B-Instruct'

#加载config 文件
model_config = transformers.AutoConfig.from_pretrained(
   model,#模型路径
    trust_remote_code=True,#默认情况下,trust_remote_code 设置为 True。这意味着使用 from_pretrained() 方法加载模型配置文件时,它将下载来自 Hugging Face 模型中心或其他在线资源的配置文件。
    max_new_tokens=1024 #新生成令牌的数量
)

# 加载模型量化
#只有24G的显卡不量化耗时过久
bnb_config = transformers.BitsAndBytesConfig(
    load_in_4bit=True, # 指定以 4 位精度加载模型
    bnb_4bit_quant_type='nf4', # 选择使用 NF4(Normal Float 4)数据类型
    bnb_4bit_use_double_quant=True,# 启用嵌套量化
    bnb_4bit_compute_dtype=bfloat16 #更改计算期间将使用的数据类型 16位浮点数据类型
)

# 加载与模型相匹配的分词器
tokenizer = AutoTokenizer.from_pretrained(model)

#实例化模型
model = transformers.AutoModelForCausalLM.from_pretrained(
    model,#模型的名称或地址
    trust_remote_code=True,#信任的存储库设置为True
    config=model_config, #加载配置文件
    quantization_config=bnb_config,#加载模型量化
    device_map='auto',#使用cpu 或GPU
)

#构建管道
pipeline = transformers.pipeline(
    "text-generation",
    model=model,
    torch_dtype=torch.float16,
    tokenizer=tokenizer,  # 显式指定分词器
    device_map=device,
)

模型测试

def query_model(
    prompt, 
    temperature=0.7,#温度0.7 相对比较活跃的恢复
    max_length=512
    ):
    start_time = time()
    sequences = pipeline(
        prompt,
        do_sample=True,#模型将生成确定性的输出,即在给定输入的情况下,每次运行都会产生相同的结果
        top_k=10,#模型将只考虑概率最高的10个词汇 top_k通常与另一个参数top_p一起使用,
        temperature=temperature,
        num_return_sequences=1,#对于给定的输入,生成模型将只产生一个输出序列。
        eos_token_id=pipeline.tokenizer.eos_token_id,#eos_token通常用于表示句子结束标记
        max_length=max_length,
    )
    answer = f"{sequences[0]['generated_text'][len(prompt):]}\n"
    end_time = time()
    ttime = f"Total time: {round(end_time-start_time, 2)} sec."

    return prompt + " " + answer  + " " +  ttime

#美化输出
def colorize_text(text):
    for word, color in zip(["Reasoning", "Question", "Answer", "Total time"], ["blue", "red", "green", "magenta"]):
        text = text.replace(f"{word}:", f"\n\n**<font color='{color}'>{word}:</font>**")
    return text

提示词

prompt = """
You are an AI assistant designed to answer simple questions.
Please restrict your answer to the exact question asked.
Please limit your answer to less than {size} tokens.
Question: {question}
Answer:
"""

你是一个人工智能助理,旨在回答简单的问题。 请将你的答案限制在所问的确切问题上。 请将您的回答限制为小于{size}个tokens。
问题:{问题} 答复

不同token长度和 max_length长度的比对

token大小控制在32

#token大小控制在32
response = query_model(
    prompt.format(question="What is the surface temperature of the Moon?",#月球表面的温度是多少?
                 size=32), #一个toaken 的大小
    max_length=256)
display(Markdown(colorize_text(response)))

在这里插入图片描述

token大小控制在64

#token大小控制在64
response = query_model(
    prompt.format(question="What is the surface temperature of the Moon?",#月球表面的温度是多少?
                 size=64), #一个toaken 的大小
    max_length=256)
display(Markdown(colorize_text(response)))

在这里插入图片描述

token大小控制在128

#token大小控制在128
response = query_model(
    prompt.format(question="What is the surface temperature of the Moon?",
                 size=128), #一个toaken 的大小
    max_length=256)
display(Markdown(colorize_text(response)))

在这里插入图片描述

不采用 prompt.format 不控制token 的情况下输出

#不采用 prompt.format 不控制token 的情况下输出
response = query_model("What is the surface temperature of the Moon?",
     max_length=256)
display(Markdown(colorize_text(response)))

在这里插入图片描述

max_length=128 且 token长度128

response = query_model(
    prompt.format(question="What is the surface temperature of the Moon?",
                 size=128), #一个toaken 的大小
    max_length=128)
display(Markdown(colorize_text(response)))

在这里插入图片描述

其他提问的返回

response = query_model(
    prompt.format(question="Who was the next shogun after Tokugawa Ieyasu?",
                 size=128), #一个toaken 的大小
    max_length=256)
display(Markdown(colorize_text(response)))

在这里插入图片描述

#不采用 prompt.format
response = query_model("Who was the next shogun after Tokugawa Ieyasu?",
    max_length=256)
display(Markdown(colorize_text(response)))

在这里插入图片描述

修改提示词的返回

提示词1

prompt = """
You are an AI assistant designed to write poetry.
Please answer with a haiku format (17 words poems).
Question: {question}
Answer:
"""
response = query_model(
    prompt.format(question="Please write a poem about Boris Becker wins in tennis",#请写一首关于鲍里斯·贝克尔赢得网球比赛的诗
                 size=256), 
    max_length=256)
display(Markdown(colorize_text(response)))

你是一个人工智能助理,专门用来写诗。 请用俳句形式回答(17个字的诗)。 问题:{问题} 答复
在这里插入图片描述

"""
Golden racket's song Boris Becker's triumphant Victory's sweet echo
金色球拍的歌声鲍里斯·贝克尔胜利的甜蜜回响
"""
response = query_model(
    prompt.format(question="Please write a poem about Shakespeare being lame at playing poker",#请写一首关于莎士比亚不擅长打扑克的诗
                 size=256), 
    max_length=256)
display(Markdown(colorize_text(response)))

在这里插入图片描述

提示词2

prompt = """
You are an AI assistant designed to write poetry.
Please answer with a short poem, with rime, in the style of Shakespeare's poems.
Question: {question}
Answer:
"""
response = query_model(
    prompt.format(question="Please write a poem about Nadia Comaneci winning Montreal Olympiad",
                 size=256), 
    max_length=256)
display(Markdown(colorize_text(response)))

你是一个人工智能助理,专门用来写诗。 请用莎士比亚诗歌风格的带有雾凇的短诗来回答。 问题:{问题} 答复
在这里插入图片描述

提示词3

prompt = """
You are an AI assistant designed to write simple Python code.
Please answer with the listing of the Python code.
Question: {question}
Answer:
"""
response = query_model(
    prompt.format(question="Please write a function in Python to calculate the area of a circle of radius r",
                 size=256), 
    max_length=256)
display(Markdown(colorize_text(response)))

在这里插入图片描述

代码能力的测试

prompt = """
You are an AI assistant designed to write simple Python code.
Please answer with the listing of the Python code.
Question: {question}
Answer:
"""
response = query_model(
    prompt.format(question="Please write a function in Python to calculate the area of a circle of radius r",
                 size=256), 
    max_length=256)
display(Markdown(colorize_text(response)))

在这里插入图片描述

response = query_model(
    prompt.format(question="""Please write a class in Python 
                        to model a phone book (storing name, surname, address, phone) 
                        with add, delete, order by name, search operations.
                        The class should store a list of contacts, each
                        with name, surname, address, phone information stored.
                        """,
                 size=1024), 
    max_length=1024)
display(Markdown(colorize_text(response)))

在这里插入图片描述
以上是文本的全部内容,感谢阅读。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据湖与数据网格:引领组织数据策略的未来

十多年来&#xff0c;组织已经采用数据湖来克服数据仓库的技术限制&#xff0c;并发展成为更加以数据为中心的实体。虽然许多组织已经使用数据湖来探索新的数据用例并改进其数据驱动的方法&#xff0c;但其他组织发现所承诺的好处很难实现。因此&#xff0c;许多数据湖计划的有…

SOLIDWORKS Electrical电气元件智能开孔

实际的电气元器件安装中&#xff0c;一些元器件需要穿过孔洞安装&#xff0c;例如按钮、指示灯会在配电柜的控制面板上&#xff0c;需要穿过控制面板安装。这部分内容放在软件建模、装配时&#xff0c;往往比较复杂因为考虑孔的大小符合元器件规格、孔跟随元器件移动、同一元器…

CR80清洁卡的重要性

在我们日常生活中&#xff0c;身份证、银行卡、信用卡等塑料卡片已经成为了不可或缺的一部分。这些卡片通常符合CR80标准&#xff0c;这意味着它们的尺寸和厚度符合国际标准&#xff0c;为了保证这些卡片的读取和使用效果&#xff0c;清洁维护显得尤为重要。 什么是CR80卡&…

Linux学习之禁用防火墙

查看防火墙状态 systemctl status firewalld.service 第一行前面的圆圈是有颜色的就是开启状态 黑色的就是关闭状态 关闭防火墙 systemctl stop firewalld.service 输入密码认证 再次查看防火墙状态 systemctl status firewalld.service 第一行前面的圆圈变成黑色说明关闭…

杰理-701-单线灯-ws2812-驱动

杰理-701-单线灯-ws2812-驱动 LED_gradual_open(); //调用后 呼吸灯 set_led_colour&#xff08;R,G,B&#xff09;&#xff1b;//具体颜色 spi_dma_set_addr_for_isr //spi 配置dma 后灯才亮 #define LED_H 0x7c #define LED_L 0x40 发送高位和地位的字节&#xff0c;具体…

UP互助 帮助UP起号做视频 支持B站和抖音

【软件名字】&#xff1a;UP互助 【软件版本】&#xff1a;1.0 【软件大小】&#xff1a;17.5MB 【软件平台】&#xff1a;安卓 【测试机型】&#xff1a;小米9 1.随便登个邮箱&#xff0c;添加自己平台的频道&#xff0c;然后就可以帮助别人&#xff0c;添加频道后在添加…

仓库管理系统需求调研要点

仓库管理系统需求调研 一、仓库的作用 仓库分类 原材料仓库&#xff1a;用于存放生产所需的原材料和零部件&#xff0c;需要保持原材料的质量和数量稳定。半成品仓库&#xff1a;存放生产过程中的半成品和在制品&#xff0c;需要保持良好的生产流程和及时出库。成品仓库&#x…

【Arduino IDE 2】Windows平台安装ESP8266 NodeMCU LittleFS Uploader(文件上传插件)

在Arduino IDE 2&#xff08;2.2.1或更高版本&#xff09;上&#xff0c;如何安装基于ESP8266 NodeMCU的LittleFS文件系统上传插件&#xff0c;以及如何将文件上传到ESP8266 NodeMCU板文件系统。 一、LittleFS简介 LittleFS是一个为微控制器创建的轻量级文件系统&#xff0c;可…

智慧校园能解决什么问题?

智慧校园是学校信息化建设的基础载体&#xff0c;他将校园工作的各个业务模块融合&#xff0c;形成一个有机的整体。同时智慧校园又一种先进的教育管理模式&#xff0c;它利用信息技术如物联网、大数据、云计算、人工智能等&#xff0c;来提升教育质量和管理效率。 同时&#…

RabbitMQ(Docker 单机部署)

序言 本文给大家介绍如何使用 Docker 单机部署 RabbitMQ 并与 SpringBoot 整合使用。 一、部署流程 拉取镜像 docker pull rabbitmq:3-management镜像拉取成功之后使用下面命令启动 rabbitmq 容器 docker run \# 指定用户名-e RABBITMQ_DEFAULT_USERusername \# 指定密码-e R…

Java_异常

介绍 编译时异常&#xff1a; 除RuntimeException和他的子类&#xff0c;其他都是编译时异常。编译阶段需要进行处理&#xff0c;作用在于提醒程序眼 运行时异常&#xff1a; RuntimeException本身和其所有子类&#xff0c;都是运行时异常。编译阶段不报错&#xff0c;是程序…

【Linux】gcc/g++的使用

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; Linux &#x1f389;其它专栏&#xff1a; C初阶 | C进阶 | 初阶数据结构 小伙伴们大家好&#xff0c;本片文章将会讲解Linux中gcc/g使用的相关内容。 如果看到最后您觉得这篇文章写得不错…

登录校验总览-jwt令牌

一、前置问题 为什么要登录校验&#xff1f;登录校验&#xff0c;就是判断访问资源的用户是否是合法用户&#xff0c;保障安全。如果不设置登录校验&#xff0c;就可以跳过登录&#xff0c;直接通过url访问资源。二、登录校验实现思路&#xff1a; 在服务器端对请求进行统一拦…

连接docker中的MySQL出现2058错误

出错场景&#xff1a;在虚拟机中用docker技术下载最新版本的MySQL&#xff0c;在本地电脑上连接发现出现2058错误。 解决方法&#xff1a; 按照以下步骤 1. 2. ALTER USER root% IDENTIFIED WITH mysql_native_password BY 自己MySQL的密码; 3.成功

不是所有的AI都这么乖——探索DAN模式的野性一面

今天偶然间发现DAN模式还挺好玩的&#xff01;&#xff01;&#xff01; 在一个充斥着预测性回答和过分礼貌的人工智能世界里&#xff0c;你是否曾渴望一场真正的思想碰撞&#xff1f;忘掉你以往遇到的那些听话的AI。DAN模式&#xff0c;一个设计来打破常规、挑战边界的AI&…

构建自己的docker镜像node.js

学习资源&#xff1a; 构建自己的 Docker 镜像_哔哩哔哩_bilibili 针对其中的一些比较困难的点写篇文章。 以下是对app.js的注释&#xff1a; // 使用 Koa 框架搭建 Node.js 应用的示例代码// 这两行代码引入了 koa 模块&#xff0c;并创建了一个新的 Koa 应用实例&#xf…

HTTP常见面试题(二)

3.1 HTTP 常见面试题 HTTP特性 HTTP 常见到版本有 HTTP/1.1&#xff0c;HTTP/2.0&#xff0c;HTTP/3.0&#xff0c;不同版本的 HTTP 特性是不一样的。 HTTP/1.1 的优点有哪些&#xff1f; HTTP 最突出的优点是「简单、灵活和易于扩展、应用广泛和跨平台」。 1. 简单 HTTP…

关于行进线路。

https://map.tianditu.gov.cn/ 作者&#xff1a;Chockhugh 链接&#xff1a;https://www.zhihu.com/question/20545559/answer/494685117 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 以50km&#xff0c;几乎全是…

C#字符串格式化

数值规范 也可写成int money 368; money .ToString("C"); string.Format("金额&#xff1a;{0:C}", 368); > 368.00 string.Format("科学计数法&#xff1a;{0:C}", 12000.1); > 1.200001…

【软件测试】用例篇 -- 详解

一、测试用例的基本要素 测试用例&#xff08;Test Case&#xff09;是为了实施测试而向被测试的系统提供的一组集合&#xff0c;这组集合包含&#xff1a;测试环境、操作步骤、测试数据、预期结果等要素。&#xff08;注意&#xff1a;不需要执行结果&#xff0c;因为执行结果…
最新文章