LLMs之Llama 3.1:Llama 3.1的简介、安装和使用方法、案例应用之详细攻略

LLMs之Llama 3.1:Llama 3.1的简介、安装和使用方法、案例应用之详细攻略

导读:2024年7月23日,Meta重磅推出Llama 3.1。本篇文章主要提到了Meta推出的Llama 3.1自然语言生成模型。

背景和痛点

>> 过去开源的大型语言模型在能力和性能上一直落后于闭源模型。

具体解决方案

>> Meta公开发布了Meta Llama 3.1 405B模型,这是目前世界上首个能与顶级AI模型媲美、最大和能力最强的开源基础模型。

>> 除了405B旗舰模型外,还升级了8B和70B多语种模型,上下文长度达到128K,工具使用能力和推理能力显著增强。

>> 提供全套Llama系统,包括引导、合成数据等多个组件。

核心思路和步骤

>> Llama 3.1 405B模型采用标准的transformer架构,通过迭代式监督微调直接偏好优化等技术提升模型性能。

>> 大幅优化全流程,使用16000多张H100 GPU进行405B模型训练。

>> 采用合成数据生成、数据过滤等技术大规模生成高质量指令fine-tune数据。

>> 使用大量高质量预训练和后训练数据,提升各项能力水平。

>> 量化模型到8-bit,降低推理计算需求,支持单节点部署。

>> 发布Llama系统,包含多语种安全模型Llama Guard 3、输入检测工具Prompt Guard等新组件。提出Llama Stack标准接口,推动生态系统兼容性

优势点

>> 首个开源并与闭源模型媲美的人工智能模型。405B模型综合能力与头部闭源模型相当,在通用知识、可控性、数学、工具使用、多语种翻译等方面表现卓越。

>> 支持合成数据生产、模型蒸馏等前沿工作流,释放更多创新可能。

>> 与闭源模型相比,总体拥有更低的成本和更高的灵活性、可定制性。提供极低成本的产品服务。

>> 真正实现开放获取的AI,推动AI技术更广泛应用。更新了许可协议,允许开发者使用Llama模型的输出来改进其他模型。

>> 坚持开源理念,确保AI公平获取,避免权力过度集中。

>> 该模型将引领创新应用和研究新模式。与AWS、NVIDIA、Databricks等25+合作伙伴合作,为开发者提供完整生态支持。

目录

相关文章

LLMs之LLaMA:LLaMA的简介、安装和使用方法、案例应用之详细攻略

LLMs之LLaMA-2:LLaMA-2的简介(技术细节)、安装、使用方法(开源-免费用于研究和商业用途)之详细攻略

LLMs之Llama3:Llama 3的简介、安装和使用方法、案例应用之详细攻略

LLMs之llama3-from-scratch:llama3-from-scratch(从头开始利用pytorch来实现并解读LLaMA-3模型的每层代码)的简介、核心思路梳理

LLMs之Llama 3.1:Llama 3.1的简介、安装和使用方法、案例应用之详细攻略

Llama 3.1的简介

1、要点

2、模型评估

Benchmarks:Llama 3.1 405B、Nemotron 4 340B lnstruct、GPT-4(0125)、GPT-4 Omni、claude 3.5 Sonnet

Benchmarks:Llama 3.1 8B、Gemma 2 9BIT、Mistral 7B lnstruct、Llama 3.1 70B、Mixtral 8x22B Instruct、GPT 3.5 Turbo

Llama 3.1 405B Human Evaluation

3、模型架构:Llama 3.1 405B =15 T个token+1.6K个H100 +仅解码器的transformer 模型架构+迭代式后训练(SFT+DPO)+训练前和训练后的大数量和高质量+采用量化技术(FP8)

4、指令和聊天微调:多轮对齐(SFT+RS+DPO)+使用合成数据+多种数据处理技术过滤到最高质量

5、Llama系统—降低开发门槛:新组件=Llama Guard 3+Prompt Guard+Llama Stack

6、开放驱动创新

7、使用 Llama 3.1 405B 进行构建:持续预训练、RAG、函数调用、合成数据生成等

8、立即试用 Llama 3.1 系列模型

Llama 3.1的安装和使用方法

1、Llama 3.1的安装

Llama 3.1模型下载地址

下载llama-agentic-system

2、使用方法

2.1、工具使用

2.2、多语言代理

2.3、复杂推理

2.4、编码助手

3、Llama 3.1中支持的角色

支持 4 种不同的角色

4、Llama 3.1中的指令

(1)、用户与助手对话

(2)、内置基于 Python 的工具调用

步骤 - 1 用户提示和系统提示

步骤 - 2 模型确定调用哪个工具

步骤 - 3 由工具即 Wolfram Alpha 生成响应。

步骤 - 4 使用工具响应重新提示模型

步骤 - 5 代理对用户的回复

(3)、基于 JSON 的工具调用

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

步骤 - 2 模型确定调用哪个工具

步骤 - 3 调用工具的结果被传回模型

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

(4)、用户定义自定义工具调用

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

步骤 - 2 模型确定调用哪个工具

步骤 - 3 调用工具的结果被传回模型

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

Llama 3.1的案例应用


相关文章

LLMs之LLaMA:LLaMA的简介、安装和使用方法、案例应用之详细攻略

