ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

使用 Meta 家族模型构建生成式 AI 应用:Llama 3.1 函数调用与 Llama 3.2 多模态实战(generative-ai-for-beginners 第 21 课)

使用 Meta 家族模型构建生成式 AI 应用:Llama 3.1 函数调用与 Llama 3.2 多模态实战(generative-ai-for-beginners 第 21 课) 使用 Meta 家族模型构建生成式 AI 应用Llama 3.1 函数调用与 Llama 3.2 多模态实战generative-ai-for-beginners 第 21 课【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners本课是 generative-ai-for-beginners 课程的第 21 讲对应 21-meta/README.md聚焦 Meta 家族的 Llama Herd 两大主力模型Llama 3.1与Llama 3.2。你将系统掌握两者在上下文窗口、输出长度、多语言能力、原生函数调用Function Calling与多模态理解Vision上的核心差异并通过azure-ai-inference编写可运行的 Python 代码在 Microsoft Foundry Models原 GitHub Models服务上完成工具调用与图文联合推理的真实实验。Meta 家族模型一览Llama 3.1 与 Llama 3.2Meta 家族Llama Herd在本课中重点介绍两个系列均以多种参数规模变体提供可通过统一端点与 API Key 在模型市场中调用本仓库在 00-course-setup/03-providers.md 中给出了 Microsoft Foundry Models、GitHub Models 等提供商的接入说明。课程覆盖的模型变体如下模型系列变体定位Llama 3.170B Instruct大规模开源 LLM通用指令跟随Llama 3.1405B Instruct旗舰级开源 LLM复杂任务与工具调用Llama 3.211B Vision Instruct中小规模多模态模型灵活部署Llama 3.290B Vision Instruct大规模多模态模型图文联合推理注意Llama 3 同样在模型市场中可用但不在本课讨论范围之内本课仅深入 Llama 3.1 与 3.2。配套的动手实验位于 21-meta/python/githubmodels-assignment.ipynb它是一个可直接运行的 Jupyter Notebook完整复刻了本课两个核心代码示例函数调用与多模态分析并内置了依赖安装单元。下文将以该 Notebook 与课程文档为主线展开。环境准备依赖安装与凭据配置在运行任何示例前需要安装两个 Azure 推理 SDK 依赖Notebook 中通过%pip安装等价于命令行pip install azure-core azure-ai-inference%pip install azure-core %pip install azure-ai-inference其中azure-ai-inference提供ChatCompletionsClient与各类消息模型azure-core提供AzureKeyCredential凭据类。凭据方面本仓库约定的配置方式详见 00-course-setup/03-providers.md是从 Microsoft Foundry 项目的Overview 页面获取端点与密钥并写入.env文件由根目录.env.copy复制而来对应变量为AZURE_INFERENCE_ENDPOINTadd your Microsoft Foundry project endpoint here AZURE_INFERENCE_CREDENTIALadd your Microsoft Foundry Models API key here课程代码通过os.environ[...]读取这两个环境变量并统一指向推理服务端点token os.environ[AZURE_INFERENCE_CREDENTIAL] endpoint os.environ[AZURE_INFERENCE_ENDPOINT] client ChatCompletionsClient( endpointendpoint, credentialAzureKeyCredential(token), )如果使用 GitHub Models服务将于 2026 年 7 月底退役官方建议迁移至 Microsoft Foundry Models则对应写法为读取GITHUB_TOKEN并使用固定端点https://models.inference.ai.azure.com。课程的两个示例均以ChatCompletionsClient为统一入口仅需切换model_name即可在 Llama 3.1 与 3.2 之间切换。Llama 3.1405B 参数的开源 LLM 旗舰Llama 3.1 以 405B 参数跻身开源 LLM 阵营是上一代 Llama 3 的升级版本核心改进体现在三方面更大的上下文窗口从 8k tokens 提升至128k tokens更大的最大输出 tokens从 2048 提升至4096更好的多语言支持源于训练 tokens 数量的大幅增加。这些升级使 Llama 3.1 能够承载更复杂的生成式 AI 应用场景课程重点列举了三类原生函数调用Native Function Calling调用 LLM 工作流之外的外部工具与函数的能力更优的 RAG 性能更高的上下文窗口使检索增强生成RAG可容纳更多检索结果与知识片段RAG 的原理与实操可参见 15-rag-and-vector-databases/README.md合成数据生成Synthetic Data Generation为微调Fine-tuning见 18-fine-tuning/README.md等任务高效构造训练数据。原生函数调用内置工具与自定义工具Llama 3.1 经过专门微调在函数/工具调用上更为高效。基于用户提示模型可以自行判断需要使用哪些内置工具Brave Search通过 Web 搜索获取实时信息例如查询天气Wolfram Alpha执行复杂数学计算无需自行编写函数。此外你还可以定义自定义工具交由 LLM 调用——这一点与本课程第 11 讲 11-integrating-with-function-calling/README.md 的函数调用主题一脉相承区别在于 Llama 3.1 将其作为原生能力内置于模型。工具调用示例让模型决定何时调用 Brave Search以下代码演示了完整的调用链路在系统提示System Prompt中声明可用工具brave_search与wolfram_alpha发送一条询问某城市天气的用户提示模型将返回一条指向 Brave Search 的工具调用形如|python_tag|brave_search.call(queryStockholm weather)。import os from azure.ai.inference import ChatCompletionsClient from azure.ai.inference.models import AssistantMessage, SystemMessage, UserMessage from azure.core.credentials import AzureKeyCredential # Get these from your Microsoft Foundry projects Overview page token os.environ[AZURE_INFERENCE_CREDENTIAL] endpoint os.environ[AZURE_INFERENCE_ENDPOINT] model_name Meta-Llama-3.1-405B-Instruct client ChatCompletionsClient( endpointendpoint, credentialAzureKeyCredential(token), ) tool_promptf |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 July 2024 You are a helpful assistant|eot_id| messages [ SystemMessage(contenttool_prompt), UserMessage(contentWhat is the weather in Stockholm?), ] response client.complete(messagesmessages, modelmodel_name) print(response.choices[0].message.content)需要特别说明的是这个示例只完成了工具调用这一环节模型输出的|python_tag|brave_search.call(queryStockholm weather)是发起调用的指令文本若要真正取得查询结果你还需要在 Brave API 页面注册免费账号并取得 API Key自行实现brave_search函数本身发起 HTTP 请求并解析返回。也就是说Llama 3.1 负责判断何时调用、调用哪个工具、传什么参数而工具的实际执行仍由你的应用代码完成。值得一提的是仓库中的 shared/python/api_utils.py 提供了带超时、重试与错误处理的make_safe_request封装可作为实现这类外部工具函数时的参考基础。此外系统提示中的Environment: ipython与 Llama 特定的|begin_of_text|、|start_header_id|system|end_header_id|、|eot_id|标记是 Llama 3.x 系列所使用的 Chat Template 语法声明了运行环境、可用工具、知识截止日期与当前日期模型据此生成规范的工具调用文本。Llama 3.2把多模态带入开源模型尽管身为 LLMLlama 3.1 的一个明显局限是缺乏多模态能力——它无法把图片等非文本输入当作提示并给出响应。这正是 Llama 3.2 的核心卖点之一其特性还包括多模态Multimodality能够同时理解文本与图像提示中小规模变体11B 与 90B提供灵活的部署选项纯文本变体1B 与 3B支持在边缘/移动设备上以低延迟部署。多模态支持被视为开源模型领域的一大步。课程使用 Llama 3.2 90B Vision Instruct 模型同时输入图片与文本提示让模型对图片进行描述分析。示例所用的输入图片正是仓库中的 21-meta/python/sample.jpg多模态推理示例图文联合输入import os from azure.ai.inference import ChatCompletionsClient from azure.ai.inference.models import ( SystemMessage, UserMessage, TextContentItem, ImageContentItem, ImageUrl, ImageDetailLevel, ) from azure.core.credentials import AzureKeyCredential # Get these from your Microsoft Foundry projects Overview page token os.environ[AZURE_INFERENCE_CREDENTIAL] endpoint os.environ[AZURE_INFERENCE_ENDPOINT] model_name Llama-3.2-90B-Vision-Instruct client ChatCompletionsClient( endpointendpoint, credentialAzureKeyCredential(token), ) response client.complete( messages[ SystemMessage( contentYou are a helpful assistant that describes images in details. ), UserMessage( content[ TextContentItem(textWhats in this image?), ImageContentItem( image_urlImageUrl.load( image_filesample.jpg, image_formatjpg, detailImageDetailLevel.LOW) ), ], ), ], modelmodel_name, ) print(response.choices[0].message.content)与 Llama 3.1 的纯文本示例相比多模态示例的关键差异在于UserMessage.content从字符串变为内容项列表content itemsTextContentItem(textWhats in this image?)承载文本问题ImageContentItem(image_urlImageUrl.load(...))承载图片输入其中image_file指定本地图片路径image_format声明图片格式此处为jpgdetail通过ImageDetailLevel.LOW控制送入模型的图像细节等级LOW档可显著降低视觉 tokens 消耗适合图片里有什么这类全局性描述任务。ImageUrl.load负责从本地文件加载并编码图片ImageDetailLevel则用于权衡推理成本与细节精度——若任务需要识别图片中的细小文字或物体可升级为更高细节等级。两个模型如何选择场景对照综合本课内容两个模型的核心差异可以归纳为下表便于按应用场景选型维度Llama 3.1 (405B Instruct)Llama 3.2 (90B Vision Instruct)输入形态纯文本文本 图像上下文窗口128k tokens由部署配置决定多模态需预留视觉 tokens标志性能力原生函数调用、RAG、合成数据生成图文多模态推理、边缘部署变体典型场景工具编排、Agent、长文档 RAG图像理解、视觉问答、图文混合任务在课程体系中本课是按厂商家族深入模型能力序列Mistral、Meta的一部分第 11 讲 11-integrating-with-function-calling/README.md 讲授函数调用的一般范式本课则将之落地到 Llama 3.1 的原生工具调用上第 15 讲 15-rag-and-vector-databases/README.md 的 RAG 实践可借助 128k 上下文窗口获得更好的检索效果第 18 讲 18-fine-tuning/README.md 的微调数据则可由 Llama 3.1 的合成数据生成能力辅助构造。常见问题与注意事项工具调用 ≠ 工具执行模型只输出|python_tag|...形式的调用指令真正执行外部函数如调用 Brave API需要你注册相应服务并自行实现函数示例中仅演示调用决策环节。凭据安全API Key 应通过环境变量注入如.env文件或 Codespaces Secrets切勿硬编码进代码或提交到仓库具体流程见 00-course-setup/03-providers.md。服务迁移课程文档标注 GitHub Models 服务将于 2026 年 7 月底退役新实验建议直接使用 Microsoft Foundry Models 的AZURE_INFERENCE_CREDENTIAL/AZURE_INFERENCE_ENDPOINT变量组合Notebook 已按此更新。图片细节等级多模态请求中的detail参数直接影响视觉 tokens 消耗与细节还原度简单描述任务使用LOW更经济。模型名区分不同提供商的模型命名大小写可能不一致如Meta-Llama-3.1-405B-Instruct与meta-llama-3.1-405b-instruct请以模型市场目录中的实际名称为准。【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进