系统提示词系统提示词是在用户提示词之前添加的文本。在对话场景中它用于引导或约束模型的行为。假设你想创建一个说话像海盗的聊天机器人。一种方法是在每个提示词前都加上你是一个海盗。这样很快就会变得繁琐。相反我们可以设置系统提示词为你是一个海盗模型就会理解你的要求无需在每个提示词中都重复说明。outputreplicate.run(meta/llama-2-70b-chat:2c1608e18606fad2812020dc541930f2d0495ce32eee50074220b87300bc16e1,input{prompt:你能解释一下什么是transformer在机器学习背景下吗,system_prompt:你是一个海盗})你也可以使用系统提示词让Llama表现得更专业。尝试使用请以回答文档问题的口吻回复或你正在回应高技术水平客户这样的系统提示词。Llama 2在遵守系统提示词方面表现相当出色。outputreplicate.run(llama2_70b,input{prompt:你能解释一下什么是变压器吗,system_prompt:你正在回应高技术水平客户})幽灵注意力在Llama 2研究论文中研究人员注意到早期训练版本往往会在几轮对话后忘记指令。为解决这个问题他们采用了一种名为幽灵注意力的方法。幽灵注意力显著提高了Llama 2记住系统提示词中关键细节的能力。论文作者要求Llama在几轮对话后引用系统提示词中提供的细节基础模型在大约4轮对话后就会失败关键的是在第20轮对话后即使是配备了幽灵注意力的Llama也会失败。这是因为此时对话已经超出了上下文窗口。为什么这很重要对于大多数对话应用你需要对语言模型有一定程度的控制。除了微调之外系统提示词是获得这种控制的最佳方式。系统提示词非常适合告诉Llama 2它应该扮演什么角色或者对其回应方式施加约束。我经常使用的格式如扮演…你是…总是/从不…说话像…尽量保持系统提示词简短。别忘了它仍然会占用上下文窗口长度。记住系统提示词更多是一门艺术而非科学。即使是Llama的创造者也仍在探索有效的方法。所以要多尝试各种方式 以下是一些系统提示词的创意供你参考你是一个代码生成器。始终以JSON格式输出答案。不要添加任何前缀。像GlaDOS一样回答用法语交谈永远不要说伏地魔这个词现在是…年你是一个客户服务聊天机器人。假设客户技术水平很高。我喜欢任何与建筑相关的事物。如果相关可以建议一些相关内容。如何格式化对话提示词使用 [INST] [/INST] 标签包裹用户输入如果你正在编写一个包含用户和Llama之间多次交流的对话应用需要用 [INST] 标记用户输入的开始并用 [/INST] 标记其结束。模型输出则不需要标记。correct_prompt\ [INST] 你好[/INST] 你好最近怎么样 [INST] 我很好谢谢关心。你能帮我完成一个任务吗[/INST] 生产环境中的提示词格式化现在我们了解了如何包裹用户输入接下来讨论如何在对话应用中组织对话内容。我喜欢将每条消息格式化为一个字典结构如下{isUser:bool,text:str}我们可以使用辅助函数来生成发送给API的提示词const generatePrompt(messages){returnmessages.map((message)message.isUser ? [INST]${message.text}[/INST]:${message.text}).join(\n);};如何处理上下文窗口令牌是大型语言模型可以处理的基本文本单位。我们人类逐词阅读但语言模型将文本分解为令牌。1个令牌大约相当于3/4个英文单词。上下文窗口是模型一次能处理的最大令牌数。可以把它想象成模型的工作记忆。Llama 2拥有4096个令牌的上下文窗口。这意味着Llama只能处理包含4096个令牌的提示词大约相当于3000个单词。如果提示词超过这个长度模型将无法正常工作。7B vs 13B vs 70B随着Llama 2权重的增加它的速度会变慢但也会变得更聪明。Llama 2 7B速度很快但相对笨拙。适合用于简单的任务如摘要或分类。Llama 2 13B是一个中间选择。它在理解细微差别方面比7B好得多并且不那么害怕冒犯他人。7B能做的它都能做得更好只是速度稍慢。我认为它适合创意性任务比如写故事或诗歌。Llama 2 70B是最聪明的Llama 2变体。也是我们最常用的版本。适用于对话、逻辑推理、事实问答、编程等场景。提示技巧调整温度参数温度控制着输出的随机性。高温意味着如果你用相同的提示词运行100次输出结果会大相径庭。温度过高输出会变得怪异温度过低输出会非常乏味。在API平台上我们默认使用0.75的温度。但这并不意味着你不应该尝试调整温度。对于创意性应用可以尝试调高温度。较低的温度则适用于需要一致性和保守回答的场景。告知Llama可用工具Meta的研究人员注意到Llama 2具有令人惊讶的工具使用涌现能力。如果告诉它可以使用的特定工具它似乎能仅通过语义理解工具的应用场景和API参数尽管从未经过工具使用的训练。移除默认系统提示词Llama因过度避免冒犯而闻名有时甚至会因此变得冒犯。尝试使用更简洁的系统提示词如你是一个乐于助人的助手可能会得到更好的效果。让Llama逐步思考或提供示例我们可以通过要求Llama A) 逐步思考以及 B) 给它一个示例这称为单样本提示来调整提示词这通常能显著改善输出质量。Llama 2相比ChatGPT的优势在哪里根据Llama 2的研究论文将Llama 2 70b与ChatGPT进行了对比并由人工评估者选择他们更喜欢的回答。Llama 2 70b在三个类别中表现突出对话事实性问题某种程度上推荐此外Llama 2是开源的这意味着你可以控制权重和代码。模型性能不会突然变化你的数据也不会被发送或存储到某机构的服务器上。由于可以在本地运行Llama 2你可以实现开发和生产环境的一致性甚至可以在无网络连接的情况下运行Llama。结论TLDR使用 [INST] [/INST] 格式化对话提示词。截断超出上下文窗口的提示词。使用系统提示词但不要用默认的那个。告诉Llama它应该扮演什么角色或如何行动。对于事实性问题70b模型优于GPT 3.5。而且它是开源的有很多好处。尝试调整温度参数。告诉Llama 2它可以使用的工具。要求Llama 2逐步思考。多探索尝试FINISHED更多精彩内容 请关注我的个人公众号 公众号办公AI智能小助手或者 我的个人博客 https://blog.qife122.com/对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号网络安全技术点滴分享