LLMs之LLaMA:LLaMA的简介、安装和使用方法、案例应用之详细攻略_chinese_calendar每年手动更新-CSDN博客

LLMs之LLaMA-2:LLaMA-2的简介(技术细节)、安装、使用方法(开源-免费用于研究和商业用途)之详细攻略

LLMs之LLaMA-2:LLaMA-2的简介(技术细节)、安装、使用方法(开源-免费用于研究和商业用途)之详细攻略_llama2-CSDN博客

LLMs之Llama3:Llama 3的简介、安装和使用方法、案例应用之详细攻略

LLMs之Llama 3:Llama 3的简介、安装和使用方法、案例应用之详细攻略-CSDN博客

LLMs之llama3-from-scratch:llama3-from-scratch(从头开始利用pytorch来实现并解读LLaMA-3模型的每层代码)的简介、核心思路梳理

LLMs之llama3-from-scratch:llama3-from-scratch(从头开始利用pytorch来实现并解读LLaMA-3模型的每层代码)的简介、核心思路梳理-CSDN博客

LLMs之Llama 3.1:Llama 3.1的简介、安装和使用方法、案例应用之详细攻略

LLMs之Llama 3.1:Llama 3.1的简介、安装和使用方法、案例应用之详细攻略-CSDN博客

Llama 3.1的简介

2024年7月23日,Meta重磅推出Llama 3.1。到目前为止,开源大型语言模型在功能和性能方面大多落后于闭源模型。现在,我们正迎来一个由开源引领的新时代。我们公开发布了 Meta Llama 3.1 405B,我们认为这是世界上最大、功能最强大的开源基础模型。迄今为止,所有 Llama 版本的总下载量已超过 3 亿次,而这仅仅是个开始。

Llama 3.1 405B 是第一个公开可用的模型,在常识、可操纵性、数学工具使用和多语言翻译等先进功能方面可与顶级 AI 模型相媲美。随着 405B 模型的发布,我们已准备好增强创新能力,为增长和探索提供前所未有的机会。我们相信最新一代的 Llama 将激发新的应用程序和建模范例,包括合成数据生成,以便改进和训练较小的模型,以及模型提炼,这是开源中从未如此大规模实现的功能。

作为最新版本的一部分,我们推出了 8B  70B 模型的升级版本。这些模型支持多种语言,上下文长度显著增加,达到 128K,使用最先进的工具,推理能力也更强。这使得我们的最新模型能够支持高级用例,例如长篇文本摘要、多语言对话代理和编码助手。我们还对许可证进行了更改,允许开发人员使用 Llama 模型(包括 405B)的输出来改进其他模型。为了履行我们对开源的承诺,从今天开始,我们将这些模型提供给社区,供其在llama.meta.com和Hugging Face上下载,并可在我们广泛的合作伙伴平台生态系统上立即开发。

官网地址:https://ai.meta.com/blog/meta-llama-3-1/

论文地址:https://ai.meta.com/research/publications/the-llama-3-herd-of-models/

文档地址:https://llama.meta.com/docs/overview/

GitHub地址:https://github.com/meta-llama/llama-models

llama-agentic-system地址:https://github.com/meta-llama/llama-agentic-system/

1、要点

>> 开源性:Meta致力于公开可访问的人工智能。马克·扎克伯格发表了一封信,详细阐述了开源对开发者、Meta以及世界的好处。

>> 开源顶级模型:我们最新的模型将上下文长度扩展到128K,支持八种语言,并包含了Llama 3.1 405B——首个前沿级别的开源人工智能模型。

>> 媲美闭源模型:Llama 3.1 405B具有无与伦比的灵活性、控制力和最先进的能力,可与最佳的闭源模型相媲美。新模型将使社区能够解锁新的工作流程,如合成数据生成和模型蒸馏。

>> 新的安全工具:我们正在继续发展Llama成为一个系统,提供更多与模型配合使用的组件,包括参考系统。我们希望赋予开发者工具,以创建他们自己的定制代理和新类型的代理行为。我们正在用新的安全和保障工具来加强这一点,包括Llama Guard 3和Prompt Guard,以负责任地构建。

>> 标准接口:我们发布了有关Llama Stack API的征求意见,希望这个标准接口能简化第三方项目利用Llama模型的过程。

>> 生态系统:生态系统已经准备就绪,超过25个合作伙伴,包括AWS、NVIDIA、Databricks、Groq、Dell、Azure、Google Cloud和Snowflake,第一天就提供服务。

>> 可访问:在美国,您可以在WhatsApp上以及通过访问meta.ai提出具有挑战性的数学或编程问题来尝试Llama 3.1 405B。

2、模型评估

对于此版本,我们在 150 多个涵盖多种语言的基准数据集上评估了性能。此外,我们还进行了广泛的人工评估,在真实场景中将 Llama 3.1 与竞争模型进行了比较。我们的实验评估表明,我们的旗舰模型在一系列任务中与领先的基础模型相媲美,包括 GPT-4、GPT-4o 和 Claude 3.5 Sonnet。此外,我们的小型模型与具有相似数量参数的封闭和开放模型相媲美

Benchmarks:Llama 3.1 405B、Nemotron 4 340B lnstruct、GPT-4(0125)、GPT-4 Omni、claude 3.5 Sonnet

