LLM核心概念全解析:从Token到Agent的完整技术栈指南

1次阅读
没有评论

共计 2031 个字符,预计需要花费 6 分钟才能阅读完成。

image.webp

1. 基础概念:理解 LLM 的 ” 语言单位 ”

在 LLM 开发中,Token是最小的处理单位。它不等同于单词或字母——例如:

LLM 核心概念全解析:从 Token 到 Agent 的完整技术栈指南

  • 英文单词 ”unhappy” 会被拆解为 ["un", "happy"] 两个 Token
  • 中文短语 ” 人工智能 ” 可能被编码为["人工", "智能"](不同模型分词方式不同)

计算 Token 数量的 Python 示例(使用 OpenAI 的 tiktoken 库):

import tiktoken

def count_tokens(text: str, model_name: str = "gpt-4") -> int:
    try:
        encoding = tiktoken.encoding_for_model(model_name)
        return len(encoding.encode(text))
    except KeyError:
        print(f"Warning: Model {model_name} not found. Using default encoding.")
        encoding = tiktoken.get_encoding("cl100k_base")
        return len(encoding.encode(text))

# 示例用法
print(count_tokens("你好,人工智能助手!"))  # 输出: 7 (以实际模型为准)

2. Context Window:模型的 ” 记忆边界 ”

Context Window决定了模型能处理的最大 Token 数量。当前主流模型的典型值:

模型 Context Window
GPT-3.5-turbo 4k tokens
GPT-4 8k/32k tokens
Claude 3 200k tokens

当输入超过这个限制时,常见解决方案:

  1. 截断法:保留最后 N 个 Token(可能丢失关键信息)
  2. 摘要法:用另一个 LLM 生成前文摘要
  3. 分块法:将长文档拆分成多个片段处理

3. Prompt 工程:与模型对话的艺术

System Prompt 设计模板

system_prompt = """
你是一个专业的技术文档助手,需要遵守以下规则:1. 使用中文回答
2. 对复杂概念提供比喻解释
3. 当不确定答案时明确告知用户

当前对话上下文:{context}
"""

用户 Prompt 优化技巧

  • 具体性:避免 ” 请解释 AI”,改为 ” 用比喻解释神经网络如何学习 ”
  • 结构化:使用 ” 首先 … 其次 … 最后 ” 等引导词
  • 示例法:提供输入输出样例(Few-shot learning)

4. 从单次交互到 Agent 系统

基础 Agent 循环实现示例:

from typing import List, Dict

class SimpleAgent:
    def __init__(self, system_prompt: str):
        self.memory: List[Dict] = []
        self.system_prompt = system_prompt

    def respond(self, user_input: str) -> str:
        # 构建完整 Prompt
        full_prompt = f"""{self.system_prompt}
        ---
        历史对话:
        {self._format_memory()}
        ---
        用户最新输入: {user_input}"""

        # 调用 LLM API(伪代码)response = call_llm_api(full_prompt)

        # 更新记忆
        self.memory.append({"user": user_input, "agent": response})
        return response

    def _format_memory(self) -> str:
        return '\n'.join([f"用户: {m['user']}\n 助手: {m['agent']}" for m in self.memory[-3:]])

5. 生产环境避坑指南

问题类型 解决方案
Context 长度超限 实时监控 Token 消耗,动态清除最早的历史消息
Prompt 注入攻击 对用户输入进行关键词过滤,设置系统角色边界
Tool 调用超时 设置 5 -10 秒超时限制,提供降级响应
多轮对话记忆混乱 使用向量数据库存储历史,按相关性检索
API 费用失控 实施请求限流,对高 Token 消耗操作需二次确认

6. 性能与成本的平衡艺术

Context Window 大小的影响公式:

总成本 ≈ 输入 Token 数 × 输入单价 + 输出 Token 数 × 输出单价
延迟时间 ≈ 基础延迟 + (总 Token 数 / 处理速率)

优化建议:
– 对实时性要求高的场景选择 4k 窗口模型
– 文档分析类任务选用大窗口模型减少 API 调用次数
– 长文本处理时优先压缩非关键信息

延伸学习路线

  1. 官方文档精读:
  2. OpenAI Tokenizer
  3. HuggingFace Transformers
  4. 实验建议:
  5. 比较不同分词器对同一文本的 Token 切分结果
  6. 设计 System Prompt 控制 LLM 输出格式(JSON/XML/Markdown)
  7. 进阶方向:
  8. 实现带有工具调用 (Tool) 的 Agent
  9. 探索 ReAct 推理框架

(注:本文代码示例需要根据实际使用的 LLM API 调整调用方式,类型标注基于 Python 3.9+ 语法)

正文完
 0
评论(没有评论)