2_从 LLM 到 Agent:大模型应用开发实战指南

1. 大模型基础

1.1 LLM 核心概念

LLM(Large Language Model,大语言模型)是基于 Transformer 架构 的深度学习模型,参数规模通常达百亿至万亿级别。其核心能力源于自注意力机制(Self-Attention),能够捕捉文本中的长距离依赖关系。

LLM 的训练遵循「预训练 + 微调」范式:

阶段目标数据规模代表技术
预训练学习语言通用表示万亿 TokenNext 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
类型模型能力
纯文本 LLMGPT-3.5、Claude 2、Llama 2文本理解与生成
多模态 LLMGPT-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 success

ReAct = Reasoning + Acting,交替进行推理和行动,是 Agent 架构的理论基础之一。

思维链(Chain of Thought) 是最常用的高级策略,通过引导模型展示推理过程提升复杂任务表现:

1
2
3
4
5
6
7
8
9
10
11
# 普通提问
Q: 小明有5个苹果,给了小红2个,又买了3个,现在有几个?
A: 6个

# CoT 提问
Q: 小明有5个苹果,给了小红2个,又买了3个,现在有几个?请一步步思考。
A: 让我逐步分析:
1. 初始:5个苹果
2. 给出:5 - 2 = 3个
3. 买入:3 + 3 = 6个
答案:6个

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 L

3.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全托管、开箱即用、零运维快速上线、百万级查询/秒
QdrantRust 实现、高效、支持过滤生产环境、百万至千万级

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 warning

4.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 success

LoRA(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 result

7. 参考资料