当前位置:   article > 正文

llama2 , llama3, llama3.1 中提示(prompt)的模板_llama3 prompt

llama3 prompt

llama2 prompt 的模板

llama2 prompt模板中使用的标识符

  • <s></s>:这些是来自 SentencePiece 的 BOS 和 EOS 令牌。当多轮对话中存在多条消息时,它们会将它们分开,包括用户输入和模型响应。
  • [INST][/INST]:这些令牌包含多轮对话中的用户消息。
  • <<SYS>><</SYS>>:这些令牌包含系统消息。

补全的prompt模板

基本模型支持文本补全,因此任何未完成的用户提示(没有特殊标签)都会提示模型完成它。

<s>{{ user_prompt }}

对话Chat的prompt的模板

系统提示(prompt)是可选的。可有可无。
单个消息的具有可选的 system prompt。

  1. <s>[INST] <<SYS>>
  2. {your_system_message}
  3. <</SYS>>
  4. {user_message_1} [/INST]

多个user和assistant 消息示例。

  1. <s>[INST] <<SYS>>
  2. {your_system_message}
  3. <</SYS>>
  4. {user_message_1} [/INST] {model_reply_1}</s><s>[INST] {user_message_2} [/INST]

llama3 prompt 模板

llama3 prompt模板中使用的标识符

  • <|begin_of_text|>:这相当于 BOS 令牌
  • <|eot_id|>:这表示消息在一轮中的结束。
  • <|start_header_id|>{role} <|end_header_id|>:这些令牌包含特定消息的角色。可能的角色可以是:系统、用户、助手。
  • <|end_of_text|>:这相当于 EOS 令牌。生成此令牌后,Llama 3 将停止生成更多令牌。
  • 提示可以选择包含单个系统消息或多个交替的用户和助手消息,但始终以最后一条用户消息和助手标题结束。

补全的prompt模板

可在此处找到生成此提示格式的代码。
注意:换行符 (0x0A) 是提示格式的一部分,为了在示例中清晰起见,它们已表示为实际的新行。

<|begin_of_text|>{{ user_message }}

Meta Llama 3 Instruct prompt的模板

可在此处找到生成此提示格式的代码。
注意:
换行符 (0x0A) 是提示格式的一部分,为了在示例中清晰起见,它们已表示为实际的新行。
该模型期望提示末尾的助手标题开始完成它。
分解带有系统消息的示例 instruct 提示:

  1. <|begin_of_text|><|start_header_id|>system<|end_header_id|>
  2. You are a helpful AI assistant for travel tips and recommendations<|eot_id|><|start_header_id|>user<|end_header_id|>
  3. What can you help me with?<|eot_id|><|start_header_id|>assistant<|end_header_id|>
  • <|begin_of_text|>:指定提示的开始
  • <|start_header_id|>system<|end_header_id|>:指定以下消息的角色,即“系统”您是旅行提示和建议的有用 AI 助手:系统消息
  • <|eot_id|>:指定输入消息的结尾
  • <|start_header_id|>user<|end_header_id|>:指定以下消息的角色,即“用户”您能帮我什么?:用户消息
  • <|start_header_id|>assistant<|end_header_id|>:以助手标题结尾,提示模型开始生成。在此提示之后,Llama 3 通过生成 {{assistant_message}} 来完成它。它通过生成 <|eot_id|> 来表示 {{assistant_message}} 的结束。带有单个用户消息的示例提示
  1. <|begin_of_text|><|start_header_id|>user<|end_header_id|>
  2. What is France's capital?<|eot_id|><|start_header_id|>assistant<|end_header_id|>

系统提示以及用户和助手之间的多轮对话

  1. <|begin_of_text|><|start_header_id|>system<|end_header_id|>
  2. You are a helpful AI assistant for travel tips and recommendations<|eot_id|><|start_header_id|>user<|end_header_id|>
  3. What is France's capital?<|eot_id|><|start_header_id|>assistant<|end_header_id|>
  4. Bonjour! The capital of France is Paris!<|eot_id|><|start_header_id|>user<|end_header_id|>
  5. What can I do there?<|eot_id|><|start_header_id|>assistant<|end_header_id|>
  6. Paris, the City of Light, offers a romantic getaway with must-see attractions like the Eiffel Tower and Louvre Museum, romantic experiences like river cruises and charming neighborhoods, and delicious food and drink options, with helpful tips for making the most of your trip.<|eot_id|><|start_header_id|>user<|end_header_id|>
  7. Give me a detailed list of the attractions I should visit, and time it takes in each one, to plan my trip accordingly.<|eot_id|><|start_header_id|>assistant<|end_header_id|>

llama3.1 prompt 模板

新的标识符

除了llama3 prompt模板中使用的标识符, 新增了以下标识符。

<|finetune_right_pad_id|> 此标记用于将一批文本序列填充到相同长度。

<|eom_id|>: 消息结束。消息表示执行的可能停止点,模型可以在此通知执行者需要进行工具调用。这用于模型与任何可用工具之间的多步骤交互。当系统提示中使用 Environment: ipython 指令或模型调用内置工具时,模型会发出此令牌。

<|python_tag|> 是模型响应中用来表示工具调用的特殊标签。

新的角色

ipython:Llama 3.1 中引入的新角色。从语义上讲,此角色表示“工具”。此角色用于在从执行器发送回模型时使用工具调用的输出来标记消息。

所以现在有以下四个角色。

[system, assistant, user, ipython]

tool calling

Llama 3.1 Instruct 的版本增加了tool calling功能。

下图是调用工具的流图。

用户定义的自定义工具调用