Benchmarks:Llama 3.1 8B、Gemma 2 9BIT、Mistral 7B lnstruct、Llama 3.1 70B、Mixtral 8x22B Instruct、GPT 3.5 Turbo

Llama 3.1 405B Human Evaluation

3、模型架构Llama 3.1 405B =15 T个token+1.6K个H100 +仅解码器的transformer 模型架构+迭代式后训练(SFT+DPO)+训练前和训练后的大数量和高质量+采用量化技术(FP8)

作为我们迄今为止最大的模型,在超过15万亿个 token 上训练 Llama 3.1 405B 是一项重大挑战。为了能够以这种规模进行训练并在合理的时间内取得成果,我们显著优化了整个训练堆栈,并将模型训练推向超过 16,000 个H100 GPU,使 405B 成为第一个以这种规模训练的 Llama 模型。

为了解决这个问题,我们做出了设计选择,重点关注保持模型开发过程的可扩展性和简单性
>> 我们选择了标准的仅解码器的transformer 模型架构,并进行了细微的改动,而不是混合专家模型,以最大限度地提高训练稳定性。
>> 我们采用了迭代式后训练过程,每轮都使用监督式微调直接偏好优化。这使我们能够为每一轮创建最高质量的合成数据,并提高每项功能的性能。

与之前的 Llama 版本相比,我们提高了用于训练前和训练后的数据的数量和质量。这些改进包括为训练前数据开发更仔细的预处理和管理流程、开发更严格的质量保证以及训练后数据的过滤方法。

正如语言模型的缩放定律所预期的那样,我们的新旗舰模型比使用相同程序训练的小型模型表现更好。我们还使用 405B 参数模型来提高小型模型的训练后质量。

为了支持 405B 规模模型的大规模生产推理,我们将模型从 16 位 (BF16) 量化为 8 位 (FP8) 数字,有效降低了所需的计算要求并允许模型在单个服务器节点内运行

4、指令和聊天微调:多轮对齐(SFT+RS+DPO)+使用合成数据+多种数据处理技术过滤到最高质量

借助 Llama 3.1 405B,我们努力提高模型对用户指令的响应能力、质量和详细指令遵循能力,同时确保高水平的安全性。我们面临的最大挑战是支持更多功能、128K上下文窗口和更大的模型大小。

在后训练中,我们通过在预训练模型的基础上进行几轮对齐来生成最终的聊天模型。每轮都涉及监督微调 (SFT)、拒绝抽样 (RS) 和直接偏好优化 (DPO)。我们使用合成数据生成来生成绝大多数 SFT 示例,并进行多次迭代以生成涵盖所有功能的越来越高质量的合成数据。此外,我们投资了多种数据处理技术,以将这些合成数据过滤到最高质量。这使我们能够跨功能扩展微调数据量。

我们仔细平衡数据,以生成在所有功能上都具有高质量模型。例如,即使扩展到 128K 上下文,我们的模型在短上下文基准上也能保持质量。同样,即使我们添加了安全缓解措施,我们的模型仍能继续提供最有帮助的答案。

5、Llama系统—降低开发门槛:新组件=Llama Guard 3+Prompt Guard+Llama Stack

Llama 模型始终旨在作为整体系统的一部分,该系统可以协调多个组件,包括调用外部工具。我们的愿景是超越基础模型,让开发人员能够访问更广泛的系统,让他们能够灵活地设计和创建符合他们愿景的定制产品。这种想法始于去年,当时我们首次引入了核心 LLM 之外的组件

为了持续致力于在模型层之外负责任地开发 AI 并帮助其他人也这样做,我们发布了一个完整的参考系统,其中包括几个示例应用程序,并包括新组件,例如Llama Guard 3(多语言安全模型)和 Prompt Guard(即时注入过滤器)。这些示例应用程序是开源的,社区可以在此基础上进行构建。

Llama System 愿景中的组件实现仍然很分散。这就是为什么我们开始与行业、初创公司和更广泛的社区合作,以帮助更好地定义这些组件的接口。为了支持这一点,我们在 GitHub 上发布了对我们称之为“Llama Stack”的评论请求。Llama Stack 是一组标准化和有主见的接口,用于如何构建规范的工具链组件(微调、合成数据生成)和代理应用程序。我们希望这些接口能够在整个生态系统中得到采用,这将有助于更轻松地实现互操作性。

我们欢迎反馈和改进提案的方法。我们很高兴能够发展围绕 Llama 的生态系统并降低开发人员和平台提供商的门槛。

6、开放驱动创新

与闭源模型不同,Llama 模型权重可供下载。开发人员可以根据自己的需求和应用完全自定义模型,在新数据集上进行训练,并进行额外的微调。这使更广泛的开发人员社区和世界能够更充分地认识到生成式 AI 的强大功能。开发人员可以完全自定义其应用程序,并在任何环境中运行,包括本地、云端,甚至本地笔记本电脑上 - 所有这些都无需与 Meta 共享数据。

尽管许多人可能认为闭源模型更具成本效益,但根据人工智能分析的测试,Llama 模型的每token成本是业内最低的。正如马克·扎克伯格所说,开源将确保全世界更多的人能够享受人工智能的好处和机会,权力不会集中在少数人手中,并且该技术可以更均匀、更安全地在整个社会中部署。这就是为什么我们继续采取措施,让开放式人工智能成为行业标准。

