大语言模型导论
"LLM 不仅仅是文本预测器;它们是世界知识的压缩表示,通过自然语言即可访问。"
大语言模型(LLM)代表了人工智能的范式转变,从特定任务模型转向通用推理引擎。对于软件工程师和 AI 从业者来说,理解 LLM 需要看透炒作,把握驱动它们的底层统计和架构原理。
什么是 LLM?
从本质上讲,LLM 是一个基于先前上下文预测下一个 token 的概率引擎。虽然数学公式涉及条件概率,但对工程师来说,理解 LLM 能做什么 比理解底层数学更有用。
现代 LLM 能力
LLM 已经从简单的文本补全演变为精密的推理引擎:
- 代码生成:跨多种语言编写、调试和解释代码
- 文档分析:从技术文档、研究论文和合同中提取洞察
- 对话系统:在多轮对话中保持上下文和记忆
- 工具使用:与 API、数据库和外部系统交互
- 多步推理:将复杂问题分解为中间步骤
工程视角
对于生产系统,可以将 LLM 视为 文本到文本的转换器:
// 概念视图:LLM 作为文本处理器
Input: "Summarize this document: [content]"
Processing: Model traverses layers of attention and feed-forward networks
Output: "[summary]"
关键洞察:LLM 从训练数据中学习模式并在推理时应用。它们并非人类意义上的"知道"事实——它们看到了能够复现的统计相关性。
Spring AI 集成配置
Spring AI 提供了在 Spring Boot 应用中使用 LLM 的统一抽象层。这简化了在模型和提供商之间切换,同时保持一致的 API。
基本 ChatClient 配置
// application.properties(使用 Doppler 管理环境变量)
spring.ai.openai.api-key=${OPENAI_API_KEY}
spring.ai.anthropic.api-key=${ANTHROPIC_API_KEY}
// 或使用推荐的 Doppler 注入模式:
// spring.ai.openai.api-key=${doppler.OPENAI_API_KEY}
// LLM 交互的服务层
@Service
public class LLMChatService {
private final ChatClient chatClient;
public LLMChatService(ChatModel chatModel) {
this.chatClient = ChatClient.builder(chatModel).build();
}
public String chat(String userMessage) {
return chatClient.prompt()
.user(userMessage)
.call()
.content();
}
// 实时应用的流式响应
public Flux<String> chatStream(String userMessage) {
return chatClient.prompt()
.user(userMessage)
.stream()
.content();
}
}
模型选择指南
选择合适的模型取决于你的使用场景、预算和性能需求:
| 使用场景 | 推荐模型 | 原因 |
|---|---|---|
| 代码生成与调试 | Claude 3.5/4 Sonnet | SWE-Bench 最高分(72.5%),擅长重构 |
| 通用对话 | GPT-4o 或 Llama 3.1 405B | 性能均衡,推理能力好 |
| 长文档分析 | Gemini 2.5 Pro | 1M-2M token 上下文窗口 |
| 成本敏感应用 | GPT-4o-mini 或 Llama 3.1 8B | 便宜 10-20 倍,简单任务足够 |
| 本地部署 | Llama 3.1 405B 或 Mixtral 8x22B | 开源,与闭源模型性能相当 |
| 多语言应用 | Qwen2.5 72B | 非英语表现强劲 |
| 复杂推理 | OpenAI o1 或 Claude 3.5 Sonnet | 显式推理链,数学/科学任务 |
配置示例
@Configuration
public class LLMConfiguration {
@Bean
public ChatModel chatModel(OpenAiApi openAiApi) {
return OpenAiChatModel.builder()
.openAiApi(openAiApi)
.options(OpenAiChatOptions.builder()
.model("gpt-4")
.temperature(0.7)
.maxTokens(2000)
// 理解这些参数:
// - temperature: 控制随机性(0.0 = 确定性,1.0 = 创造性)
// - maxTokens: 限制响应长度
// - topP: 核采样(0.9 = 保留 90% 概率质量)
// - presencePenalty: 减少重复
.build())
.build();
}
// 长上下文使用场景
@Bean
public ChatModel longContextModel() {
return OpenAiChatModel.builder()
.options(OpenAiChatOptions.builder()
.model("gpt-4-turbo") // 128K 上下文
.maxTokens(4000)
.build())
.build();
}
}
模型架构:"三大" + 现代演进
2017 年,"Attention Is All You Need" 论文引入了 Transformer。此后,架构分化为三个不同的家族和混合变体。面试中你 必须 知道它们之 间的区别。
1. 仅编码器(自编码)
- 机制:破坏输入(遮盖词语),使用双向上下文(同时查看左右上下文)尝试重建。
- 核心能力:"理解"和分类。这些模型创建丰富的文本向量表示。
- 使用场景:情感分析、命名实体识别(NER)、搜索/嵌入。
- 示例:BERT、RoBERTa、DistilBERT。
2. 仅解码器(自回归)
- 机制:仅基于先前 token 预测下一个 token(因果遮盖)。无法"看到"未来。
- 核心能力:生成任务。
- 使用场景:聊天机器人、代码生成、故事创作。
- 示例:GPT-3/4、Llama 3/4、Claude、Gemini。
- 注意:这是现代"生成式 AI"的主导架构,出现了 Mixture-of-Experts(MoE)变体。
3. 编码器-解码器(Seq2Seq)
- 机制:编码器将输入处 理为上下文向量,解码器生成输出。
- 核心能力:将一个序列转换为另一个序列。
- 使用场景:翻译(英语 → 法语)、摘要(长文 → 摘要)。
- 示例:T5、BART。
4. 混合架构(2024+)
最新前沿:将 Transformer 块与状态空间模型(SSM)如 Mamba 结合。
- 机制:交替使用 Transformer 注意力层和线性复杂度的 SSM 层。
- 优势:
- O(n) 复杂度 而非注意力的 O(n²)
- 更好的长上下文建模 不会内存爆炸
- 在基准测试中保持强劲性能
- 示例:
- Jamba(AI21 Labs):Transformer + Mamba 混合
- RecurrentGemma(Google):Griffin 架构,混合注意力和线性递归
- Qwen3-Next:使用 Gated DeltaNets 实现线性注意力
- Nemotron 3(NVIDIA):集成 Mamba-2 层
- 性能:研究表明这些混合模型通常优于纯 Transformer 或纯 SSM 模型。
前沿模型(2025)
截至 2025 年,LLM 领域已收敛为几个具有独特优势的关键参与者:
闭源模型
| 模型 | 参数量 | 上下文窗口 | 核心优势 | 最佳用途 |
|---|---|---|---|---|
| Claude 3.5/4 Sonnet | ~175B | 200K tokens | 编程(72.5% SWE-Bench)、复杂推理、长篇自主 | 软件开发、深度分析、扩展对话 |
| GPT-4o | ~200B(估计) | 128K tokens | 通用性能、多模态(文本/图像/音频)、创意写作 | 日常任务、营销内容、多模态应用 |
| Gemini 2.5 Pro | ~500B(估计) | 1M-2M tokens | 海量上下文、多模态、Google 生态集成 | 长文档分析、企业工作流、复杂推理 |
| OpenAI o1/o3 系列 | 未知 | 中等 | 显式推理链、高级数学/问题解决 | 科学推理、复杂数学、研究任务 |
开源模型
| 模型 | 参数量 | 上下文窗口 | 核心优势 | 最佳用途 |
|---|---|---|---|---|
| Llama 3.1 405B | 405B | 128K tokens | 与闭源模型性能相当(87.3% MMLU)、优秀数学/编程 | 服务端部署、高性价比替代 |
| Llama 4 | TBD (MoE) | 128K tokens | 与 GPT-4/Gemini 2.0 竞争,改进的推理 | 前沿模型的开源替代 |
| Mixtral 8x22B | 141B (MoE) | 32K-64K tokens | 混合专家效率、快速推理 | 高效部署、良好性价比 |
| Qwen2.5 | 72B | 32K tokens | 强编程/数学、多语言支持 | 亚洲语言、技术任务 |
2025 年关键洞察
-
混合专家(MoE)成为新标准:MoE 模型不再为每个 token 激活所有参数,而是将 token 路由到专门的"专家"子网络。这使得模型可以非常大(405B+ 参数),而每次前向传播只激活一小部分(如 8B)。
-
上下文窗口军备竞赛:
- 标准:32K-128K tokens
- 长上下文:200K-1M tokens(Claude、Gemini)
- 前沿:2M+ tokens(Gemini 2.0 Pro)
- 技术:Ring Attention、线性注意力和 Forgetting Transformers(FoX)
-
推理能力:OpenAI 的 o1 和 Anthropic 的 Claude 3.5 等模型展示了"思考"模式,表明正在从纯下一个 token 预测转向显式推理。
-
差距正在缩小:开源模型(Llama 3.1 405B)现在在许多基准测试上匹配或超越闭源模型,使开源在企业部署中变得可行。