以下提示提供了一个示例,说明如何在系统提示中定义自己的格式并在与模型交互时使用它。此格式将使用新的自定义 <function> 标记将 JSON 对象与函数参数括起来。

注释
由于 Environment: ipython 指令,模型使用 eom_id 令牌。
系统提示定义了自定义格式以及模型可用的工具。

步骤 - 1 用户提示自定义工具详细信息

  1. <|begin_of_text|><|start_header_id|>system<|end_header_id|>
  2. Environment: ipython
  3. Tools: brave_search, wolfram_alpha
  4. Cutting Knowledge Date: December 2023
  5. Today Date: 23 Jul 2024
  6. # Tool Instructions
  7. - Always execute python code in messages that you share.
  8. - When looking for real time information use relevant functions if available else fallback to brave_search
  9. You have access to the following functions:
  10. Use the function 'spotify_trending_songs' to: Get top trending songs on Spotify
  11. {
  12. "name": "spotify_trending_songs",
  13. "description": "Get top trending songs on Spotify",
  14. "parameters": {
  15. "n": {
  16. "param_type": "int",
  17. "description": "Number of trending songs to get",
  18. "required": true
  19. }
  20. }
  21. }
  22. If a you choose to call a function ONLY reply in the following format:
  23. <{start_tag}={function_name}>{parameters}{end_tag}
  24. where
  25. start_tag => `<function`
  26. parameters => a JSON dict with the function argument name as key and function argument value as value.
  27. end_tag => `</function>`
  28. Here is an example,
  29. <function=example_function_name>{"example_name": "example_value"}</function>
  30. Reminder:
  31. - Function calls MUST follow the specified format
  32. - Required parameters MUST be specified
  33. - Only call one function at a time
  34. - Put the entire function call reply on one line"
  35. - Always add your sources when using search results to answer the user query
  36. You are a helpful Assistant.<|eot_id|><|start_header_id|>user<|end_header_id|>
  37. Can you check the top 5 trending songs on spotify?<|eot_id|><|start_header_id|>assistant<|end_header_id|>

步骤 - 2 模型确定要调用哪个工具
现在模型根据系统提示中定义的格式做出响应,函数名称位于开始标记中,参数作为 JSON 对象位于开始和结束标记之间。

注意:
由于我们在系统提示中使用 Environment: ipython 指令,模型以 eom_id 令牌结束生成。

<function=spotify_trending_songs>{"n": "5"}</function><eom_id>

步骤 - 3 调用工具的结果被传回模型
当工具调用的结果被发送回模型时,我们在标题中使用新角色 ipython。

  1. <|begin_of_text|><|start_header_id|>system<|end_header_id|>
  2. Environment: ipython
  3. Tools: brave_search, wolfram_alpha
  4. Cutting Knowledge Date: December 2023
  5. Today Date: 23 Jul 2024
  6. # Tool Instructions
  7. - Always execute python code in messages that you share.
  8. - When looking for real time information use relevant functions if available else fallback to brave_search
  9. You have access to the following functions:
  10. Use the function 'spotify_trending_songs' to: Get top trending songs on Spotify
  11. {"name": "spotify_trending_songs", "description": "Get top trending songs on Spotify", "parameters": {"n": {"param_type": "int", "description": "Number of trending songs to get", "required": true}}}
  12. If a you choose to call a function ONLY reply in the following format:
  13. <{start_tag}={function_name}>{parameters}{end_tag}
  14. where
  15. start_tag => `<function`
  16. parameters => a JSON dict with the function argument name as key and function argument value as value.
  17. end_tag => `</function>`
  18. Here is an example,
  19. <function=example_function_name>{"example_name": "example_value"}</function>
  20. Reminder:
  21. - Function calls MUST follow the specified format
  22. - Required parameters MUST be specified
  23. - Only call one function at a time
  24. - Put the entire function call reply on one line"
  25. - Always add your sources when using search results to answer the user query
  26. You are a helpful Assistant.<|eot_id|><|start_header_id|>user<|end_header_id|>
  27. Can you check the top 5 trending songs on spotify?<|eot_id|><|start_header_id|>assistant<|end_header_id|>
  28. <function=spotify_trending_songs>{"n": "5"}</function><|eom_id|><|start_header_id|>ipython<|end_header_id|>
  29. ["1. BIRDS OF A FEATHER by Billie Eilish", "2. Espresso by Sabrina Carpenter", "3. Please Please Please by Sabrina Carpenter", "4. Not Like Us by Kendrick Lamar", "5. Gata Only by FloyyMenor, Cris Mj"]<|eot_id|><|start_header_id|>assistant<|end_header_id|>

步骤 - 4 模型生成用户的最终响应

  1. The top 5 trending songs on Spotify are:
  2. 1. BIRDS OF A FEATHER by Billie Eilish
  3. 2. Espresso by Sabrina Carpenter
  4. 3. Please Please Please by Sabrina Carpenter
  5. 4. Not Like Us by Kendrick Lamar
  6. 5. Gata Only by FloyyMenor, Cris Mj<|eot_id|>

Hugging face 中llama的模板

  1. System: You are a helpful, respectful and honest assistant. Always answer as helpfully as possible, while being safe. Your answers should not include any harmful, unethical, racist, sexist, toxic, dangerous, or illegal content. Please ensure that your responses are socially unbiased and positive in nature. If a question does not make any sense, or is not factually coherent, explain why instead of answering something not correct. If you don't know the answer to a question, please don't share false information.
  2. User: {prompt}
  3. Assistant:

参考资料


https://llama.meta.com/docs/model-cards-and-prompt-formats/meta-llama-2

Llama 2 Prompt Template · GPU Utils ⚡️

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/903905
推荐阅读
相关标签
  

闽ICP备14008679号