2026/9/11 12:50:05

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

使用 Meta Llama 家族模型构建生成式 AI 应用:Llama 3.1 函数调用与 Llama 3.2 多模态实战指南(generative-ai-for-beginners 第 21 课) 使用 Meta Llama 家族模型构建生成式 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 课的技术详解围绕 MetaLlama Herd家族两大核心模型——Llama 3.1 与 Llama 3.2 展开。你将掌握两个模型的适用场景与差异Llama 3.1 的超长上下文与原生函数调用能力以及 Llama 3.2 的视觉多模态与边缘部署能力并通过两段可直接运行的 Python 示例学会在 Microsoft Foundry Models 上分别调用函数调用模型和视觉模型完成真实任务。课程英文原文位于 21-meta/README.md配套可交互执行的 Notebook 位于 21-meta/python/githubmodels-assignment.ipynb。课程定位Llama 家族模型在课程体系中的角色在 generative-ai-for-beginners 的 21 课体系中本课与第 19 课「构建 SLM 应用」、第 20 课「构建 Mistral 模型应用」同属按模型家族深入的系列课程见 README.md 中的课程总表定位为 Learn 型课程重点讲解 Meta 家族模型Llama Herd的功能特性与差异并通过代码示例演示每个模型的独特能力。课程目标有三探索 Meta 家族两大核心模型——Llama 3.1 与 Llama 3.2理解每个模型的典型使用场景use-case与适用条件通过代码示例展示每个模型的独特功能。Meta 家族模型总览与可用变体Meta 家族的模型也被称为 Llama HerdLlama 群。本课聚焦其中两个模型它们均可在Microsoft Foundry Models 目录中获取这些模型以不同变体形态提供服务。需要注意GitHub Models 将于2026 年 7 月底停用官方建议改用 Microsoft Foundry Models 进行 AI 模型原型开发在 Foundry 中也能找到 Llama 3但本课不涉及它。课程涉及的模型变体如下模型变体定位Llama 3.170B Instruct大参数开源 LLMLlama 3.1405B Instruct超大参数开源 LLM本课示例使用Llama 3.211B Vision Instruct中等规模视觉多模态模型Llama 3.290B Vision Instruct大规模视觉多模态模型本课示例使用从源码结构看本课 21-meta/python/githubmodels-assignment.ipynb 中的两个代码单元正是分别针对 405B 与 90B 两个最大变体编写体现出用最强变体演示最全能力的教学思路。Llama 3.1以 128k 上下文与原生函数调用扩展开源 LLM 边界Llama 3.1 拥有 4050 亿405B参数属于开源 LLM 阵营。作为上一代 Llama 3 的升级版它在三个关键指标上取得了显著提升更大的上下文窗口128k tokensLlama 3 为 8k tokens提升 16 倍更大的最大输出 tokens4096Llama 3 为 2048翻倍更好的多语言支持得益于训练 token 数量的增加。这些升级使 Llama 3.1 能够支撑更复杂的生成式 AI 应用场景主要包括三类原生函数调用Native Function Calling——在 LLM 工作流之外调用外部工具与函数更优的 RAG 性能——更大的上下文窗口意味着一次可容纳更多检索文档片段检索增强生成的回答质量与覆盖度随之提升合成数据生成Synthetic Data Generation——为微调fine-tuning等任务高效生成训练数据。其中原生函数调用是 Llama 3.1 最值得关注的能力下一节展开实战。实战一Llama 3.1 原生函数调用Llama 3.1 经过针对性微调fine-tuned在函数/工具调用上更加高效。它内置了两个模型可根据用户提示自行判断是否需要调用的工具Brave Search通过网页搜索获取最新信息如天气Wolfram Alpha执行复杂数学计算无需自行编写计算函数。除了内置工具你还可以自定义工具交给 LLM 调用。示例原理下面代码的完整运行流程是在系统提示system prompt中声明可用工具brave_search与wolfram_alpha发送一条询问某城市天气的用户提示LLM 返回一次指向 Brave Search 的工具调用输出形如|python_tag|brave_search.call(queryStockholm weather)。需要说明该示例只演示发出工具调用这一步。若想真正拿到搜索结果还需要在 Brave API 页面创建免费账号并自行实现该函数。环境准备运行前请安装两个依赖包Notebook 中通过%pip安装见 githubmodels-assignment.ipynbpip install azure-core pip install azure-ai-inference完整代码import os from azure.ai.inference import ChatCompletionsClient from azure.ai.inference.models import AssistantMessage, SystemMessage, UserMessage from azure.core.credentials import AzureKeyCredential # 从你的 Microsoft Foundry 项目「Overview」页面获取 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)关键点拆解客户端初始化ChatCompletionsClient来自azure-ai-inferenceSDK使用AzureKeyCredential携带令牌、以endpoint指向 Foundry 项目推理端点环境变量AZURE_INFERENCE_CREDENTIAL与AZURE_INFERENCE_ENDPOINT需预先设置。仓库中的共享工具模块 shared/python/env_utils.py 提供了get_required_env()与validate_env_vars()等函数可在项目启动时校验这些必需变量是否已配置避免运行时才发现凭据缺失工具声明方式与部分平台用结构化tools参数声明不同Llama 3.1 采用提示词驱动的方式把工具名单直接写入系统提示的Tools:行同时系统提示以|begin_of_text|、|start_header_id|、|eot_id|等 Llama 3 系列专用标记special tokens封装这是该模型指令格式chat format的一部分需原样保留模型返回response.choices[0].message.content即模型输出当触发工具调用时内容会是|python_tag|brave_search.call(queryStockholm weather)形式的工具调用指令而不是最终答案。Llama 3.2为开源模型补上视觉多模态能力Llama 3.1 虽强但有一个明显局限——不支持多模态它无法把图片等不同类型输入作为提示并给出响应。这正是 Llama 3.2 的核心卖点之一。Llama 3.2 的特性还包括多模态能力可同时评估文本与图片提示中小尺寸视觉变体11B 与 90B提供灵活的部署选择纯文本变体1B 与 3B可在边缘/移动设备上部署延迟低。其中多模态支持被视为开源模型世界的重大一步——此前视觉理解能力大多由闭源模型垄断Llama 3.2 将其带入了可自由获取的开源阵营。实战二Llama 3.2 90B 视觉多模态图像分析下面的示例同时输入一张图片与一段文本提示让 Llama 3.2 90B 对图片内容进行分析。代码中加载的图片正是仓库内附带的测试样例 21-meta/python/sample.jpg该图展示的是 Microsoft Foundry 的 Model Catalog 界面截图场景。完整代码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 # 从你的 Microsoft Foundry 项目「Overview」页面获取 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)关键点拆解多内容消息结构UserMessage.content不再是一个字符串而是一个由TextContentItem文本问题与ImageContentItem图片内容组成的列表这是 Azure AI Inference SDK 表示多模态消息的标准方式图片加载ImageUrl.load()从本地文件加载图片需显式指定image_formatjpgdetailImageDetailLevel.LOW表示以低细节等级发送图片可显著降低 token 消耗、加快响应——适合这张图里有什么这类粗粒度问答若需识别图中细节文字则适合提高细节等级模型名Llama-3.2-90B-Vision-Instruct是 90B 视觉指令模型与 Llama 3.1 示例形成文本函数调用模型 vs 视觉多模态模型的对照系统提示设定助手角色为详细描述图片的助手引导模型聚焦图像内容描述。运行后response.choices[0].message.content将输出模型对 sample.jpg 画面的文字描述。从 Notebook 到实战仓库配套资源本课除 21-meta/README.md 外还提供了一份完整可执行的 Jupyter Notebook21-meta/python/githubmodels-assignment.ipynb。Notebook 与课程文档保持同一叙事结构并在两段代码前分别加入了%pip install azure-core与%pip install azure-ai-inference的依赖安装单元方便你在本地 Jupyter 环境中按说明 → 安装 → 运行的顺序直接复现本课全部示例。关于运行前提请注意需要可用的 Microsoft Foundry 项目并从项目「Overview」页获取推理端点与凭据两个示例分别使用Meta-Llama-3.1-405B-Instruct与Llama-3.2-90B-Vision-Instruct需确认所在 Foundry 项目已开通对应模型视觉示例要求sample.jpg与 Notebook 位于同一目录仓库中两者同处于21-meta/python/下。总结与后续路径通过本课你掌握了 Meta 家族两个代表性模型的能力边界Llama 3.1 以 128k 上下文窗口、原生函数调用Brave Search / Wolfram Alpha 内置工具 自定义工具与合成数据生成能力服务于复杂文本推理、RAG 增强与工具编排类应用Llama 3.2 则以视觉多模态和 1B/3B 轻量文本变体覆盖图像理解与边缘设备部署场景。二者共同展示了开源模型在文本智能体与多模态感知两个方向上的最新进展。若想继续深化生成式 AI 知识可沿本课程的后续方向延伸函数调用的完整工程化实践可参考第 11 课「Integrating External Applications with Function Calling」RAG 与向量数据库的检索增强实现见第 15 课轻量模型SLM的构建实践见第 19 课。仓库根目录的 README.md 提供了全部 21 课的导航与课程设置指南。【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考