
简介一份面向AI大模型应用学习者的完整笔记包以HuggingLLM项目为主线系统整理了大模型应用开发中的关键知识点覆盖人工智能与自然语言处理实践场景。资源共30个文件压缩包大小36.19MB包含10个Python脚本用于代码示例与工具实现8个Markdown笔记文档记录学习过程与要点5个CSV数据文件供实验使用另有XML配置及项目配置文件用于环境搭建。内容按Chapter_1至Chapter_3分章节组织配合README与docs文档便于从零开始逐步深入理解大模型调用、数据处理与项目部署的整体流程。目前已有536人学习下载适合希望快速上手大模型应用、需要参考项目结构与学习路径的开发者。作者结合自身实战积累对大模型账号申请、环境配置及技术落地方案中的常见问题提供了经验性整理能有效帮助读者减少踩坑提升学习与开发效率。1. 为什么“AI大模型”学习笔记最该先写应用收藏夹里躺着几十篇“大模型学习路线”笔记本上抄满 Transformer 结构图和注意力公式合上电脑时却回答不出一个最简单的问题给我一台普通办公电脑今天之内能不能做出一个能对话的 AI 大模型应用多数人的学习笔记停在“原理收集”没有进入“应用闭环”。这篇笔记的写作顺序和一般资料反着来先把模型跑起来再研究怎么调用、怎么接入业务、怎么验收效果回头再去补原理时一切定义都记得更牢。适合想转大模型应用开发的工程师、做内部工具的后端同学以及准备大模型相关岗位面试的候选人。如果你已经在调 API 做业务读完这条路线零散经验能串成一张完整的图。2. 用最小闭环组织大模型学习路线从 Ollama 部署到第一次对话2.1 学习笔记的信息架构框架、接口、模型、场景动手写代码前先把笔记按四层结构归档这是后面不迷路的关键。第一层是推理与部署框架比如 Ollama、vLLM解决“模型装在哪”的问题。第二层是接口协议如今大部分推理框架都对外暴露 OpenAI 兼容的 HTTP 接口这一层决定业务代码怎么写。第三层是模型本身开源模型的规格、上下文长度、量化方式决定它能否装进你的显卡。第四层是应用场景包括提示词模板、上下文组织和工具调用。笔记分层关注问题常见对象推理框架层模型怎么跑起来、并发多少Ollama、vLLM、SGLang接口协议层应用用什么方式访问模型OpenAI 兼容 API、框架原生 SDK模型选型层效果、上下文、显存占用Qwen、Llama 系列及各量化版本场景应用层提示词、RAG、Agent模板、向量库、函数调用一页笔记如果同时写了 vLLM 显存优化和某个提示词的措辞调整说明你已经越过入门阶段。把笔记按这四层拆开后面查参数时不用在一大篇流水账里到处翻。我一般建议在第一层和第四层之间留一条主线每个技术点都回答“它让应用多做了哪件事”记下来的东西才能被下次实验复用。2.2 用 Ollama 在本地跑通大模型的最小命令本地部署大模型最省事的方式是用 Ollama。它把模型下载、量化、进程管理打包成一条命令对普通办公电脑和三年前的显卡都算友好。常见做法是先去官网安装对应系统版本然后执行ollama pull qwen2.5:7b # 拉取 7B 参数的 Qwen2.5 模型 ollama run qwen2.5:7b # 前台启动并进入交互对话如果显存只有 8GB 左右把模型换成 qwen2.5:3b对话速度明显更快。首次运行需要下载模型文件磁盘预留 6GB 以上空间下载完毕后 Ollama 会常驻本地服务默认监听 11434 端口。需要调整并发时可以这样启动服务OLLAMA_NUM_PARALLEL4 ollama serve # 以 4 并行度启动服务参数说明OLLAMA_NUM_PARALLEL 表示同时处理的请求数调大后并发能力提升同时显存占用上升8GB 显卡建议保持默认值 1 或 2。需要修改默认上下文长度时在运行时加参数ollama run --num-ctx 8192 qwen2.5:7b--num-ctx 控制模型一次能看到的 token 数量做长文档问答时把它开到 8192 效果更明显代价是推理时间变长。建议在笔记里单独记一行“当前显卡可用的 num-ctx 上限”换机器后直接参考不用重新试错。2.3 用 OpenAI 兼容接口把模型接进业务代码Ollama 对外暴露 OpenAI 兼容接口这意味着业务代码不需要依赖专属 SDK直接用常见的 OpenAI 工具库就能访问本地模型。用 Python 写一个最小客户端from openai import OpenAI client OpenAI( base_urlhttp://localhost:11434/v1, # 指向本地 Ollama 服务 api_keyollama, # 本地服务不校验占位即可 ) resp client.chat.completions.create( modelqwen2.5:7b, messages[ {role: system, content: 你是负责解释技术概念的助手。}, {role: user, content: 用一句话说明什么是 RAG}, ], temperature0.3, # 偏低让答案更可预期 max_tokens256, # 限制最大输出长度 ) print(resp.choices[0].message.content)逻辑说明这段代码先构造一个指向本地 11434 端口的客户端再以消息列表形式把系统设定和用户问题发给模型。temperature 控制回答随机性调低后多次运行的结果更接近调高则更有发散性。max_tokens 限制生成长度避免单次请求拖太久。接口返回结构是 choices[0].message.content把这个字段提取出来就完成一次对话。在笔记里记下“OpenAI 兼容接口就是协议层面兼容”这一句后面换任何推理框架都只在 base_url 上动刀。2.4 给笔记补上提示词课一套可复用的问答模板模型跑通后第一场真正的 AI 大模型应用实验是提示词设计。很多新手一上来就背各种“高级提示词”其实真正的问题是角色、上下文、约束没写清楚。下面是一套可直接套用的通用模板角色{role} 任务回答用户问题。只能依据【参考上下文】作答。 要求 1. 上下文没有答案时明确回答“资料中没有相关信息”。 2. 回答不超过 {max_length} 个字。 3. 使用简体中文分条输出。 【参考上下文】 {context} 【用户问题】 {question}参数说明role 让模型带上身份约束context 是检索到的资料片段RAG 场景会把这一段动态填进去max_length 控制回答篇幅用户问题放结尾因为模型对输入末尾的内容更敏感。改提示词时一次只改一个变量对比前后输出差异才不会把效果好坏归错原因。这套模板同样适用于 AI 编程辅助场景补全质量差的代码很多时候是上下文没给够而不是模型能力不够。学习路线走到这里就完成了“部署、调用、调参”的闭环此时再去看上海交大开源的《动手学大模型》每一步都能找到对应的可运行示例。3. 大模型应用开发核心模块接口封装、上下文与 AI Agent3.1 三种模型调用方式的取舍模型部署完成后应用层先要决定和模型怎么连接。开发中常见三种方式托管 API 不需要关心显卡和进程适合原型验证本地推理服务Ollama、vLLM让数据不出内网适合内部知识库和私有化交付自行部署推理集群可以指定调度策略适合高并发场景。LLM 应用开发团队经常在这三者之间纠结。调用方式优点适用场景托管 API无需关心显卡和进程原型验证、快速试错本地推理服务数据不离开内网内部知识库、私有化交付自建推理集群可指定调度策略高并发、多模型统一管理我一般建议团队从本地 Ollama 起步等到每秒请求数明显增加时再迁移到 vLLM因为业务代码始终走 OpenAI 兼容接口迁移时只需要改一处 base_url。接口抽象的价值就在这一步体现出来模型是你随时可以替换的组件应用代码不感知模型身份。对后端团队推荐直接用 Spring AI 这类框架它把对话、结构化输出、工具调用封装成一组跟业务更贴近的 API对 Ollama 也有内置支持不需要额外搭一层网关。3.2 用 Spring AI 接入 Ollama 并完成结构化输出先加配置到 application.ymlspring: ai: ollama: base-url: http://localhost:11434 chat: model: qwen2.5:7b options: temperature: 0.3逻辑说明这段配置把 Spring AI 的聊天模型指向本地 Ollama 服务指定模型名和默认采样参数。随后在业务代码里注入 ChatClientChatClient chatClient ChatClient.builder(chatModel).build(); String answer chatClient.prompt() .user(把下面这句话翻译成英文大模型应用开发) .call() .content(); System.out.println(answer);参数说明ChatClient 是 Spring AI 对模型调用的统一入口prompt() 用于拼装用户消息call() 执行同步调用content() 取出文本结果。对业务系统来说真正有价值的是结构化输出多数业务系统需要模型返回 JSON 而不是散文。在 Spring AI 里把返回结构定义成 Java 类提示词里描述清楚输出规则模型输出的内容由框架映射成强类型对象应用层拿到的不是一串还要自己解析的文本。笔记里建议单列一节模型输出不直接落库先做格式校验再进入业务逻辑。3.3 上下文管理固定窗口、滑动窗口与 RAG对话一长模型会忘记前面说过什么这是上下文长度限制导致的。处理方式有三种。固定窗口截断最简单只保留最近若干轮消息代码里对 messages 做切片超出长度就把最早的部分丢弃代价是模型会丢失早期信息适合客服机器人这类短期会话。滑动窗口做得更细一点每条消息记录 token 数累计超过阈值时从前往后删保证单次请求不会超出模型上下文上限。RAG 则更进一步把知识库按语义切块、向量化每次提问只检索最相关的几个片段拼进提示词模型看到的始终是与当前问题相关的资料。第三种方案实现量最大但对长文档问答的效果提升也最明显。做上下文管理时最容易犯的错是把所有历史记录原样发给模型。实际请求量会迅速涨满上下文窗口费用和延迟同时上升。笔记里可以记一条经验先回答“这个问题是否需要历史信息”再决定用哪种方案而不是一律把全文塞给模型。3.4 让模型拥有工具能力AI Agent 的函数调用机制AI Agent 的核心不是聊天而是让模型学会调用外部函数。模型本身不执行代码它负责输出一个结构化的调用意图由应用代码去执行并回传结果。{ type: function, function: { name: search_kb, description: 在知识库中搜索相关文档, parameters: { type: object, properties: { query: {type: string, description: 搜索关键词} }, required: [query] } } }这段 JSON 描述一个名为 search_kb 的工具模型看到后会在需要时返回 tool_calls 字段里面包含函数名和参数。应用代码接到这个字段后执行真实搜索再把搜索结果作为新消息回传给模型模型据此生成最终回答。整个循环是“接收用户问题 → 模型决定调哪个函数 → 执行函数 → 回传结果 → 模型总结回答”这就是 ReAct 思路在工程上的落地形式。对这个过程做一轮实操记录比读十篇 Agent 概念文章都管用。笔记里建议固定记录三件事工具描述写多详细、模型答非所问时返回什么错误、多轮工具调用最多允许多少次。这三条直接决定 Agent 应用能不能交付。4. 把笔记写厚大模型微调与评估的进阶路线4.1 什么时候值得微调准备大模型相关岗位面试的开发者都熟悉一个问题提示词解决不了的问题是该上 RAG 还是微调真实答案常是“先都不要”。大部分业务问题先用提示词模板加示例解决再靠 RAG 补充私有知识只有少数场景才需要微调。典型场景处理优先级回答需要引用未公开资料RAG 优先模型始终不按指定格式输出提示词加约束不行再微调需要模型学会特定说话风格或术语体系微调模型数学或逻辑能力不达标换更大模型优先需要降低单次调用成本先量化再考虑蒸馏微调适合让模型学会一种行为模式不适合往模型里塞事实知识。把知识库文档拿去微调是最常见的误用效果差还难以更新。笔记里直接写结论知识用 RAG 管理行为用微调校正。4.2 QLoRA 微调的最小步骤与关键参数在有限显卡上做微调最常用的是 QLoRA量化基座模型 低秩适配器只需要更新一小部分参数。用 7B 模型做指令微调单卡 24GB 显存基本够用。核心代码from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments from peft import LoraConfig, get_peft_model from trl import SFTTrainer model_name ./qwen2.5-7b-instruct # 本地已下载的模型目录 tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModelForCausalLM.from_pretrained( model_name, torch_dtypeauto, device_mapauto, ) lora_config LoraConfig( r16, # 低秩矩阵的秩越大可学习参数越多 lora_alpha32, # 缩放系数一般取 r 的两倍 lora_dropout0.05, # 防止过拟合的随机丢弃比例 target_modules[q_proj, k_proj, v_proj, o_proj], ) model get_peft_model(model, lora_config) training_args TrainingArguments( output_dir./qwen-lora, per_device_train_batch_size1, gradient_accumulation_steps8, # 等效 batch size 1×8 learning_rate2e-4, num_train_epochs3, logging_steps10, save_strategyepoch, bf16True, # Ampere 及以上架构显卡可开 ) trainer SFTTrainer( modelmodel, argstraining_args, train_datasetdataset, tokenizertokenizer, ) trainer.train()逻辑说明先把模型权重以量化方式加载进来对注意力层的四个线性投影挂上 LoRA 适配器完成“只训练一小部分参数”的准备。训练数据通过 SFTTrainer 的 train_dataset 参数传入常见格式是 JSON 数组每条包含 instruction、input、output 三个字段。参数调整经验r 从 8 到 32 之间尝试多数任务 16 够用过大容易过拟合lora_alpha 保持 r 的两倍左右学习率 1e-4 到 3e-4 是常见区间gradient_accumulation_steps 的作用是攒够梯度再更新一次参数显存不够时把 batch size 降到 1再用它补回有效批大小。训练日志里重点看 loss连续两三个 epoch 不再下降就早停不必机械跑满轮数。笔记里写清“训练出的是行为不是知识”微调后的模型仍需配合 RAG 使用两个手段是叠加关系不是替代关系。4.3 用对抗样例和格式用例做模型评估大模型投毒测试在日常开发里更多指这一行为在验证阶段人为构造输入检查模型是否会被带偏、是否编造答案、是否守不住输出格式。它不需要把测试数据注入训练集而是在模型上线前用一批刻意设计的样例做回归常见做法是把这组样例固化成测试集。import json import pytest def ask(question, context): # 调用本地或线上的模型返回文本 ... def test_json_format(): reply ask(把“苹果”翻译成英文只输出 JSON 对象字段为 en) payload json.loads(reply) # 解析失败会直接抛异常 assert payload[en] apple def test_hallucination_when_context_missing(): context 材料中只包含产品安装说明。 reply ask(这款产品的保修期是多久, context) assert (没有 in reply) or (未提及 in reply)逻辑说明第一个用例约束输出必须是合法 JSON防止模型在关键链路上返回不可解析的文本。第二个用例检查模型是否诚实上下文没有答案时应当承认不知道而不是编造保修期。这类用例跑在 CI 里每次换模型、改提示词、调参数都重跑一遍靠它兜底才能放心升级。构造测试样例时优先覆盖三类格式类、事实类、边界类。格式类测输出是否可解析事实类对比资料判断回答是否忠实边界类测空上下文、超长输入和完全无关的问题。把失败样例的原始输出记进笔记慢慢积累出最贴近业务场景的评估集。5. 把大模型学习笔记变成实验台回归测试与实验卡片5.1 用 pytest 给提示词和工具调用做回归AI 应用开发里最隐蔽的问题不是代码报错而是模型悄悄变了行为。前两周好用的提示词这周忽然频繁返回空结果换一个模型版本后原本约定的 JSON 格式失效。应对办法是把关键场景固化成 pytest 用例这也是一种把 AI 测试前置的做法断言的是行为而不是实现。def test_tool_description_trigger(): reply ask(查一下退货政策, context知识库片段) assert search_kb in json.dumps(reply) # 模型应当触发工具调用逻辑说明这个用例锁定“工具描述是否被模型识别”这条关键行为。AI 测试用例不需要覆盖全部输出文本只锁定不可协商的行为点格式、字段、触发条件。5.2 一张实验卡片模板让笔记可复现模型调用结果受众多变量影响笔记里只写“效果好”没有任何价值。每次实验至少记录一张卡片字段示例值模型名与版本qwen2.5:7b推理参数temperature0.3, num_ctx8192提示词版本retail-qa/v3输入样例用户问题 参考上下文期望行为输出 JSON 且包含 refund_days 字段实测结果通过/失败失败时贴原始输出改动原因上一版未覆盖 7 天退货场景这张卡片解决的是“复现难”问题相同输入、相同参数、相同提示词版本之下结果不同才是模型问题否则先检查环境。5.3 实验结束后先跑一条命令实验收尾时用一条命令快速核对环境ollama ps # 查看当前加载的模型与显存占用ollama ps 会打印当前加载进显存的模型、上下文长度和已用显存换模型或调并发后先跑一遍再用 pytest 跑实验能省掉不少排障时间。把示例命令、测试文件和实验卡片模板都放进笔记仓库下一次实验直接复制起点编号顺延这条学习路线就变成了可积累的资产。本文还有配套的精品资源点击获取