我们看到社区利用过去的 Llama 模型构建了令人惊叹的东西,包括使用 Llama 构建并部署在 WhatsApp 和 Messenger 中的AI 学习伙伴、专为医疗领域量身定制的 LLM,旨在帮助指导临床决策,以及巴西的一家医疗保健非营利初创公司,它使医疗保健系统能够更轻松地以数据安全的方式组织和传达患者的住院信息。借助开源的力量,我们迫不及待地想看看他们利用我们的最新模型构建了什么。

7、使用 Llama 3.1 405B 进行构建持续预训练、RAG、函数调用合成数据生成

对于普通开发者来说,使用 405B 规模的模型是一项挑战。虽然这是一个非常强大的模型,但我们认识到,使用它需要大量的计算资源和专业知识。我们与社区进行了交流,我们意识到生成式 AI 开发不仅仅是提示模型。我们希望让每个人都能充分利用 405B,包括:
>> 实时和批量推理
>> 监督微调
>> 针对您的特定应用评估您的模型
>> 持续预训练
>> 检索增强生成 (RAG)
>> 函数调用
>> 合成数据生成

这正是 Llama 生态系统可以提供帮助的地方。在第一天,开发人员就可以利用 405B 模型的所有高级功能并立即开始构建。开发人员还可以探索高级工作流程,例如易于使用的合成数据生成、遵循模型提炼的交钥匙指示以及使用 AWS、NVIDIA 和 Databricks 等合作伙伴的解决方案实现无缝 RAG。此外,Groq 针对云部署优化了低延迟推理,而戴尔也针对本地系统实现了类似的优化。

我们与 vLLM、TensorRT 和 PyTorch 等主要社区项目合作,从第一天开始提供支持,以确保社区为生产部署做好准备

我们希望 405B 的发布也能激发整个社区的创新,使这种规模的模型的推理和微调变得更容易,并推动模型提炼的下一波研究。

8、立即试用 Llama 3.1 系列模型

我们迫不及待地想看看社区将如何处理这项工作。使用多语言性增加的上下文长度,可以构建有用的新体验,潜力巨大。借助 Llama Stack 和新的安全工具,我们期待继续负责任地与开源社区共同建设。在发布模型之前,我们会通过多种措施来识别、评估和减轻潜在风险,包括通过红队进行部署前风险发现练习以及安全微调。

例如,我们与外部和内部专家进行了广泛的红队测试,以对模型进行压力测试并找到可能使用它们的意外方式。(阅读此博客文章,了解有关我们如何负责任地扩展我们的 Llama 3.1 模型集合的更多信息。)

虽然这是我们迄今为止最大的模型,但我们相信未来仍有许多新的领域值得探索,包括更多设备友好的尺寸、更多模式以及在代理平台层的更多投资。与往常一样,我们期待看到社区将利用这些模型构建的所有令人惊叹的产品和体验。

Llama 3.1的安装和使用方法

1、Llama 3.1的安装

Llama 3.1模型下载地址

官网下载:https://llama.meta.com/

HuggingFace载:https://huggingface.co/collections/meta-llama/llama-31-669fc079a0c406a149a5738f

下载llama-agentic-system

llama-agentic-system地址:https://github.com/meta-llama/llama-agentic-system/

2、使用方法

2.1、工具使用

上传数据集并进行分析。提示模型绘制图形并获取市场数据。

2.2、多语言代理

提示:将汉塞尔和格莱特的故事翻译成西班牙语。

2.3、复杂推理

提示:我有 3 件衬衫、5 条短裤和 1 件太阳裙。我要旅行 10 天,我的假期带够了吗?

2.4、编码助手

提示:创建一个程序,使用递归回溯算法或深度优先搜索算法生成一个完美的迷宫,其大小和复杂性可自定义。

3、Llama 3.1中支持的角色

支持 4 种不同的角色

  • system:设置与 AI 模型交互的环境。它通常包括规则、指南或帮助模型有效响应的必要信息。
  • user:表示人与模型的交互。它包括对模型的输入、命令和问题。
  • ipython:Llama 3.1 中引入的新角色。从语义上讲,此角色表示“工具”。此角色用于在从执行器发送回模型时使用工具调用的输出标记消息。
  • assistant:表示 AI 模型根据“系统”、“ipython”和“用户”提示中提供的上下文生成的响应。

4、Llama 3.1中的指令

注意:对于结合了对话和工具调用的应用程序,我们建议使用 Llama 70B-instruct 或 Llama 405B-instruct。Llama 8B-Instruct 无法可靠地与工具调用定义一起保持对话。它可以用于零次工具调用,但对于模型和用户之间的常规对话,应删除工具指令。
指令模型提供了不同的提示自定义选项,从用户和助手之间的简单交互到复杂的工具调用场景。下面我们提供了一个分为四类的提示示例:用户和助手对话、Python 格式的内置工具、JSON 格式的内置自定义工具以及完整的自定义工具格式,重点是工具调用。可用的工具调用选项需要特别注意,因为它们可以以不同的方式实现。

这些模型经过训练可以识别可以用三种不同工具(Brave Web Search、Wolfram Alpha Search 和 Code Interpreter)回答的提示,并生成适当的 Python 函数调用来获取答案(更多详细信息请参阅内置工具调用部分)。
此外,系统和用户均可在提示中定义自定义格式。该模型经过训练,可以识别提示中的新工具定义,根据这些定义生成工具调用,并仅以 JSON 格式回答,以便更轻松地解析响应并执行适当的工具。

