前置知识: Python

LLM 基础

00:00
7 min Beginner 2026/6/14

大语言模型原理、Transformer 架构、Tokenization、Prompt Engineering 及模型选择。

1. 大语言模型原理

1.1 什么是大语言模型

大语言模型(Large Language Model, LLM)是基于 Transformer 架构、在海量文本数据上训练的深度学习模型,能够理解和生成自然语言。其核心能力来自下一个 token 预测

输入: "今天天气很"
预测: "好" (P=0.65) | "差" (P=0.15) | "热" (P=0.12) | ...

1.2 训练流程

阶段目标数据规模方法
预训练学习语言知识TB 级文本自回归(预测下一个 token)
SFT学习对话格式万级指令对监督微调
RLHF对齐人类偏好人类反馈数据PPO / DPO
推理优化提升推理能力数学/代码数据GRPO / RLOO

1.3 涌现能力

当模型参数量超过一定阈值时,会涌现出小模型不具备的能力:

  • 上下文学习(ICL):通过示例学习新任务
  • 思维链(CoT):逐步推理解决复杂问题
  • 指令遵循:理解并执行复杂指令

2. Transformer 架构

2.1 核心机制

Transformer 的核心是自注意力机制(Self-Attention)

import torch
import torch.nn.functional as F
import math

def self_attention(Q, K, V, mask=None):
    """
    缩放点积注意力
    Q: (batch, seq_len, d_k)
    K: (batch, seq_len, d_k)
    V: (batch, seq_len, d_v)
    """
    d_k = Q.size(-1)
    # 计算注意力分数
    scores = torch.matmul(Q, K.transpose(-2, -1)) / math.sqrt(d_k)

    if mask is not None:
        scores = scores.masked_fill(mask == 0, -1e9)

    # Softmax 归一化
    attention_weights = F.softmax(scores, dim=-1)

    # 加权求和
    output = torch.matmul(attention_weights, V)
    return output, attention_weights

2.2 多头注意力

class MultiHeadAttention(torch.nn.Module):
    def __init__(self, d_model, n_heads):
        super().__init__()
        self.d_k = d_model // n_heads
        self.n_heads = n_heads
        self.W_q = torch.nn.Linear(d_model, d_model)
        self.W_k = torch.nn.Linear(d_model, d_model)
        self.W_v = torch.nn.Linear(d_model, d_model)
        self.W_o = torch.nn.Linear(d_model, d_model)

    def forward(self, x, mask=None):
        batch_size = x.size(0)
        # 线性投影并分头
        Q = self.W_q(x).view(batch_size, -1, self.n_heads, self.d_k).transpose(1, 2)
        K = self.W_k(x).view(batch_size, -1, self.n_heads, self.d_k).transpose(1, 2)
        V = self.W_v(x).view(batch_size, -1, self.n_heads, self.d_k).transpose(1, 2)
        # 注意力计算
        attn_output, _ = self_attention(Q, K, V, mask)
        # 合并头
        attn_output = attn_output.transpose(1, 2).contiguous().view(batch_size, -1, self.n_heads * self.d_k)
        return self.W_o(attn_output)

2.3 Transformer 架构对比

架构代表模型特点适用场景
Encoder-OnlyBERT双向注意力文本理解、分类
Decoder-OnlyGPT 系列单向(因果)注意力文本生成、对话
Encoder-DecoderT5、BART编码+解码翻译、摘要

当前主流 LLM(GPT-4、Claude、LLaMA)均采用 Decoder-Only 架构。

3. Tokenization

3.1 分词方法

方法原理优点缺点
Word-level按词切分直观OOV 问题、词表过大
Char-level按字符切分无 OOV序列过长、语义弱
BPE合并高频字符对平衡词表大小和序列长度可能切分不合理
WordPiece基于似然的合并语义更合理计算成本高
SentencePiece语言无关的分词支持多语言需要训练

3.2 BPE 分词示例

from tiktoken import encoding_for_model

# 使用 GPT-4 的分词器
enc = encoding_for_model("gpt-4")

text = "Hello, AI Agent!"
tokens = enc.encode(text)
decoded = enc.decode(tokens)

print(f"原文: {text}")
print(f"Token IDs: {tokens}")
print(f"Token 数量: {len(tokens)}")
print(f"解码: {decoded}")

# 中文分词
cn_text = "人工智能代理"
cn_tokens = enc.encode(cn_text)
print(f"中文 Token 数量: {len(cn_tokens)}")  # 中文通常 1-2 字符/token

3.3 Token 计费与上下文窗口

模型上下文窗口输入价格输出价格
GPT-4o128K$2.5/1M tokens$10/1M tokens
Claude 3.5 Sonnet200K$3/1M tokens$15/1M tokens
Gemini 1.5 Pro2M$1.25/1M tokens$5/1M tokens
DeepSeek V3128K¥1/1M tokens¥2/1M tokens

4. Prompt Engineering

4.1 基础技巧

# 1. 系统提示词(System Prompt)
system_prompt = """你是一个专业的 Python 开发专家。
请遵循以下规则:
1. 代码必须包含类型注解
2. 添加详细的 docstring
3. 遵循 PEP 8 规范
4. 优先使用标准库
"""

