基于 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,#信任的存储库设置为Trueconfig=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, eachwith name, surname, address, phone information stored.""",size=1024), max_length=1024)
display(Markdown(colorize_text(response)))

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

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

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

相关文章

Rust 实战thiserror+自定义错误消息体

导航 一、背景二、实践1、导入thiserror2、自定义错误消息体&#xff08;1&#xff09;创建ErrMsg.rs和创建自定义结构体&#xff08;2&#xff09;lib.rs添加ErrMsg&#xff08;3&#xff09;main函数&#xff08;4&#xff09;完整代码 一、背景 开发中遇到需要通用、能够满…

LeetCode 142.环形链表Ⅱ

题目描述 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内…

速卖通自养号测评技术策略与实战指南

速卖通自养号测评是一个涉及多个步骤和细节的过程&#xff0c;以下是一些关键步骤和注意事项&#xff1a; 1. 准备资源和环境&#xff1a; 测评养号系统&#xff1a;确保账号的权重稳定运营与账号便捷的管理。 海外纯净IP资源&#xff1a;为账号提供稳定的网络环境&#x…

AI新突破:多标签预测技术助力语言模型提速3倍

DeepVisionary 每日深度学习前沿科技推送&顶会论文分享&#xff0c;与你一起了解前沿深度学习信息&#xff01; 引言&#xff1a;多标签预测的新视角 在人工智能领域&#xff0c;尤其是在自然语言处理&#xff08;NLP&#xff09;中&#xff0c;预测模型的训练方法一直在…

地下管线管网三维参数化建模软件MagicPipe3D V3.5

经纬管网建模系统MagicPipe3D&#xff08;www.magic3d.net&#xff09;自主安全可控&#xff0c;本地离线参数化构建三维管网模型&#xff08;管道、接头、附属物等&#xff09;&#xff0c;输出标准3DTiles、Obj等格式&#xff0c;支持Cesium、Unreal、Unity等引擎可视化查询分…

【mysql】深入探索mysql中的各种约束条件

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

Java | Spring框架 | Bean的装配之XML配置

Spring | Bean的装配 之XML配置 在Spring框架中&#xff0c;Bean的装配是指将Bean定义和配置信息加载到Spring容器中&#xff0c;以便容器能够管理这些Bean。 Spring支持多种装配方式&#xff0c;其中XML配置是传统但依然有效的方式。 一、 使用XML配置文件定义Bean XML配置…

知识图谱和大语言模型的共存之道

导读 知识图谱和大型语言模型都是用来表示和处理知识的手段。大模型补足了理解语言的能力&#xff0c;知识图谱则丰富了表示知识的方式&#xff0c;两者的深度结合必将为人工智能提供更为全面、可靠、可控的知识处理方法。在这一背景下&#xff0c;OpenKG组织新KG视点系列文章—…

还有谁……想知道“线下与线上布局之间的本质区别”

还有谁……想知道 线下与线上布局之间的本质区别 hello,亲爱的你们好.… 我是你们的好朋友,正博,今天是非常特殊的一天,给每一位读者准备了一份特殊的神秘礼物…… 在分享【特殊礼物】之前,请允许我分享一下《线下营销与线上销售的9大核心差异》…… 1、注意力; 2、销…

浪漫编码:手把手教你实现校园表白墙功能

&#x1f493; 博客主页&#xff1a;从零开始的-CodeNinja之路 ⏩ 收录文章&#xff1a;浪漫编码&#xff1a;手把手教你实现校园表白墙功能 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 这里写目录标题 表白墙数据准备引入MyBatis和MySQL驱动依赖…

华为OD机试【路灯照明问题】(java)(100分)

1、题目描述 在一条笔直的公路上安装了N个路灯&#xff0c;从位置0开始安装&#xff0c;路灯之间间距固定为100米。 每个路灯都有自己的照明半径&#xff0c;请计算第一个路灯和最后一个路灯之间&#xff0c;无法照明的区间的长度和。 2、输入描述 第一行为一个数N&#xff…

中霖教育:哪些地区的一级造价师考试不查社保?

关于一级造价师考试是否查社保的问题&#xff0c;不同地区的规定不一样&#xff0c;部分地区要求社保缴纳时间为1年&#xff0c;部分地区要求6个月&#xff0c;具体还要以资格审核为准。 不用查社保的省份&#xff1a; 江苏、浙江、广东、海南、吉林、黑龙江、内蒙古、山西、…

生信软件16 - 常规探针设计软件mrbait

1. mrbait安装 mrbait支持linux和macOS系统&#xff0c;测试安装Python版本 3.6.15。 # conda安装 conda install mrbait -c tylerkchafin -c bioconda -c conda-forge# github安装 git clone https://github.com/tkchafin/mrbait.git cd mrbait python ./setup.py install# …

Oracle 23ai 发布,国产数据库们都沉默了

几天前&#xff0c;全球最大的数据库软件公司 Oracle 发布了最新版的 Oracle Database 23ai &#xff0c;集成了最新的 AI Vector Search&#xff08;AI 向量搜索引擎&#xff09;&#xff0c;允许根据概念内容轻松搜索存储在任务关键型数据库中的文档、图像和关系数据&#xf…

一文学会最强大的 node.js 后端框架 nest.js

文章目录 nest cli项目基本结构IOC & DI基础注册值注册时 key 的管理动态注册类工厂函数方式注册设置别名导出 provider 模块功能模块模块的导入导出模块类中使用注入全局模块动态模块 中间件定义中间件注册中间件MiddlewareConsumer 类全局中间件 异常过滤器抛出异常自定义…

社交媒体数据恢复:batchat

蝙蝠聊天数据恢复方法 1. 数据恢复的基本原理 蝙蝠聊天的聊天记录一旦删除是不能够恢复的。这是因为蝙蝠聊天的聊天记录是保存于本地的&#xff0c;一旦删除&#xff0c;就如同在电脑或手机上删除文件一样&#xff0c;数据不会存储在服务器端。这意味着&#xff0c;如果你删除…

10.k8s的附加组件(coreDNS组件)

目录 一、概念 二、查看k8s集群的coreDNS的IP地址 三、验证 一、概念 service发现是k8s中的一个重要机制&#xff0c;其基本功能为&#xff1a;在集群内通过服务名对服务进行访问&#xff0c;即需要完成从服务名到ClusterIP的解析。k8s主要有两种service发现机制&#xff1a;…

v-show和v-if的区别

首先&#xff0c;在用法上的区别&#xff1a; v-show是不支持template&#xff1b; v-show不可以和v-else-起使用&#xff1b; 其次&#xff0c;本质的区别&#xff1a; v-show元素无论是否需要显示到浏览器上&#xff0c;它的DOM实际都是有渲染的&#xff0c;只是通过CSS的dis…

【AI+音视频总结】如何在几分钟内用智能工具摘取音视频精华?揭秘下一代学习和内容创作神器!

今天无意发现一个网站&#xff0c;可以一步到位完成AI音视频总结。 我之前对于音视频总结的步骤还是借助 工具下载 剪映来完成的。详情可以参考之前写的一篇文章 【AI应用】模仿爆款视频二次创作短视频操作步骤 。 这里介绍的网站是 BibiGPT 。 BibiGPT AI 音视频助理 - 它是…