在系统中定义多个工具和/或用户提示可能会导致模型根据用户查询生成多个工具调用。开发人员必须迭代所需的提示才能获得所需的结果并相应地解析结果。

鉴于 Llama 模型用例的多样性,我们建议开发人员根据自己的需求彻底测试不同的提示和格式,并使用此处提供的指南作为这些测试的起点。我们在最后一节“定义您自己的格式”中提供了一个在我们自己的Llama 代理系统环境中运行良好的格式示例。
为了更好地说明下面的流程,此图显示了所描述的信息流:

(1)、用户与助手对话

用户与模型之间的常规多轮对话的格式在 Llama 3 和 Llama 3.1 之间没有变化。下面是其格式的一个简单示例。

<|begin_of_text|><|start_header_id|>system<|end_header_id|>Cutting Knowledge Date: December 2023
Today Date: 23 Jul 2024You are a helpful assistant<|eot_id|><|start_header_id|>user<|end_header_id|>What is the capital for France?<|eot_id|><|start_header_id|>assistant<|end_header_id|></code></span></span></span></span></span>

(2)、内置基于 Python 的工具调用

可以使用以下提示打开三个内置工具(brave_searchwolfram_alphacode interpretersystem
  • Brave Search:用于执行网络搜索的工具调用。
  • Wolfram Alpha:执行复杂数学计算的工具调用。
  • 代码解释器:使模型输出python代码。
<|begin_of_text|><|start_header_id|>system<|end_header_id|>Environment: ipython
Tools: brave_search, wolfram_alphaCutting Knowledge Date: December 2023
Today Date: 23 Jul 2024You are a helpful assistant<|eot_id|>
<|start_header_id|>user<|end_header_id|>What is the current weather in Menlo Park, California?<|eot_id|><|start_header_id|>assistant<|end_header_id|></code></span></span></span></span></span>

需要注意以下几点:

  • 只需包含 Environment: ipython 即可打开代码解释器;因此,您无需在 Tools: 行中指定代码解释。模型可以生成由执行器解释的 Python 代码,并将结果返回给模型
  • 助手响应的消息正文以特殊标签<|python_tag|>开头
  • 如上所述,在这样的环境中,模型可以生成 <|eom_id|> ,而不仅仅是标准的 <|eot_id|> 。后者表示回合已完成,而前者表示继续进行多步推理。也就是说,模型期望在工具调用的输出中出现延续消息。
内置工具使用Python 语法调用,而不是像zero-shot工具那样使用JSON 格式。模型为每个工具生成的 Python 调用格式如下:
# for Search
<|python_tag|>
brave_search.call(query="...")
<|eom_id|># for Wolfram
<|python_tag|>
wolfram_alpha.call(query="...")
<|eom_id|>
要使用模型的 zero-shot学习功能创建自定义工具调用,您可以在系统提示中提供工具定义的说明以及您希望模型为调用生成的格式。llama-agentic-system GitHub 存储库中提供了一个工作示例。 您可以在此处查看。
下面的示例展示了用户 ⇔ 模型 ⇔ 工具之间的 端到端提示交互 。此示例系统使用wolfram_alpha内置工具。(请注意:模型不会执行对工具的调用;您需要使用我们的llama-agentic-system或其他类似框架来利用工具调用功能。)
步骤 - 1 用户提示和系统提示
<|begin_of_text|><|start_header_id|>system<|end_header_id|>Environment: ipython
Tools: brave_search, wolfram_alphaCutting Knowledge Date: December 2023
Today Date: 23 Jul 2024You are a helpful Assistant.<|eot_id|><|start_header_id|>user<|end_header_id|>Can you help me solve this equation: x^3 - 4x^2 + 6x - 24 = 0<|eot_id|><|start_header_id|>assistant<|end_header_id|>
步骤 - 2 模型确定调用哪个工具
<|python_tag|>wolfram_alpha.call(query="solve x^3 - 4x^2 + 6x - 24 = 0")<|eom_id|>
步骤 - 3 由工具即 Wolfram Alpha 生成响应。
{"queryresult": {"success": true,"inputstring": "solve x^3 - 4x^2 + 6x - 24 = 0","pods": [{"title": "Input interpretation","subpods": [{"title": "","plaintext": "solve x^3 - 4 x^2 + 6 x - 24 = 0"}]},{"title": "Results","primary": true,"subpods": [{"title": "","plaintext": "x = 4"},{"title": "","plaintext": "x = ± (i sqrt(6))"}]},...]}
}
步骤 - 4 使用工具响应重新提示模型
<|begin_of_text|><|start_header_id|>system<|end_header_id|>Environment: ipython
Tools: brave_search, wolfram_alphaCutting Knowledge Date: December 2023
Today Date: 23 Jul 2024You are a helpful Assistant.<|eot_id|><|start_header_id|>user<|end_header_id|>Can you help me solve this equation: x^3 - 4x^2 + 6x - 24 = 0<|eot_id|><|start_header_id|>assistant<|end_header_id|><|python_tag|>wolfram_alpha.call(query="solve x^3 - 4x^2 + 6x - 24 = 0")<|eom_id|><|start_header_id|>ipython<|end_header_id|>{"queryresult": {"success": true, "inputstring": "solve x^3 - 4x^2 + 6x - 24 = 0", "pods": [{"title": "Input interpretation", "subpods": [{"title": "", "plaintext": "solve x^3 - 4 x^2 + 6 x - 24 = 0"}]}, {"title": "Results", "primary": true, "subpods": [{"title": "", "plaintext": "x = 4"}, {"title": "", "plaintext": "x = \u00b1 (i sqrt(6))"}]}, ... ]}}<|eot_id|><|start_header_id|>assistant<|end_header_id|>         
步骤 - 5 代理对用户的回复
The solutions to the equation x^3 - 4x^2 + 6x - 24 = 0 are x = 4 and x = ±(i√6).<|eot_id|>

(3)、基于 JSON 的工具调用

Meta Llama 模型现在可以从单个消息输出自定义工具调用,以便 更轻松地调用工具 。以下提示提供了如何从模型输出调用自定义工具的示例。需要注意的是,模型 本身并不执行调用 ;它提供结构化输出以 方便执行器调用 。可以在llama-agentic-system中找到一个示例执行器。工具格式类似于OpenAI 定义,可以进行调整以更好地满足您的需求,如下一节所述。
  • 使用自定义工具调用时,要使模型输出eom_id,需要在系统提示符中添加以下指令:Environment: ipython。否则,它应该输出eot_id
  • 需要调整系统提示以告知模型如何处理工具调用输出
  • 工具定义在用户提示中提供,因为这是模型针对内置 JSON 工具调用进行训练的方式。但是,也可以在系统提示中提供工具定义,并获得类似的结果。开发人员必须测试哪种方式最适合他们的用例。

步骤 - 1 用户提示自定义工具详细信息
<|begin_of_text|><|start_header_id|>system<|end_header_id|>Environment: ipython
Tools: brave_search, wolfram_alphaCutting Knowledge Date: December 2023
Today Date: 23 Jul 2024# Tool Instructions
- Always execute python code in messages that you share.
- When looking for real time information use relevant functions if available else fallback to brave_searchYou have access to the following functions:Use the function 'spotify_trending_songs' to: Get top trending songs on Spotify
{"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}}
}If a you choose to call a function ONLY reply in the following format:
<{start_tag}={function_name}>{parameters}{end_tag}
wherestart_tag => `<function`
parameters => a JSON dict with the function argument name as key and function argument value as value.
end_tag => `</function>`Here is an example,
<function=example_function_name>{"example_name": "example_value"}</function>Reminder:
- Function calls MUST follow the specified format
- Required parameters MUST be specified
- Only call one function at a time
- Put the entire function call reply on one line"
- Always add your sources when using search results to answer the user queryYou are a helpful Assistant.<|eot_id|><|start_header_id|>user<|end_header_id|>Can you check the top 5 trending songs on spotify?<|eot_id|><|start_header_id|>assistant<|end_header_id|>
步骤 - 2 模型确定调用哪个工具
  • 由于我们没有使用Environment: ipython系统提示中的指令,因此模型以 token 结束生成eot_id,而不是eom_idtoken
{"name": "get_current_conditions", "parameters": {"location": "San Francisco, CA", "unit": "Fahrenheit"}}<eot_id>
步骤 - 3 调用工具的结果被传回模型
当工具调用的结果发送回模型时,我们ipython在标题中使用新角色。
<|begin_of_text|><|start_header_id|>system<|end_header_id|>You are a helpful assistant with tool calling capabilities. When you receive a tool call response, use the output to format an answer to the orginal use question.<|eot_id|><|start_header_id|>user<|end_header_id|>Given the following functions, please respond with a JSON for a function call with its proper arguments that best answers the given prompt.Respond in the format {"name": function name, "parameters": dictionary of argument name and its value}. Do not use variables.{"type": "function","function": {"name": "get_current_conditions","description": "Get the current weather conditions for a specific location","parameters": {"type": "object","properties": {"location": {"type": "string","description": "The city and state, e.g., San Francisco, CA"},"unit": {"type": "string","enum": ["Celsius", "Fahrenheit"],"description": "The temperature unit to use. Infer this from the user's location."}},"required": ["location", "unit"]}}
}Question: what is the weather like in San Fransisco?<|eot_id|><|start_header_id|>assistant<|end_header_id|>{"name": "get_current_conditions", "parameters": {"location": "San Francisco, CA", "unit": "Fahrenheit"}}<|eot_id|><|start_header_id|>ipython<|end_header_id|>Clouds giving way to sun Hi: 76° Tonight: Mainly clear early, then areas of low clouds forming Lo: 56°"<|eot_id|><|start_header_id|>assistant<|end_header_id|>
步骤 - 4 模型生成用户的最终响应
The weather in Menlo Park is currently cloudy with a high of 76° and a low of 56°, with clear skies expected tonight.<eot_id>

(4)、用户定义自定义工具调用

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

  • 模型 eom_id根据Environment: ipython指令使用了 token。
  • 系统提示定义了自定义格式以及模型可用的工具。
步骤 - 1 用户提示自定义工具详细信息
<|begin_of_text|><|start_header_id|>system<|end_header_id|>Environment: ipython
Tools: brave_search, wolfram_alphaCutting Knowledge Date: December 2023
Today Date: 23 Jul 2024# Tool Instructions
- Always execute python code in messages that you share.
- When looking for real time information use relevant functions if available else fallback to brave_searchYou have access to the following functions:Use the function 'spotify_trending_songs' to: Get top trending songs on Spotify
{"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}}
}If a you choose to call a function ONLY reply in the following format:
<{start_tag}={function_name}>{parameters}{end_tag}
wherestart_tag => `<function`
parameters => a JSON dict with the function argument name as key and function argument value as value.
end_tag => `</function>`Here is an example,
<function=example_function_name>{"example_name": "example_value"}</function>Reminder:
- Function calls MUST follow the specified format
- Required parameters MUST be specified
- Only call one function at a time
- Put the entire function call reply on one line"
- Always add your sources when using search results to answer the user queryYou are a helpful Assistant.<|eot_id|><|start_header_id|>user<|end_header_id|>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在标题中使用新角色。
<|begin_of_text|><|start_header_id|>system<|end_header_id|>Environment: ipython
Tools: brave_search, wolfram_alphaCutting Knowledge Date: December 2023
Today Date: 23 Jul 2024# Tool Instructions
- Always execute python code in messages that you share.
- When looking for real time information use relevant functions if available else fallback to brave_searchYou have access to the following functions:Use the function 'spotify_trending_songs' to: Get top trending songs on Spotify
{"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}}}If a you choose to call a function ONLY reply in the following format:
<{start_tag}={function_name}>{parameters}{end_tag}
wherestart_tag => `<function`
parameters => a JSON dict with the function argument name as key and function argument value as value.
end_tag => `</function>`Here is an example,
<function=example_function_name>{"example_name": "example_value"}</function>Reminder:
- Function calls MUST follow the specified format
- Required parameters MUST be specified
- Only call one function at a time
- Put the entire function call reply on one line"
- Always add your sources when using search results to answer the user queryYou are a helpful Assistant.<|eot_id|><|start_header_id|>user<|end_header_id|>Can you check the top 5 trending songs on spotify?<|eot_id|><|start_header_id|>assistant<|end_header_id|><function=spotify_trending_songs>{"n": "5"}</function><|eom_id|><|start_header_id|>ipython<|end_header_id|>["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 模型生成用户的最终响应
The top 5 trending songs on Spotify are: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|>

Llama 3.1的案例应用

持续更新中……

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

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

相关文章

OCC 创建方管(拉伸操作)

目录 一、OCC 拉伸操作 二、例子 1、使BRepBuilderAPI_MakeFace 2、使用BRepPrimAPI_MakeRevol 3、垂直路径扫掠 一、OCC 拉伸操作 BRepPrimAPI_MakeSweep Class Reference - Open CASCADE Technology Documentation OCC提供几种图形的构建是由基本图形的旋转,拉伸等方…

基于STM32瑞士军刀--【FreeRTOS开发】学习笔记(二)|| 堆 / 栈

堆和栈 1. 堆 堆就是空闲的一块内存&#xff0c;可以通过malloc申请一小块内存&#xff0c;用完之后使用再free释放回去。管理堆需要用到链表操作。 比如需要分配100字节&#xff0c;实际所占108字节&#xff0c;因为为了方便后期的free&#xff0c;这一小块需要有个头部记录…

电子加密狗的定义与功能

电子加密狗&#xff0c;也称为加密锁、硬件锁或USB密钥&#xff0c;是一种用于软件保护和授权管理的硬件设备。它通常是一个外部设备&#xff0c;插入到计算机的USB接口上&#xff0c;通过加密算法和技术来确保软件的安全性和防止非法复制、盗版以及未经授权的使用。以下是关于…

AR 眼镜之-蓝牙电话-实现方案

目录 &#x1f4c2; 前言 AR 眼镜系统版本 蓝牙电话 来电铃声 1. &#x1f531; 技术方案 1.1 结构框图 1.2 方案介绍 1.3 实现方案 步骤一&#xff1a;屏蔽原生蓝牙电话相关功能 步骤二&#xff1a;自定义蓝牙电话实现 2. &#x1f4a0; 屏蔽原生蓝牙电话相关功能 …

[linux] seqeval安装报错

新建一个新的环境 然后安装&#xff1a; # 不能拷贝别人的环境再安mebert_wash的环境。有冲突。我需要重新安一个空的conda环境&#xff0c;再安装。 # conda create -n wash python3.10 ipykernel python -m pip install --upgrade setuptools python -m pip install --upgr…

【Unity】关于Luban的简单使用

最近看了下Luban导出Excel数据的方式&#xff0c;来记录下 【Unity】关于Luban的简单使用 安装Luban开始使用UnityLubanC# 扩展 安装Luban Luban文档&#xff1a;https://luban.doc.code-philosophy.com/docs/beginner/quickstart 1.安装dotnet sdk 8.0或更高版本sdk 2.githu…

Mysql或MariaDB数据库的用户与授权操作——实操保姆级教程

一、问题描述 在日常的工作中,我们需要给不同角色的人员创建不同的账号,他们各自可访问的数据库或权限不一样,这时就需要创建用户和赋予不同的权限内容了。 二、问题分析 1、创建不同的角色账号; 2、给这些账号授予各自可访问数据库的权限。 三、实现方法 Centos8安装…

STM32——GPIO(LED闪烁)

一、什么是GPIO&#xff1f; GPIO&#xff08;通用输入输出接口&#xff09;&#xff1a; 1.GPIO 功能概述 GPIO 是通用输入/输出&#xff08;General Purpose I/O&#xff09;的简称&#xff0c;既能当输入口使用&#xff0c;又能当输出口使用。端口&#xff0c;就是元器件…

android settings提示音开关状态与修改(一)

android系统&#xff0c;settings提示音类型&#xff1a; 提示音开关默认状态&#xff0c;定义文件&#xff1a; frameworks/base/packages/SettingsProvider/res/values/defaults.xml 提示音默认定义&#xff1a; // 锁屏提示音 <integer name"def_lockscreen_sounds_…

2025第十九届中国欧亚国际军民两用技术及西安国防电子航空航天暨无人机展

2025第十九届中国欧亚国际军民两用技术及西安国防电子航空航天暨无人机展 时间&#xff1a;2025年3月14-16日 地点&#xff1a;西安国际会展中心 详询主办方陆先生 I38&#xff08;前三位&#xff09; I82I&#xff08;中间四位&#xff09; 9I72&#xff08;后面四位&am…

Nacos 2.x 新增 grpc 端口,Nginx 需要配置TCP端口转发的注意事项

Nacos 2.x 开始&#xff0c;最大的变化就是端口。在默认主端口 8848 之外又新增了三个端口&#xff0c;新增端口是在配置的主端口 server.port 的基础上&#xff0c;进行一定偏移量自动生成。 8848&#xff08;主端口&#xff0c;默认8848&#xff09;web页面端口及相关http接口…

导航网站WP主题/WP黑格导航主题BlackCandy-简约酷黑色高逼格+焕然一新的UI设计

源码简介&#xff1a; 导航网站WP主题-WP黑格导航主题BlackCandy&#xff0c;它有着简约酷黑色高逼格&#xff0c;而且有焕然一新的UI设计。它是一个简约漂亮的 WordPress 自媒体主题。黑格网址导航主题&#xff0c;自适应电脑端和手机端。 BlackCandy-V2.0这次全新升级了&am…

vite构建vue3项目hmr生效问题踩坑记录

vite构建vue3项目hmr生效问题踩坑记录 hmr的好处 以下是以表格形式呈现的前端开发中HMR&#xff08;热模块替换&#xff09;带来的好处&#xff1a; 好处描述提升开发效率允许开发者在不刷新整个页面的情况下实时更新修改的代码&#xff0c;减少等待时间保持应用状态在模块替…

Oauth2协议的四种模式

B站视频 概念 Oauth2.0&#xff08;Open Authorization&#xff09; 一个关于授权的开放网络标准 允许用户授权第三方应用访问用户存储在其他服务提供者上的信息 不需要将用户名和密码提供给第三方应用 Oauth2中的各个角色 授权码模式 第一步 获取授权码 以上流程中的授…

Unity3D结合AI教育大模型 开发AI教师 AI外教 AI英语教师案例

自2022年底ChatGPT引爆全球之后&#xff0c;大模型技术便迎来了一段崭新的快速发展期&#xff0c;由其在GPT4.0发布后&#xff0c;AI与教育领域结合产品研发、已成为教育AI科技竞争的新高地、未来产业的新赛道、经济发展的新引擎和新产品的诞生地。 据不完全统计&#xff0c;目…

Robot Operating System——Parameter设置的预处理、校验和成功回调

大纲 预处理校验成功回调完整代码测试总结 在《Robot Operating System——对Parameter设置进行校验》一文中&#xff0c;我们通过Node的add_on_set_parameters_callback方法&#xff0c;设置了一个回调函数&#xff0c;用于校验传递过来的Parameter参数。但是这个方法并不能对…

go程序在windows服务中优雅开启和关闭

本篇主要是讲述一个go程序&#xff0c;如何在windows服务中优雅开启和关闭&#xff0c;废话不多说&#xff0c;开搞&#xff01;&#xff01;&#xff01;   使用方式&#xff1a;go程序 net服务启动 Ⅰ 开篇不利 Windows go进程编译后&#xff0c;为一个.exe文件,直接执行即…

[Vulnhub] Raven WordPress+SUDO-Python权限提升+MSQP自动化Mysql权限提升

信息收集 IP AddressOpening Ports192.168.101.159TCP: $ nmap -p- 192.168.101.159 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 6.7p1 Debian 5deb8u4 (protocol 2.0) | ssh-hostkey: | 1024 26:81:c1:f3:5e:01:ef:93:4…

【Java版数据结构】初识泛型

看到这句话的时候证明&#xff1a;此刻你我都在努力 加油陌生人 br />个人主页&#xff1a;Gu Gu Study专栏&#xff1a;Java版数据结构 喜欢的一句话&#xff1a; 常常会回顾努力的自己&#xff0c;所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者&#xff1…

指针数组模拟二维数组

有任何不懂的问题可以评论区留言&#xff0c;能力范围内都会一一回答 指针数组&#xff0c;是数组&#xff0c;但是它的元素都是指针。 #define _CRT_SECURE_NO_WARNING #include <stdio.h> int main(void) {int a 3;int b 4;int c 5;int* arr[3] { &a,&b,…