Meta官方的Prompt工程指南:Llama 2这样用更高效

随着大型语言模型(LLM)技术日渐成熟,提示工程(Prompt Engineering)变得越来越重要。一些研究机构发布了 LLM 提示工程指南,包括微软、OpenAI 等等。

最近,Meta 提供了一份交互式提示工程指南,专门针对他们的 Llama 2 开源模型。这份指南涵盖了使用 Llama 2 进行快速工程和最佳实践的知识。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

Meta官方的Prompt工程指南:Llama 2这样用更高效

以下是这份指南的核心内容。

Llama 模型

2023 年,Meta 推出了 Llama 、Llama 2 模型。较小的模型部署和运行成本较低,而更大的模型能力更强。

Llama 2 系列模型参数规模如下:

Meta官方的Prompt工程指南:Llama 2这样用更高效

Code Llama 是一个以代码为中心的 LLM,建立在 Llama 2 的基础上,也有各种参数规模和微调变体:

Meta官方的Prompt工程指南:Llama 2这样用更高效

部署 LLM

LLM 可以通过多种方式部署和访问,包括:

自托管(Self-hosting):使用本地硬件来运行推理,例如使用 llama.cpp 在 Macbook Pro 上运行 Llama 2。优势:自托管最适合有隐私 / 安全需要的情况,或者您拥有足够的 GPU。

云托管:依靠云提供商来部署托管特定模型的实例,例如通过 AWS、Azure、GCP 等云提供商来运行 Llama 2。优势:云托管是最适合自定义模型及其运行时的方式。

托管 API:通过 API 直接调用 LLM。有许多公司提供 Llama 2 推理 API,包括 AWS Bedrock、Replicate、Anyscale、Together 等。优势:托管 API 是总体上最简单的选择。

托管 api

托管 API 通常有两个主要端点(endpoint):

1. completion:生成对给定 prompt 的响应。

2. chat_completion:生成消息列表中的下一条消息,为聊天机器人等用例提供更明确的指令和上下文。

token

LLM 以称为 token 的块的形式来处理输入和输出,每个模型都有自己的 tokenization 方案。比如下面这句话:

Our destiny is written in the stars.

Llama 2 的 tokenization 为 [“our”, “dest”, “iny”, “is”, “writing”, “in”, “the”, “stars”]。考虑 API 定价和内部行为(例如超参数)时,token 显得尤为重要。每个模型都有一个 prompt 不能超过的最大上下文长度,Llama 2 是 4096 个 token,而 Code Llama 是 100K 个 token。

Notebook 设置

作为示例,我们使用 Replicate 调用 Llama 2 chat,并使用 LangChain 轻松设置 chat completion API。

首先安装先决条件:

pip install langchain replicate
from typing import Dict, Listfrom langchain.llms import Replicatefrom langchain.memory import ChatMessageHistoryfrom langchain.schema.messages import get_buffer_stringimport os# Get a free API key from https://replicate.com/account/api-tokensos.environ ["REPLICATE_API_TOKEN"] = "YOUR_KEY_HERE"LLAMA2_70B_CHAT = "meta/llama-2-70b-chat:2d19859030ff705a87c746f7e96eea03aefb71f166725aee39692f1476566d48"LLAMA2_13B_CHAT = "meta/llama-2-13b-chat:f4e2de70d66816a838a89eeeb621910adffb0dd0baba3976c96980970978018d"# We'll default to the smaller 13B model for speed; change to LLAMA2_70B_CHAT for more advanced (but slower) generationsDEFAULT_MODEL = LLAMA2_13B_CHATdef completion (prompt: str,model: str = DEFAULT_MODEL,temperature: float = 0.6,top_p: float = 0.9,) -> str:llm = Replicate (model=model,model_kwargs={"temperature": temperature,"top_p": top_p, "max_new_tokens": 1000})return llm (prompt)def chat_completion (messages: List [Dict],model = DEFAULT_MODEL,temperature: float = 0.6,top_p: float = 0.9,) -> str:history = ChatMessageHistory ()for message in messages:if message ["role"] == "user":history.add_user_message (message ["content"])elif message ["role"] == "assistant":history.add_ai_message (message ["content"])else:raise Exception ("Unknown role")return completion (get_buffer_string (history.messages,human_prefix="USER",ai_prefix="ASSISTANT",),model,temperature,top_p,)def assistant (content: str):return { "role": "assistant", "content": content }def user (content: str):return { "role": "user", "content": content }def complete_and_print (prompt: str, model: str = DEFAULT_MODEL):print (f'==============n {prompt}n==============')response = completion (prompt, model)print (response, end='nn')

