Meta亲自下场教学Llama3.1 Agent/RAG!

这次Llama 3.1发布大家期待较多的是405B模型,但工具调用才是大模型落地的重头戏,Meta这次也开源了一个专门的框架:llama-agentic-system。

运行Llama 3.1作为能够执行“Agentic”任务的系统,例如:

  • 将任务分解并执行多步骤推理

  • 使用工具的能力

    • 内置:模型具有搜索或代码解释器等工具的内置知识
    • 零样本:模型可以学习使用以前未见过的上下文工具定义来调用工具

图片

同时在 Llama3.1 的文档里也详细的写了完整的提示语法和工具调用方法,分内置自定义调用两种方式:

图片

  • 内置

    • brave_search(联网搜索)
    • wolfram_alpha(数学工具)
    • code interpreter system(代码解释器)
  • 自定义工具调用,模型本身并不直接执行调用,而是通过结构化输出来让执行器完成调用,格式与 OpenAI 的类似

内置示例

使用以下prompt调用三个内置工具:

  • Brave Search:用于执行网络搜索的工具调用。
  • Wolfram Alpha:执行复杂数学计算的工具调用。
  • Code Interpreter:使模型能够输出python代码。
<|begin_of_text|><|start_header_id|>system<|end_header_id|>

Environment: ipython
Tools: brave_search, wolfram_alpha

Cutting Knowledge Date: December 2023
Today Date: 23 Jul 2024

You 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|>

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

<|begin_of_text|><|start_header_id|>system<|end_header_id|>

Environment: ipython
Tools: brave_search, wolfram_alpha

Cutting Knowledge Date: December 2023
Today Date: 23 Jul 2024

You 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 生成响应。
在这里插入图片描述

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

<|begin_of_text|><|start_header_id|>system<|end_header_id|>

Environment: ipython
Tools: brave_search, wolfram_alpha

Cutting Knowledge Date: December 2023
Today Date: 23 Jul 2024

You 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|>

自定义工具调用示例

Meta Llama 3.1模型现在可以从单个消息输出自定义工具调用,以便更轻松地调用工具。模型本身并不执行调用;它提供结构化输出以方便执行器调用。可以在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_alpha

Cutting 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_search    



You 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}
where

start_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 query

You 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 模型确定调用哪个工具

{"name": "get_current_conditions", "parameters": {"location": "San Francisco, CA", "unit": "Fahrenheit"}}<eot_id>

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

<|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>

N****vidia Agentic RAG(Llama-3.1)

对于Llama 3.1的强大工具调用功能能力,NVIDIA已与Meta 合作,以确保最新的 Llama 模型能够通过 NVIDIA NIM得到最佳部署。

多Agent框架(例如 LangGraph)使开发人员能够将 LLM 应用程序级逻辑分组为节点和边缘,以便更精细地控制代理决策。带有 NVIDIA LangChain OSS 连接器的LangGraph可用于嵌入、重新排序和使用LLM 实现必要的Agentic RAG技术。

为了实现这一点,应用程序开发人员必须在其RAG管道之上包含更精细的决策。

具有默认路由器的Agentic RAG工作流

图片

带有Web搜索工具的Agentic RAG工作流程

图片

带有问题重写的Agentic RAG工作流程

图片

如何学习大模型

现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。

作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。

我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。

在这里插入图片描述

二、AI大模型视频教程

在这里插入图片描述

三、AI大模型各大学习书籍

在这里插入图片描述

四、AI大模型各大场景实战案例

在这里插入图片描述

五、结束语

学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。

再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。

因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。

<think>好的,用户问的是如何将Llama3.1模型转换为Hugging Face格式的Llama3.1_hf。首先我需要回顾一下相关的知识,尤其是参考提供的引用内容。 根据引用[1],里面提到将HuggingFace格式的模型转换为GGUF格式使用了llama.cpp的convert_hf_to_gguf.py脚本。这说明转换工具可能需要逆向操作。但用户的问题是从原始Llama3.1转换为Hugging Face格式,所以可能需要官方提供的转换脚本或工具。 另外,引用[4]提到Hugging Face的下载和申请步骤,可能用户需要先获得Llama3.1的原始权重,这些通常是以PyTorch格式保存的。Hugging Face的模型通常使用transformers库,所以需要将原始权重转换成对应的结构。 可能需要检查Hugging Face的官方文档是否有关于Llama3.1的转换指南。通常,Meta会提供转换脚本,比如使用他们的代码库中的转换脚本,将原始模型转换为Hugging Face支持的格式。 例如,transformers库通常提供转换脚本,比如将原始权重转换为PyTorch的.bin文件,并创建配置文件如config.json。用户可能需要下载官方发布的权重,然后运行类似convert_llama_weights_to_hf.py的脚本,这样就能生成Hugging Face格式的模型。 此外,注意引用[3]中提到加载Llama3.1模型到Ollama,可能需要先有Hugging Face格式的模型才能进行后续操作。所以转换步骤可能包括下载原始权重,使用Meta提供的转换脚本,然后保存为Hugging Face结构。 总结步骤可能是:1. 获取原始Llama3.1模型文件;2. 使用官方转换脚本转换为Hugging Face格式;3. 验证转换后的模型是否可用。同时可能需要安装必要的库,如transformers和torch,并确保版本兼容性。 另外,用户可能需要申请访问Llama3.1的模型权重,因为Meta的模型通常需要权限,引用[4]提到注册Huggingface和申请使用,这可能涉及到获取访问令牌或同意使用条款。 最后,可能需要提醒用户注意文件路径和依赖版本,确保转换过程顺利。</think>根据Hugging Face和Meta的模型转换规范,将Llama3.1原始模型转换为Hugging Face格式需要以下步骤: ### 转换步骤 1. **获取原始模型权重** -Meta官方渠道下载Llama3.1原始模型文件(通常为`.pth`或`.pt`格式) - 需要完成Hugging Face账户认证和模型使用申请[^4] 2. **安装依赖库** ```bash pip install transformers torch>=2.0 accelerate ``` 3. **使用官方转换脚本** ```python # 示例转换命令(具体脚本路径需根据实际存放位置调整) python src/transformers/models/llama/convert_llama_weights_to_hf.py \ --input_dir ./llama3.1_original \ --model_size 8B \ --output_dir ./llama3.1_hf ``` 4. **验证转换结果** ```python from transformers import AutoTokenizer, AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("./llama3.1_hf") tokenizer = AutoTokenizer.from_pretrained("./llama3.1_hf") print(model.config) # 应显示Llama3.1的配置参数 ``` ### 关键注意事项 1. **文件结构规范** ``` llama3.1_hf/ ├── config.json ├── generation_config.json ├── model-00001-of-00002.safetensors ├── model-00002-of-00002.safetensors └── tokenizer.json ``` 2. **格式差异说明** - 原始格式:PyTorch二进制权重文件 - HF格式:分片的安全张量文件(safetensors)+ 标准化配置文件 - 转换过程会保留所有模型参数和分词器配置 3. **GPU内存要求** | 模型规模 | 最小显存 | |---------|---------| | 8B | 16GB | | 70B | 80GB | ### 常见问题排查 1. 出现`KeyError`时,检查transformers库是否为最新版本 2. 遇到内存不足错误,可添加`--max_shard_size 2GB`参数分片保存 3. 转换后的模型应通过`model.save_pretrained()`生成标准化文件结构[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值