文章摘要 FakeGPT
加载中...|
概述
大语言模型(Large Language Model,简称 LLM)是近年来 AI 领域最重要的技术突破之一。它能够理解和生成人类语言,展现出惊人的推理、创作和问题解决能力。本文将从零开始介绍 LLM 的核心概念、发展历程和基本用法,帮助你建立对大语言模型的理解。
什么是大语言模型(LLM)
定义
大语言模型是基于深度学习的 AI 系统,通过在海量文本数据上进行训练,学习语言的统计规律和语义关系,从而能够:
- 理解和生成自然语言
- 回答问题和解释概念
- 进行逻辑推理和归纳
- 创作文本内容(文章、代码、诗歌等)
- 进行翻译和摘要
"大"的含义
| 维度 | 说明 | 示例 |
|---|---|---|
| 参数规模 | 模型参数数量 | GPT-4 约万亿级,Llama 2-70B 为 700 亿 |
| 训练数据 | 用于训练的文本数据量 | Common Crawl 包含数万亿单词 |
| 算力投入 | 训练所需的计算资源 | GPT-4 训练耗资估计超 1 亿美元 |
| 上下文窗口 | 可处理的文本长度 | Claude 3 支持最大 200K tokens |
LLM 的能力边界
✅ LLM 擅长的任务:
text
┌─────────────────────────────────────────────────────────┐
│ 文本生成 │ 代码编写 │ 数据分析 │ 推理问答 │
│ 翻译摘要 │ 内容创作 │ 知识问答 │ 对话交互 │
└─────────────────────────────────────────────────────────┘❌ LLM 的局限性:
- 可能产生"幻觉"(编造事实)
- 数学计算不够精确
- 缺乏真实世界的最新信息
- 无法访问外部数据(除非使用工具)
- 推理深度受上下文限制
LLM 的发展历程
早期阶段(2017 年之前)
text
2013 Word2Vec 词向量表示
2015 Seq2Seq 序列到序列模型
2017 Transformer 注意力机制诞生关键突破: Google 发布《Attention Is All You Need》论文,提出 Transformer 架构。
GPT 系列演进
text
┌────────────────────────────────────────────────────────────┐
│ GPT 系列演进 │
├────────────────────────────────────────────────────────────┤
│ │
│ 2018 GPT-1 │ 1.17亿参数 │ 初步验证了预训练思路 │
│ ↓ │ │ │
│ 2019 GPT-2 │ 15亿参数 │ "太危险不能发布" │
│ ↓ │ │ │
│ 2020 GPT-3 │ 1750亿参数 │ 少样本学习能力 │
│ ↓ │ │ │
│ 2023 GPT-3.5 │ 未知 │ ChatGPT 横空出世 │
│ ↓ │ │ │
│ 2023 GPT-4 │ ~1.7万亿 │ 多模态能力 │
│ ↓ │ │ │
│ 2024 GPT-4o │ 优化版本 │ 原生多模态+更快速度 │
│ │
└────────────────────────────────────────────────────────────┘其他重要模型
text
开源模型:
2023 Llama 2 Meta 开源,70B 参数成为标杆
2024 Llama 3 400B 参数,接近 GPT-4 水平
2024 Mistral 欧洲最强开源模型
2024 Qwen 2.5 阿里通义千问,中文能力突出
2024 DeepSeek-V3 国产模型,性能卓越
闭源模型:
2023 Claude 2 Anthropic,长上下文优势
2024 Claude 3.5 当前最强的通用模型之一
2024 Gemini 1.5 Pro Google,百万级上下文Transformer 架构原理
核心概念:自注意力机制
Transformer 的核心是自注意力机制(Self-Attention),它允许模型在处理每个词时关注输入序列中的其他所有词。
text
输入:"小猫 坐在 沙发 上"
注意力机制处理过程:
┌─────────────────────────────────────────────────────┐
│ 小猫 → 关注 [小猫, 坐在, 沙发, 上] 的关联程度 │
│ 坐在 → 关注 [小猫, 坐在, 沙发, 上] 的关联程度 │
│ 沙发 → 关注 [小猫, 坐在, 沙发, 上] 的关联程度 │
│ 上 → 关注 [小猫, 坐在, 沙发, 上] 的关联程度 │
└─────────────────────────────────────────────────────┘Transformer 结构
text
Transformer 架构
┌────────────────────────────────────────────────────────┐
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ Encoder │ → │ Decoder │ │
│ │ (编码器) │ │ (解码器) │ │
│ └──────────────┘ └──────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ 自注意力 │ │ 自注意力 │ │
│ │ 前馈网络 │ │ 交叉注意力 │ │
│ │ 残差连接 │ │ 前馈网络 │ │
│ │ 层归一化 │ │ 残差连接 │ │
│ └──────────────┘ │ 层归一化 │ │
│ └──────────────┘ │
└────────────────────────────────────────────────────────┘关键组件
| 组件 | 作用 |
|---|---|
| Tokenization | 将文本切分为 tokens(词/字符) |
| Embedding | 将 tokens 转换为向量表示 |
| Attention | 计算 token 之间的关联权重 |
| Feed-Forward | 处理和转换信息 |
| Layer Norm | 稳定训练过程 |
| Residual | 保留原始信息,防止梯度消失 |
预训练与微调
预训练(Pre-training)
预训练是 LLM 的"学习"阶段:
text
预训练流程:
┌─────────────────────────────────────────────────────────┐
│ │
│ 1. 收集海量文本数据 │
│ └── 网页、书籍、代码、论文等 │
│ │
│ 2. 设计训练目标 │
│ └── 下一个 token 预测(因果语言建模) │
│ │
│ 3. 在大量算力上训练 │
│ └── 数千张 GPU,训练数周到数月 │
│ │
│ 4. 得到基础模型 │
│ └── 学会了语言的通用规律和知识 │
│ │
└─────────────────────────────────────────────────────────┘训练目标示例:
text
输入: "The capital of France is"
预测: "Paris"
输入: "To be or not to"
预测: "be"微调(Fine-tuning)
微调是让模型适应特定任务的过程:
text
基础模型 (Base Model)
│
▼
┌─────────────────────────────────────────────────────────┐
│ 微调阶段 │
│ │
│ 指令微调 (Instruction Tuning) │
│ ├── Q: "什么是量子力学?" │
│ └── A: "量子力学是..." │
│ │
│ 人类反馈强化学习 (RLHF) │
│ ├── 收集人类对模型回答的排名 │
│ └── 训练奖励模型,优化输出 │
│ │
└─────────────────────────────────────────────────────────┘
│
▼
对话模型 (Chat Model)微调方法对比
| 方法 | 说明 | 适用场景 |
|---|---|---|
| Full Fine-tuning | 更新所有参数 | 定制化强,资源充足 |
| LoRA | 低秩适配,只训练少量参数 | 快速适配,资源受限 |
| QLoRA | 量化版 LoRA | 更低显存占用 |
| Prompt Tuning | 只训练 prompt 嵌入 | 极少参数,效果有限 |
Prompt Engineering 基础
什么是 Prompt
Prompt 是你给 LLM 的输入文本,好的 Prompt 能显著提升输出质量。
Prompt 的核心要素
text
┌─────────────────────────────────────────────────────────┐
│ 优秀 Prompt 结构 │
├─────────────────────────────────────────────────────────┤
│ │
│ 1. 角色/上下文 │
│ "你是一位资深软件工程师..." │
│ │
│ 2. 任务描述 │
│ "请帮我编写一个 Python 函数..." │
│ │
│ 3. 输入信息 │
│ "函数名:calculate_sum,参数:两个数字" │
│ │
│ 4. 输出格式 │
│ "请返回代码块和简要说明" │
│ │
│ 5. 示例(可选) │
│ "示例:输入 2 和 3,输出 5" │
│ │
└─────────────────────────────────────────────────────────┘Prompt 编写技巧
技巧 1:清晰具体
bash
# ❌ 模糊的 prompt
写一段代码
# ✅ 清晰的 prompt
请用 Python 编写一个函数,接收一个整数列表,返回所有偶数的和。
要求包含类型注解和文档字符串。技巧 2:提供上下文
bash
# ❌ 缺少上下文
这个错误怎么解决?
# ✅ 提供上下文
我在使用 React 的 useState 时遇到报错:
"Too many re-renders. React limits the number of renders..."
我的代码如下:
[粘贴代码]
请问是什么原因以及如何解决?技巧 3:指定输出格式
bash
# ✅ 明确格式要求
请分析以下数据,并以 JSON 格式返回:
{
"summary": "数据摘要",
"key_points": ["要点1", "要点2"],
"recommendation": "建议"
}技巧 4:使用示例(Few-shot)
bash
# 通过示例教会模型期望的格式
输入: 北京 → 输出: 中国/北京
输入: 东京 → 输出: 日本/东京
输入: 巴黎 → 输出: 法国/巴黎
输入: 伦敦 → 输出: ?
# 模型会输出: 英国/伦敦技巧 5:思维链(Chain of Thought)
bash
# 让模型展示推理过程
请一步步思考这个问题:
如果一个正方形的周长是 20 厘米,它的面积是多少?
第一步:正方形有 4 条相等的边
第二步:每条边长 = 周长 ÷ 4 = 20 ÷ 4 = 5 厘米
第三步:面积 = 边长 × 边长 = 5 × 5 = 25 平方厘米
答案:25 平方厘米常用 Prompt 模板
bash
# 角色扮演模板
你是一位专业的 [角色],擅长 [技能]。请 [任务]。
# 代码生成模板
请用 [编程语言] 编写一个 [功能描述]。
要求:[具体要求]
# 文案创作模板
请为 [产品/服务] 写一段 [文案类型]。
目标受众:[描述受众]
核心卖点:[列出卖点]
语调风格:[正式/活泼/专业]
# 问题分析模板
请分析以下问题:
[问题描述]
要求从以下几个方面分析:
1. 问题成因
2. 可能的解决方案
3. 推荐方案及理由
4. 预防措施主流 LLM 对比
模型能力对比
| 模型 | 公司 | 上下文 | 特色 | 适用场景 |
|---|---|---|---|---|
| GPT-4o | OpenAI | 128K | 多模态、速度快 | 通用任务、代码、多模态 |
| Claude 3.5 Sonnet | Anthropic | 200K | 长文本、细腻输出 | 长文档处理、精细写作 |
| Gemini 1.5 Pro | 1M+ | 超长上下文、多模态 | 大规模文档、视频分析 | |
| Llama 3.1 405B | Meta | 128K | 开源最强 | 本地部署、定制化 |
| Qwen 2.5 72B | 阿里 | 128K | 中文能力强 | 中文任务、本地部署 |
| DeepSeek-V3 | 国产 | 128K | 性价比高 | 通用任务、成本敏感 |
成本对比(仅供参考)
| 模型 | 输入价格/1M tokens | 输出价格/1M tokens |
|---|---|---|
| GPT-4o | $2.50 | $10.00 |
| Claude 3.5 Sonnet | $3.00 | $15.00 |
| Gemini 1.5 Pro | $1.25 | $5.00 |
| Llama 3 (通过 API) | $0.50 | $0.50 |
| DeepSeek-V3 | ¥1.00 | ¥2.00 |
注:价格可能随时变化,请以官方为准
性能基准测试
text
通用能力排名(大致):
Claude 3.5 Sonnet ≈ GPT-4o > Gemini 1.5 Pro > DeepSeek-V3 > Qwen 2.5
代码能力排名:
Claude 3.5 Sonnet > GPT-4o > Gemini 1.5 Pro > DeepSeek-Coder-V2
中文能力排名:
DeepSeek-V3 ≈ Qwen 2.5 > Claude 3.5 Sonnet > GPT-4o
长文本能力排名:
Gemini 1.5 Pro (1M) > Claude 3.5 (200K) > GPT-4o (128K)如何选择合适的 LLM
决策流程
text
┌─────────────────────────────────────────────────────────┐
│ LLM 选择决策树 │
└─────────────────────────────────────────────────────────┘
是否需要本地部署?
├─ 是 → 考虑开源模型:Llama 3、Qwen 2.5、DeepSeek-V3
└─ 否 → 是否中文为主?
├─ 是 → DeepSeek-V3、Qwen 2.5、Claude 3.5
└─ 否 → 是否需要超长上下文?
├─ 是 → Gemini 1.5 Pro
└─ 否 → Claude 3.5 Sonnet 或 GPT-4o
是否成本敏感?
├─ 是 → 开源模型 API 或 DeepSeek
└─ 否 → GPT-4o 或 Claude 3.5 Sonnet应用场景推荐
| 场景 | 推荐模型 | 理由 |
|---|---|---|
| 通用问答 | Claude 3.5 / GPT-4o | 综合能力强 |
| 代码编写 | Claude 3.5 Sonnet | 代码能力突出 |
| 长文档分析 | Claude 3.5 / Gemini 1.5 | 上下文长 |
| 中文应用 | DeepSeek-V3 / Qwen 2.5 | 中文优化 |
| 企业私有化 | Llama 3 / Qwen 2.5 | 可本地部署 |
| 多模态 | GPT-4o / Gemini 1.5 | 原生多模态 |
| 性价比 | DeepSeek-V3 | 价格低性能好 |
快速开始示例
使用 OpenAI API
bash
# 安装 SDK
npm install openai
# 调用示例
const openai = new OpenAI({
apiKey: process.env.OPENAI_API_KEY
});
const completion = await openai.chat.completions.create({
model: "gpt-4o",
messages: [
{ role: "system", content: "你是一个有帮助的助手。" },
{ role: "user", content: "什么是 LLM?" }
]
});
console.log(completion.choices[0].message.content);使用 Anthropic API
bash
# 安装 SDK
npm install @anthropic-ai/sdk
# 调用示例
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY
});
const message = await anthropic.messages.create({
model: "claude-3-5-sonnet-20241022",
max_tokens: 1024,
messages: [
{ role: "user", content: "什么是 LLM?" }
]
});
console.log(message.content[0].text);使用开源模型(Ollama)
bash
# 安装 Ollama
# 下载:https://ollama.ai
# 拉取模型
ollama pull llama3.1
# 运行模型
ollama run llama3.1
# API 调用
curl http://localhost:11434/api/generate -d '{
"model": "llama3.1",
"prompt": "什么是 LLM?"
}'注意事项与最佳实践
API 使用安全
bash
# ❌ 不要这样做
const apiKey = "sk-xxx"; // 硬编码
# ✅ 应该这样做
const apiKey = process.env.OPENAI_API_KEY; // 环境变量成本控制
bash
# 1. 设置预算限制
export OPENAI_MAX_BUDGET=100
# 2. 使用更小的模型处理简单任务
# 简单分类 → GPT-4o-mini
# 复杂推理 → GPT-4o
# 3. 优化 prompt,减少 token 消耗
# 使用简洁明确的指令
# 避免重复上下文内容安全
- 不要输入敏感信息(API Key、密码等)
- 对用户输入进行过滤和验证
- 实现 内容审查机制
- 遵守数据隐私法规
模型幻觉应对
bash
# 策略 1:要求提供依据
"请在回答时标注信息来源"
# 策略 2:使用 RAG 补充知识
"基于以下文档回答问题:[文档内容]"
# 策略 3:要求承认不确定性
"如果你不确定答案,请直接说不知道"
# 策略 4:人工审核
对重要输出进行人工验证小结
大语言模型(LLM)是 AI 时代的核心基础设施,它通过在海量数据上的预训练获得了强大的语言理解和生成能力。选择合适的 LLM 需要考虑:
- 任务需求:通用、代码、长文本、多模态
- 语言要求:中文、英文、多语言
- 部署方式:云 API、本地部署
- 成本预算:按需选择性价比高的模型
- 数据隐私:敏感数据考虑本地部署
掌握 Prompt Engineering 是用好 LLM 的关键,通过精心设计的 prompt 可以显著提升模型输出质量。
下一篇文章将深入介绍 LLM 的微调与部署,帮助你定制化属于自己的模型。
赞赏博主
评论 隐私政策