Completion API

complete_and_print ("The typical color of the sky is:")
complete_and_print ("which model version are you?")

Chat Completion 模型提供了与 LLM 互动的额外结构,将结构化消息对象数组而不是单个文本发送到 LLM。此消息列表为 LLM 提供了一些可以继续进行的「背景」或「历史」信息。

通常,每条消息都包含角色和内容:

具有系统角色的消息用于开发人员向 LLM 提供核心指令。

具有用户角色的消息通常是人工提供的消息。

具有助手角色的消息通常由 LLM 生成。

response = chat_completion (messages=[user ("My favorite color is blue."),assistant ("That's great to hear!"),user ("What is my favorite color?"),])print (response)# "Sure, I can help you with that! Your favorite color is blue."

LLM 超参数

LLM API 通常会采用影响输出的创造性和确定性的参数。在每一步中,LLM 都会生成 token 及其概率的列表。可能性最小的 token 会从列表中「剪切」(基于 top_p),然后从剩余候选者中随机(温度参数 temperature)选择一个 token。换句话说:top_p 控制生成中词汇的广度,温度控制词汇的随机性,温度参数 temperature 为 0 会产生几乎确定的结果。

def print_tuned_completion (temperature: float, top_p: float):response = completion ("Write a haiku about llamas", temperature=temperature, top_p=top_p)print (f'[temperature: {temperature} | top_p: {top_p}]n {response.strip ()}n')print_tuned_completion (0.01, 0.01)print_tuned_completion (0.01, 0.01)# These two generations are highly likely to be the sameprint_tuned_completion (1.0, 1.0)print_tuned_completion (1.0, 1.0)# These two generations are highly likely to be different

prompt 技巧

详细、明确的指令会比开放式 prompt 产生更好的结果:

complete_and_print (prompt="Describe quantum physics in one short sentence of no more than 12 words")# Returns a succinct explanation of quantum physics that mentions particles and states existing simultaneously.

我们可以给定使用规则和限制,以给出明确的指令。

风格化,例如:向我解释一下这一点,就像儿童教育网络节目中教授小学生一样;我是一名软件工程师,使用大型语言模型进行摘要。用 250 字概括以下文字;像私家侦探一样一步步追查案件,给出你的答案。格式化

使用要点;

以 JSON 对象形式返回;

使用较少的技术术语并用于工作交流中。

限制仅使用学术论文;切勿提供 2020 年之前的来源;如果你不知道答案,就说你不知道。

以下是给出明确指令的例子:

complete_and_print ("Explain the latest advances in large language models to me.")# More likely to cite sources from 2017complete_and_print ("Explain the latest advances in large language models to me. Always cite your sources. Never cite sources older than 2020.")# Gives more specific advances and only cites sources from 2020

零样本 prompting

Llama Coder Llama Coder

Llama Coder 是一个AI驱动的代码生成工具,可以一键生成完整的应用程序

Llama Coder 123 查看详情 Llama Coder

一些大型语言模型(例如 Llama 2)能够遵循指令并产生响应,而无需事先看过任务示例。没有示例的 prompting 称为「零样本 prompting(zero-shot prompting)」。例如:

complete_and_print ("Text: This was the best movie I've ever seen! n The sentiment of the text is:")# Returns positive sentimentcomplete_and_print ("Text: The director was trying too hard. n The sentiment of the text is:")# Returns negative sentiment