# 2. 角色设定
role_prompt = """你是一位拥有 10 年经验的 DevOps 工程师,
擅长 Kubernetes、Docker 和 CI/CD 流水线设计。
请用简洁专业的语言回答问题。"""

4.2 Few-shot Learning

few_shot_prompt = """请根据示例完成情感分类:

示例1:
输入: 这个产品太棒了,我非常喜欢!
输出: 正面

示例2:
输入: 质量很差,完全不推荐购买。
输出: 负面

示例3:
输入: 还可以吧,没什么特别的。
输出: 中性

请分类:
输入: {user_input}
输出:"""

4.3 Chain-of-Thought(思维链)

# Zero-shot CoT
cot_prompt = """请逐步思考以下问题:

问题: 一个商店有 23 个苹果,卖了 15 个,又进货了 8 个,现在有多少个苹果?

请一步步推理:"""

# 输出示例:
# 首先,商店有 23 个苹果
# 卖了 15 个后: 23 - 15 = 8 个
# 又进货了 8 个: 8 + 8 = 16 个
# 答案: 16 个苹果

4.4 Tree-of-Thought(思维树)

tot_prompt = """你是一个问题解决专家。请使用思维树方法解决问题:

1. 生成 3 个不同的初始思路
2. 对每个思路评估可行性(1-10分)
3. 选择最优思路深入展开
4. 如果遇到困难,回溯到其他思路

问题: {problem}

请按以下格式输出:
思路1: [描述] | 可行性: [分数]
思路2: [描述] | 可行性: [分数]
思路3: [描述] | 可行性: [分数]

最优思路深入: ..."""

4.5 Prompt 模式对比

模式适用场景Token 消耗准确性
Zero-shot简单任务一般
Few-shot格式化输出较好
CoT推理任务
ToT复杂规划很高最好
Self-Consistency需要高可靠性很高很好

5. 模型选择

5.1 商业模型

模型提供商优势劣势
GPT-4oOpenAI综合能力最强、生态完善价格较高、国内访问受限
Claude 3.5Anthropic长文本处理、安全性好知识截止较早
Gemini 1.5Google超长上下文(2M)、多模态推理能力略
文心一言中文优化、国内合规代码能力较
通义千问阿里中文好、工具调用强国际化不足

5.2 开源模型

模型参数许可证
LLaMA 38B/70B/405BMeta 开性能优秀LLaMA License
Qwen2.57B/72B中文优秀、工具调用强Apache 2.0
DeepSeek V3671B MoE性价比极推理MIT
Mistral7B/8x22B效率高、欧洲合规Apache 2.0
Yi6B/34B中文理解好Apache 2.0

5.3 选型建议

# 模型选择决策树
def select_model(task_type, budget, latency_req, privacy_req):
    if privacy_req == "strict":
        # 数据隐私要求高,使用本地开源模型
        if task_type in ["coding", "math"]:
            return "DeepSeek-Coder-V2 (本地部署)"
        return "Qwen2.5-72B (本地部署)"

    if budget == "low":
        if task_type == "coding":
            return "DeepSeek V3 (API)"
        return "GPT-4o-mini"

    if latency_req == "low":
        return "GPT-4o-mini / Claude Haiku"

    # 高质量需求
    if task_type == "reasoning":
        return "o1 / DeepSeek-R1"
    if task_type == "long_context":
        return "Gemini 1.5 Pro / Claude 3.5"
    return "GPT-4o / Claude 3.5 Sonnet"

6. LLM API 使用

6.1 OpenAI API

from openai import OpenAI

client = OpenAI()

# 基础对话
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {"role": "system", "content": "你是一个有帮助的助手。"},
        {"role": "user", "content": "解释什么是 AI Agent"}
    ],
    temperature=0.7,      # 创造性 (0-2)
    max_tokens=1000,      # 最大输出长度
    top_p=0.9,            # 核采样
    frequency_penalty=0,  # 频率惩罚
    presence_penalty=0    # 存在惩罚
)

print(response.choices[0].message.content)
print(f"Token 用量: {response.usage}")

6.2 流式输出

# 流式响应
stream = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "写一首关于AI的诗"}],
    stream=True
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

6.3 参数调优

参数范围作用推荐
temperature0-2控制随机性代码:0, 创意:0.7-1.0
top_p0-1采样阈0.9
max_tokens-最大输出按需设置
frequency_penalty-2-2惩罚重复内容0-0.5
presence_penalty-2-2鼓励新话题0-0.5

7. 小结

LLM 是 AI Agent 的心引擎,理解其原理有助于更好地设计优化 Agent 系统。关键要

  1. Transformer 架构是 LLM 的基础,自注意机制是其
  2. Tokenization 直接影响成本和性能,中文 token 消耗通常是英文的 2-3 倍
  3. Prompt Engineering 是发挥 LLM 能力的关键技能,CoT/ToT 可显著提升推理能力
  4. 模型选择综合考虑任务类型、预算、延迟隐私需求
  5. 模型(DeepSeek、Qwen)的快速进步为 Agent 开发提供了更选择

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式