2_从 LLM 到 Agent:大模型应用开发实战指南
1. 大模型基础
1.1 LLM 核心概念
LLM(Large Language Model,大语言模型)是基于 Transformer 架构 的深度学习模型,参数规模通常达百亿至万亿级别。其核心能力源于自注意力机制(Self-Attention),能够捕捉文本中的长距离依赖关系。
LLM 的训练遵循「预训练 + 微调」范式:
| 阶段 | 目标 | 数据规模 | 代表技术 |
|---|---|---|---|
| 预训练 | 学习语言通用表示 | 万亿 Token | Next Token Prediction |
| 指令微调 | 对齐人类指令 | 百万级样本 | SFT(Supervised Fine-Tuning) |
| 对齐优化 | 提升安全性与有用性 | 人类反馈数据 | RLHF / DPO |
代表模型演进:GPT-3 → ChatGPT(GPT-3.5 + RLHF) → GPT-4 → GPT-4o(原生多模态)
1.2 多模态模型
LLM 专注于文本处理,多模态模型则能处理和整合文本、图像、音频、视频等多种数据类型。当前主流方案通过以下方式实现多模态融合:
- 编码器融合:使用 CLIP 等视觉编码器将图像映射到文本嵌入空间
- 原生多模态:如 GPT-4o,在预训练阶段即处理多模态数据
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#4F46E5', 'primaryTextColor': '#000', 'primaryBorderColor': '#3730A3', 'lineColor': '#6366F1', 'secondaryColor': '#10B981', 'tertiaryColor': '#F59E0B'}}}%%
flowchart LR
subgraph LLM["LLM(纯文本)"]
T1["文章生成"]
T2["问答对话"]
T3["代码编写"]
end
subgraph MM["多模态模型"]
M1["图像理解"]
M2["视频内容理解"]
M3["语音交互"]
end
LLM --> MM
classDef primary fill:#4F46E5,stroke:#3730A3,color:#fff
classDef success fill:#10B981,stroke:#059669,color:#fff
class T1,T2,T3 primary
class M1,M2,M3 success| 类型 | 模型 | 能力 |
|---|---|---|
| 纯文本 LLM | GPT-3.5、Claude 2、Llama 2 | 文本理解与生成 |
| 多模态 LLM | GPT-4o、Gemini 1.5、Claude 3.5 | 文本 + 图像 + 语音理解与生成 |
| 图像生成 | DALL-E 3、Midjourney、Flux | 文本生成图像 |
| 扩散模型 | Stable Diffusion、SDXL | 文本/图像引导的图像生成 |
1.3 模型功能分类
按在应用开发中的功能定位,大模型可分为以下类型:
| 类型 | 技术原理 | 应用场景 |
|---|---|---|
| 文本生成模型 | 自回归生成(Autoregressive) | 智能客服、内容创作、代码生成 |
| 嵌入模型(Embedding) | 将文本编码为稠密向量 | 语义搜索、RAG、聚类分析 |
| 重排序模型(Rerank) | Cross-Encoder 精排 | 搜索结果优化、推荐精排 |
| 图像生成模型 | 扩散模型 / Transformer | 设计辅助、内容创作 |
2. Prompt Engineering
Prompt Engineering(提示工程)是与大模型高效交互的核心技能。通过精心设计的提示词,可显著提升模型输出质量。
2.1 基础提示技巧
| 技巧 | 说明 | 示例 |
|---|---|---|
| 角色设定 | 为模型指定身份 | “ 你是一位资深 Python 工程师 “ |
| 任务明确 | 清晰描述期望输出 | “ 请用三段话总结这篇文章 “ |
| 格式约束 | 指定输出格式 | “ 以 JSON 格式返回结果 “ |
| 示例引导 | 提供输入输出样例 | One-shot/Few-shot Prompting |
2.2 高级提示策略
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#4F46E5', 'primaryTextColor': '#000', 'primaryBorderColor': '#3730A3', 'lineColor': '#6366F1', 'secondaryColor': '#10B981', 'tertiaryColor': '#F59E0B'}}}%%
flowchart TB
subgraph Basic["基础策略"]
B1["Zero-shot:直接提问"]
B2["Few-shot:提供示例"]
end
subgraph Advanced["高级策略"]
A1["CoT:逐步推理"]
A2["Self-Consistency:多路投票"]
A3["ReAct:推理+行动交替"]
end
Basic --> Advanced
classDef primary fill:#4F46E5,stroke:#3730A3,color:#fff
classDef success fill:#10B981,stroke:#059669,color:#fff
class B1,B2 primary
class A1,A2,A3 successReAct = Reasoning + Acting,交替进行推理和行动,是 Agent 架构的理论基础之一。
思维链(Chain of Thought) 是最常用的高级策略,通过引导模型展示推理过程提升复杂任务表现:
1 | # 普通提问 |
3. 大模型增强技术
3.1 技术路线对比
根据应用场景,可选择不同的模型增强路线:
| 技术路线 | 适用场景 | 优势 | 劣势 |
|---|---|---|---|
| Prompt Engineering | 快速原型、通用任务 | 低成本、即时验证 | 受限于模型能力 |
| RAG | 知识密集型任务 | 知识可更新、可溯源 | 检索质量依赖 |
| Fine-tuning | 领域专业化 | 领域适配、风格一致 | 成本高、周期长、有灾难性遗忘风险 |
| Agent | 复杂多步骤任务 | 自主规划、工具调用 | 可控性较弱、成本较高 |
3.2 Function Calling
Function Calling 通过模型判断意图、调用外部工具、整合结果的流程实现工具集成(调用次数取决于任务复杂度):
%%{init: {'theme': 'base', 'themeVariables': {'actorBkg': '#4F46E5', 'actorTextColor': '#000', 'actorBorder': '#3730A3', 'signalColor': '#6366F1', 'activationBkgColor': '#E0E7FF', 'activationBorderColor': '#4F46E5'}}}%%
sequenceDiagram
autonumber
participant U as "用户"
participant L as "LLM"
participant T as "外部工具"
U->>L: "发送问题"
activate L
L->>L: "解析意图,选择工具"
L->>T: "调用工具 API"
activate T
T-->>L: "返回执行结果"
deactivate T
L->>L: "整合结果生成回答"
L-->>U: "返回最终答案"
deactivate L3.3 检索增强生成(RAG)
RAG 通过外部知识库增强模型回答质量,解决以下问题:
- 幻觉问题:模型生成不准确信息
- 知识滞后:训练数据有时效限制
- 安全合规:需要引用可信来源
RAG 核心流程
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#4F46E5', 'primaryTextColor': '#000', 'primaryBorderColor': '#3730A3', 'lineColor': '#6366F1', 'secondaryColor': '#10B981', 'tertiaryColor': '#F59E0B'}}}%%
flowchart LR
A0["文档清洗"] --> A["知识库文档"]
A --> B["文档分块"]
B --> C["Embedding 向量化"]
C --> D[("向量数据库")]
E["用户 Prompt"] --> F["Query 向量化"]
F --> G["语义检索"]
D --> G
G --> H["相关文档 Top-K"]
H --> I["Rerank 重排序"]
I --> J["Prompt + 上下文"]
J --> K["LLM 生成"]
K --> L["最终回答"]
classDef primary fill:#4F46E5,stroke:#3730A3,color:#fff
classDef success fill:#10B981,stroke:#059669,color:#fff
classDef warning fill:#F59E0B,stroke:#D97706,color:#000
class A0,A,E primary
class B,C,F,G,J,K success
class D,H,I warning
class L primary关键环节详解
1. 文档分块(Chunking)
分块策略直接影响检索质量:
| 策略 | 说明 | 适用场景 |
|---|---|---|
| 固定长度 | 按字符/Token 数切分 | 通用场景,实现简单 |
| 语义分块 | 按段落、章节边界切分 | 结构化文档 |
| 递归分块 | 按层级逐步拆分 | 长文档处理 |
| 滑动窗口 | 允许块间重叠 | 保证上下文连贯 |
2. 向量数据库选型
| 数据库 | 特点 | 适用规模 |
|---|---|---|
| Chroma | 轻量级、易上手、Python 原生 | 原型开发、十万至百万级 |
| Milvus | 高性能、分布式、开源领先 | 千万至亿级 |
| Pinecone | 全托管、开箱即用、零运维 | 快速上线、百万级查询/秒 |
| Qdrant | Rust 实现、高效、支持过滤 | 生产环境、百万至千万级 |
3. 检索优化
- 混合检索:语义检索 + 关键词检索(BM25)结合,可使用 RRF(Reciprocal Rank Fusion)融合排序
- 重排序(Rerank):使用 Cross-Encoder 对候选结果精排
- 查询改写:扩展或重构用户问题以提高召回
4. AI Agent
4.1 Agent 概念
Agent(智能体)是能够自主感知环境、制定计划、执行行动的 AI 系统。常见架构范式包括 ReAct(推理 + 行动)、Plan-and-Execute(规划执行分离)等。与单轮问答不同,Agent 具备:
- 自主规划:分解复杂任务为子步骤
- 工具使用:调用外部 API 和服务
- 记忆能力:维护对话历史和状态
- 反思迭代:根据结果调整策略
4.2 Agent 架构
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#4F46E5', 'primaryTextColor': '#000', 'primaryBorderColor': '#3730A3', 'lineColor': '#6366F1', 'secondaryColor': '#10B981', 'tertiaryColor': '#F59E0B'}}}%%
flowchart TB
User["用户输入"] --> Agent
subgraph Agent["Agent 核心"]
LLM["LLM 大脑"]
Plan["任务规划"]
Memory["记忆系统"]
LLM <--> Plan
LLM <--> Memory
end
Agent <--> Tools
subgraph Tools["工具集"]
T1["搜索引擎"]
T2["代码执行"]
T3["数据库"]
T4["外部 API"]
end
Agent --> Output["执行结果"]
classDef primary fill:#4F46E5,stroke:#3730A3,color:#fff
classDef success fill:#10B981,stroke:#059669,color:#fff
classDef warning fill:#F59E0B,stroke:#D97706,color:#000
class User,Output primary
class LLM,Plan,Memory success
class T1,T2,T3,T4 warning4.3 主流 Agent 框架
| 框架 | 特点 | 适用场景 |
|---|---|---|
| LangChain | 生态丰富、文档完善 | 快速原型、RAG 应用 |
| LlamaIndex | 数据连接能力强 | 知识库构建 |
| AutoGPT | 目标驱动、自动迭代、提供完整平台 | 内容创作、DevOps 自动化、业务流程 |
| CrewAI | 多 Agent 协作 | 复杂工作流 |
5. Fine-tuning 简介
5.1 何时需要微调
| 场景 | 是否推荐 Fine-tuning |
|---|---|
| 通用问答 | ❌ 使用 Prompt 即可 |
| 特定格式输出 | ⚠️ 先尝试 Few-shot |
| 领域专业知识 | ✅ 推荐微调或 RAG |
| 风格语气定制 | ✅ 推荐微调 |
| 提升推理性能 | ⚠️ 效果有限,推理能力主要依赖模型规模和预训练 |
5.2 微调方式对比
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#4F46E5', 'primaryTextColor': '#000', 'primaryBorderColor': '#3730A3', 'lineColor': '#6366F1', 'secondaryColor': '#10B981', 'tertiaryColor': '#F59E0B'}}}%%
flowchart LR
subgraph Full["全量微调"]
F1["更新全部参数"]
F2["效果较优"]
F3["资源消耗大"]
end
subgraph PEFT["高效微调"]
P1["LoRA"]
P2["QLoRA"]
P3["Adapter"]
end
Full -.->|"资源受限时"| PEFT
classDef primary fill:#4F46E5,stroke:#3730A3,color:#fff
classDef success fill:#10B981,stroke:#059669,color:#fff
class F1,F2,F3 primary
class P1,P2,P3 successLoRA(Low-Rank Adaptation) 是目前最流行的高效微调方法,仅训练低秩分解矩阵。根据不同配置,显存占用通常可降低 50%-70%(结合 QLoRA 量化可进一步优化)。LoRA-FA 等变体可额外降低激活内存占用。
6. 技术选型决策树
根据实际需求选择合适的技术路线:
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#4F46E5', 'primaryTextColor': '#000', 'primaryBorderColor': '#3730A3', 'lineColor': '#6366F1', 'secondaryColor': '#10B981', 'tertiaryColor': '#F59E0B'}}}%%
flowchart TD
Start["需求分析"] --> Q1{"需要外部知识?"}
Q1 -->|"是"| Q2{"知识是否频繁更新?"}
Q1 -->|"否"| Q3{"需要定制化输出?"}
Q2 -->|"是"| RAG["RAG 方案"]
Q2 -->|"否"| Q4{"需要深度领域适配?"}
Q4 -->|"是"| FT["Fine-tuning + RAG"]
Q4 -->|"否"| RAG
Q3 -->|"是"| Q5{"简单格式调整?"}
Q3 -->|"否"| Prompt["Prompt Engineering"]
Q5 -->|"是"| Prompt
Q5 -->|"否"| FT2["Fine-tuning"]
RAG --> Q6{"任务复杂度高?"}
Prompt --> Q6
FT --> Q6
FT2 --> Q6
Q6 -->|"是"| Agent["Agent 架构"]
Q6 -->|"否"| Done["方案确定"]
Agent --> Done
classDef primary fill:#4F46E5,stroke:#3730A3,color:#fff
classDef success fill:#10B981,stroke:#059669,color:#fff
classDef warning fill:#F59E0B,stroke:#D97706,color:#000
classDef result fill:#EC4899,stroke:#BE185D,color:#fff
class Start,Q1,Q2,Q3,Q4,Q5,Q6 primary
class RAG,Prompt,FT,FT2,Agent success
class Done result7. 参考资料
- 动手学大模型开发
- Prompt Engineering Guide
- LangChain 官方文档
- AutoGPT 官方文档
- 《大模型应用开发极简入门》
- 《Building LLM Apps》