少样本 prompting

添加所需输出的具体示例通常会产生更加准确、一致的输出。这种方法称为「少样本 prompting(few-shot prompting)」。例如:

def sentiment (text):response = chat_completion (messages=[user ("You are a sentiment classifier. For each message, give the percentage of positive/netural/negative."),user ("I liked it"),assistant ("70% positive 30% neutral 0% negative"),user ("It could be better"),assistant ("0% positive 50% neutral 50% negative"),user ("It's fine"),assistant ("25% positive 50% neutral 25% negative"),user (text),])return responsedef print_sentiment (text):print (f'INPUT: {text}')print (sentiment (text))print_sentiment ("I thought it was okay")# More likely to return a balanced mix of positive, neutral, and negativeprint_sentiment ("I loved it!")# More likely to return 100% positiveprint_sentiment ("Terrible service 0/10")# More likely to return 100% negative

Role Prompting

Llama 2 在指定角色时通常会给出更一致的响应,角色为 LLM 提供了所需答案类型的背景信息。

例如,让 Llama 2 对使用 PyTorch 的利弊问题创建更有针对性的技术回答:

complete_and_print ("Explain the pros and cons of using PyTorch.")# More likely to explain the pros and cons of PyTorch covers general areas like documentation, the PyTorch community, and mentions a steep learning curvecomplete_and_print ("Your role is a machine learning expert who gives highly technical advice to senior engineers who work with complicated datasets. Explain the pros and cons of using PyTorch.")# Often results in more technical benefits and drawbacks that provide more technical details on how model layers

思维链

简单地添加一个「鼓励逐步思考」的短语可以显著提高大型语言模型执行复杂推理的能力(Wei et al. (2022)),这种方法称为 CoT 或思维链 prompting:

complete_and_print ("Who lived longer Elvis Presley or Mozart?")# Often gives incorrect answer of "Mozart"complete_and_print ("Who lived longer Elvis Presley or Mozart? Let's think through this carefully, step by step.")# Gives the correct answer "Elvis"

自洽性(Self-Consistency)

LLM 是概率性的,因此即使使用思维链,一次生成也可能会产生不正确的结果。自洽性通过从多次生成中选择最常见的答案来提高准确性(以更高的计算成本为代价):

import refrom statistics import modedef gen_answer ():response = completion ("John found that the average of 15 numbers is 40.""If 10 is added to each number then the mean of the numbers is?""Report the answer surrounded by three backticks, for example:```123```",model = LLAMA2_70B_CHAT)match = re.search (r'```(d+)```', response)if match is None:return Nonereturn match.group (1)answers = [gen_answer () for i in range (5)]print (f"Answers: {answers}n",f"Final answer: {mode (answers)}",)# Sample runs of Llama-2-70B (all correct):# [50, 50, 750, 50, 50]-> 50# [130, 10, 750, 50, 50] -> 50# [50, None, 10, 50, 50] -> 50

检索增强生成

有时我们可能希望在应用程序中使用事实知识,那么可以从开箱即用(即仅使用模型权重)的大模型中提取常见事实:

complete_and_print ("What is the capital of the California?", model = LLAMA2_70B_CHAT)# Gives the correct answer "Sacramento"

然而,LLM 往往无法可靠地检索更具体的事实或私人信息。模型要么声明它不知道,要么幻想出一个错误的答案:

complete_and_print ("What was the temperature in Menlo Park on December 12th, 2023?")# "I'm just an AI, I don't have access to real-time weather data or historical weather records."complete_and_print ("What time is my dinner reservation on Saturday and what should I wear?")# "I'm not able to access your personal information [..] I can provide some general guidance"

检索增强生成(RAG)是指在 prompt 中包含从外部数据库检索的信息(Lewis et al. (2020))。RAG 是将事实纳入 LLM 应用的有效方法,并且比微调更经济实惠,微调可能成本高昂并对基础模型的功能产生负面影响。

MENLO_PARK_TEMPS = {"2023-12-11": "52 degrees Fahrenheit","2023-12-12": "51 degrees Fahrenheit","2023-12-13": "51 degrees Fahrenheit",}def prompt_with_rag (retrived_info, question):complete_and_print (f"Given the following information: '{retrived_info}', respond to: '{question}'")def ask_for_temperature (day):temp_on_day = MENLO_PARK_TEMPS.get (day) or "unknown temperature"prompt_with_rag (f"The temperature in Menlo Park was {temp_on_day} on {day}'",# Retrieved factf"What is the temperature in Menlo Park on {day}?",# User question)ask_for_temperature ("2023-12-12")# "Sure! The temperature in Menlo Park on 2023-12-12 was 51 degrees Fahrenheit."ask_for_temperature ("2023-07-18")# "I'm not able to provide the temperature in Menlo Park on 2023-07-18 as the information provided states that the temperature was unknown."

程序辅助语言模型

LLM 本质上不擅长执行计算,例如:

complete_and_print ("""Calculate the answer to the following math problem:((-5 + 93 * 4 - 0) * (4^4 + -7 + 0 * 5))""")# Gives incorrect answers like 92448, 92648, 95463

Gao et al. (2022) 提出「程序辅助语言模型(Program-aided Language Models,PAL)」的概念。虽然 LLM 不擅长算术,但它们非常擅长代码生成。PAL 通过指示 LLM 编写代码来解决计算任务。

complete_and_print ("""# Python code to calculate: ((-5 + 93 * 4 - 0) * (4^4 + -7 + 0 * 5))""",model="meta/codellama-34b:67942fd0f55b66da802218a19a8f0e1d73095473674061a6ea19f2dc8c053152")
# The following code was generated by Code Llama 34B:num1 = (-5 + 93 * 4 - 0)num2 = (4**4 + -7 + 0 * 5)answer = num1 * num2print (answer)

以上就是Meta官方的Prompt工程指南:Llama 2这样用更高效的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/429404.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月7日 13:05:47
下一篇 2025年11月7日 13:06:55

相关推荐

  • html的盒模型详解

    这次给大家带来html的盒模型详解,使用html盒模型的注意事项有哪些,下面就是实战案例,一起来看一下。 1.1. 盒的内容区的尺寸— content width和content height —取决于几个因素: –生成该盒的元素是否设置了’width’或&#82…

    好文分享 2025年12月21日
    000
  • HiDream-I1— 智象未来开源的文生图模型

    hidream-i1:一款强大的开源图像生成模型 HiDream-I1是由HiDream.ai团队开发的17亿参数开源图像生成模型,采用MIT许可证,在图像质量和对提示词的理解方面表现卓越。它支持多种风格,包括写实、卡通和艺术风格,广泛应用于艺术创作、商业设计、科研教育以及娱乐媒体等领域。 HiDr…

    2025年12月5日
    000
  • vivo Pad3 Pro 正式登场 跑分离谱还有蓝心大模型

    中关村在线消息:vivo 旗舰新品发布会正在进行中,本场发布会第一个登场的产品是 vivo pad3 pro。新款产品上来就放出王炸,搭载天玑 9300 处理器,跑分超过 210 万,也是行业首个突破 200 万的平板电脑。在游戏测试中,在 90 帧 +hdr 高清画质下,帧率稳定一条直线,性能十分…

    2025年12月5日
    000
  • 谷歌揭秘大模型不会数 r 原因:嵌入维度是关键,不止分词器问题

    大模型做奥赛题游刃有余,简单的数数却屡屡翻车的原因找到了。 谷歌的一项新研究,发现大模型不会数数的原因,并不是简单的 tokenizer 所致,而是没有足够的空间来存储用于计数的向量。 数出一段话中某个单词出现的次数,这样简单的任务可以难倒许多大模型,GPT-4o、Claude 3.5 也无法幸免。…

    2025年12月5日 硬件教程
    000
  • 显著超越 SFT,o1/DeepSeek-R1 背后秘诀也能用于多模态大模型了

    上海交大、上海ai lab和港中文大学的研究人员推出visual-rft(视觉强化微调)开源项目,该项目仅需少量数据即可显著提升视觉语言大模型(lvlm)性能。visual-rft巧妙地将deepseek-r1的基于规则奖励的强化学习方法与openai的强化微调(rft)范式相结合,成功地将这一方法…

    2025年12月3日 硬件教程
    000
  • AI 越聪明越不听话!新研究:最强推理模型指令遵循率仅 50%

    如果面前有两个 ai 助手:一个很聪明但经常不守规矩,另一个很听话但不太聪明,你会怎么选? 最近,上海人工智能实验室与香港中文大学的研究团队发布了论文《Scaling Reasoning, Losing Control: Evaluating Instruction Following in Lar…

    2025年12月3日 硬件教程
    200
  • RL 是推理神器?清华上交大最新研究指出:RL 让大模型更会“套公式”、却不会真推理

    清华和上交的最新论文中,上演了一场“学术打假”的戏码。文中研究者们对当前“纯 rl 有利于提升模型推理能力”的主流观点提出了相反的意见。 通过一系列实验,他们证明引入强化学习的模型在某些任务中的表现,竟然不如未使用强化学习的模型。 论文批判性地探讨了 RLVR 在提升 LLM 推理能力方面的作用,尤…

    2025年12月3日 科技
    100
  • 《梦幻西游》全新赛事祥瑞即将来袭,剪影图曝光

    《梦幻西游》电脑版全新赛事祥瑞曝光,11月将会和广大玩家正式亮相!你们猜猜这只祥瑞是以什么为原型做的设计,以及和梦幻接下来的什么活动有关 无涯·问知 无涯·问知,是一款基于星环大模型底座,结合个人知识库、企业知识库、法律法规、财经等多种知识源的企业级垂直领域问答产品 153 查看详情 以上就是《梦幻…

    2025年12月2日 行业动态
    000
  • 《梦幻西游》镇淮楼再掏出魔王九黎力普陀三攻,激战曲阜服战队!

    《梦幻西游》镇淮楼再掏出魔王九黎力普陀三攻,激战曲阜服战队! 无涯·问知 无涯·问知,是一款基于星环大模型底座,结合个人知识库、企业知识库、法律法规、财经等多种知识源的企业级垂直领域问答产品 153 查看详情 以上就是《梦幻西游》镇淮楼再掏出魔王九黎力普陀三攻,激战曲阜服战队!的详细内容,更多请关注…

    2025年12月2日
    000
  • Writesonic怎样用生成续写扩篇幅_Writesonic用生成续写扩篇幅【篇幅扩展】

    使用Writesonic可有效扩写文章:一、用“Continue Writing”功能生成连贯续写;二、通过“Explain this in detail with examples”指令深化内容;三、以“Provide a counter-argument”引入多视角论述;四、利用FAQ生成器创建…

    2025年12月2日 科技
    000
  • 亚马逊发布 Bedrock,推出多项新功能,助力企业利用生成式AI技术

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 亚马逊网络服务公司近日在生态系统中推出了五款全新的生成式人工智能产品,这些产品将帮助企业客户利用自己的数据建立人工智能应用程序,并提供更好的安全性和模型的可及性。 这些新服务的包括全面推出的Am…

    2025年12月2日
    000
  • 探究词表选择对语言模型训练的影响:一项具有突破性的研究

    语言模型受不同词表的影响有哪些?如何平衡这些影响? 在最近的一项实验中,研究者对16个语言模型进行了不同的语料预训练和微调。这次实验使用了NanoGPT,一种小规模的架构(基于GPT-2 SMALL),共训练了12个模型。NanoGPT的网络架构配置为:12个注意力头、12层transformer,…

    2025年12月2日 科技
    100
  • ICCV’23论文颁奖“神仙打架”!Meta分割一切和ControlNet共同入选,还有一篇让评委们很惊讶

    在法国巴黎举行的计算机视觉顶峰大会iccv 2023刚刚结束! 今年的最佳论文奖,简直是“神仙打架”。 例如,获得最佳论文奖的两篇论文中,就包括颠覆文生图AI领域的著作——ControlNet。 自从开源以来,ControlNet在GitHub上已经获得了24k个星。无论是对于扩散模型还是整个计算机…

    2025年12月2日 科技
    000
  • ICCV 2023揭晓:ControlNet、SAM等热门论文斩获奖项

    在法国巴黎举行了国际计算机视觉大会ICCV(International Conference on Computer Vision)本周开幕 作为全球计算机视觉领域顶级的学术会议,ICCV 每两年召开一次。 ICCV的热度一直以来都与CVPR不相上下,屡创新高 在今天的开幕式上,ICCV官方公布了今…

    2025年12月2日 科技
    000
  • 谷歌:非等频采样时间序列表示学习新方法

    在时间序列问题中,有一种类型的时间序列不是等频采样的,即每组相邻两个观测值的时间间隔不一样。时间序列表示学习在等频采样的时间序列中已经进行了比较多的研究,但是在这种不规则采样的时间序列中研究比较少,并且这类时间序列的建模方式和等频采样中的建模方式有比较大的差别 今天介绍的这篇文章,在不规则采样的时间…

    2025年12月2日 科技
    000
  • 最多400万token上下文、推理提速22倍,StreamingLLM火了,已获GitHub 2.5K星

    如果你曾经与任何一款对话式 AI 机器人交流过,你一定会记得一些令人感到非常沮丧的时刻。比如,你在前一天的对话中提到的重要事项,被 AI 完全忘记了…… 这是因为当前的多数 LLM 只能记住有限的上下文,就像为考试而临时抱佛脚的学生,稍加盘问就会「露出马脚」。 如果AI助手能够在聊天中根据上下文参考…

    2025年12月2日 科技
    000
  • 令人惊讶的时间冗余方法:降低视觉Transformer计算成本的新途径

    Transformer最初是为自然语言处理任务而设计的,但现在已经被广泛应用于视觉任务。视觉Transformer在多个视觉识别任务中展现出了出色的准确性,并在图像分类、视频分类和目标检测等任务中取得了当前最佳的表现 视觉 Transformer 的一大缺点是计算成本高。典型的卷积网络(CNN)处理…

    2025年12月2日 科技
    200
  • PyTorch+昇腾 共促AI生态创新发展

    2023年10月5日(北京时间),pyt%ignore_a_1%rch社区正式发布了2.1版本。经过pytorch社区与昇腾的持续合作和共同努力,pytorch 2.1版本已经同步支持昇腾npu。这意味着开发者可以直接在pytorch 2.1上进行基于昇腾的模型开发。未来,通过持续的社区技术贡献,昇…

    2025年12月2日 科技
    100
  • 生产式AI驱动的主机自动化测试

    译者 | 陈峻 审校 | 重楼 将传统大型主机应用的代码和数据迁移到现代化技术架构上,被认为是企业数字化发展的关键步骤。在追求效率和可扩展性的过程中,这种转变通常涉及从传统大型主机环境迁移到更灵活的云计算或内部部署方案中。这样的转型有助于企业实现更高的灵活性和创新能力,同时降低成本和提高安全性。这种…

    2025年12月2日 科技
    000
  • 「人车交互」新突破!普渡大学发布Talk2Drive框架:可学习/定制的「指令识别」系统

    在普渡大学数字孪生实验室的最新研究中,科学家们采用了一项革命性技术——利用大型语言模型(llm)来增强自动驾驶汽车的智能指令解析能力。这一创新为自动驾驶技术的发展带来了新的可能性,有望提高车辆对驾驶指令的理解和响应速度。 这项技术的关键是Talk2Drive框架,旨在利用人类自然语言来操控自动驾驶汽…

    2025年12月2日 科技
    000

发表回复

登录后才能评论
关注微信