一、Token与计费:你以为的"按字收费",其实是"按Token收费"
很多开发者第一次用LLM API时,最大的困惑就是:为什么我给模型发了一段100字的中文,计费显示消耗了200多个Token?
1.1 什么是Token?
根据OpenAI官方文档的解释,Token是模型处理文本时的最小单位。它不是按"字"或"词"来切的,而是按常见的字符序列来切分的。
举个例子:
英文单词 “the” → 1个Token
英文单词 “tokenization” → 被拆成 “token” + “ization”,共2个Token
中文字符 → 通常1个汉字 = 1~2个Token(具体取决于Tokenizer)
OpenAI提供了一个 Tokenizer工具,你可以输入任意文本,实时看到它是如何被切分成Token的。
经验法则:对于英文文本,1个Token ≈ 4个字符 ≈ 0.75个单词;对于中文文本,1个Token ≈ 0.5~1个汉字。如果你要估算一次API调用的成本,先算Token数再乘以单价。
1.2 各平台的Tokenizer差异
不同平台使用的Tokenizer不同,同样的文本消耗的Token数也会不同:
| 平台 | Tokenizer | 特点 |
|---|---|---|
| OpenAI (GPT系列) | cl100k_base / o200k_base | 英文效率高,中文相对费Token |
| Google (Gemini) | SentencePiece | 多语言平衡,中文效率较好 |
| Anthropic (Claude) | Claude Tokenizer | 长文本场景优化,分词粒度适中 |
| Meta (LLaMA) | BPE (Byte Pair Encoding) | 开源通用,社区衍生版本多 |
实际影响:同样的中文Prompt,在GPT-4上可能比Gemini多消耗20%~30%的Token。如果你的应用主要处理中文内容,这一点会显著影响成本。
1.3 计费结构:Input + Output
LLM API的计费通常是Input Token + Output Token分开计价,而且Output Token的单价往往比Input贵2~4倍。
以OpenAI为例(单位:每百万Token):
| 模型 | Input价格 | Output价格 |
|---|---|---|
| gpt-5.5 | $5.00 | $15.00 |
| gpt-5.4-mini | $0.50 | $2.00 |
| GPT-4o | $2.50 | $10.00 |
省钱技巧:如果你的场景主要是"读取大量文档然后给出简短结论"(如摘要),Output很少但Input很多,那Input单价低的模型更划算。反之,如果是"写长文",Output单价就更关键。
误区:很多开发者只看"每百万Token多少钱",却忽略了Output比Input贵得多。一个生成2000字长文的请求,Output Token可能是Input的5~10倍。
二、上下文窗口:为什么模型会"健忘"?
你有没有遇到过这种情况:给模型发了一篇长文档,让它总结,结果它只总结了前半部分,后半部分完全没提?
这不是模型"偷懒",而是它遭遇了上下文窗口(Context Window)的限制。
2.1 什么是上下文窗口?
上下文窗口 = 模型一次能"记住"的最大Token数。它包括三部分:
System Prompt(系统指令)+User Input(用户输入)+Assistant Output(模型输出)
如果三者加起来超过了模型的最大上下文长度,超出部分就会被截断或遗忘。OpenAI官方文档明确指出:对于文本生成模型,Prompt和生成的输出加起来不能超过模型的最大上下文长度。
2.2 各平台上下文窗口对比
上下文窗口的大小,直接决定了模型能处理多长的文档:
| 模型 | 上下文窗口 | 能处理多长的文本 |
|---|---|---|
| GPT-4o | 128K tokens | 约300页PDF |
| Claude 3.5 Sonnet | 200K tokens | 约500页PDF |
| Gemini 1.5 Pro | 1M tokens | 约整本书籍 |
| GPT-5.5 | 128K tokens | 约300页PDF |
划重点:上下文窗口大 ≠ 模型能精准记住所有内容。研究表明,模型对上下文"中间部分"的注意力会下降(称为"Lost in the Middle"现象)。所以,即使窗口有128K,最重要的信息也应该放在Prompt的开头和结尾。
2.3 超长文本的应对策略
策略1:分块处理(Chunking)
把长文档切成多个小块,分别让模型处理,最后再合并结果。这是RAG(检索增强生成)的核心思路。
策略2:摘要级联(Summarization Chain)
先让模型分别总结每个章节,再把所有章节摘要拼起来,让模型做最终总结。这样每层都不会超过上下文限制。
策略3:选择长上下文模型
如果场景确实需要处理超长文档(如法律合同审阅),直接选用Claude或Gemini的长窗口模型,比做复杂的分块逻辑更省事。
三、Function Calling:让LLM从"聊天"变成"干活"
这是我认为LLM从"玩具"升级为"工具"的最关键技术。
Function Calling(函数调用)允许模型在对话过程中"决定"调用你预先定义好的外部函数,从而获取实时数据或执行实际操作。
3.1 核心机制:三步走
根据OpenAI官方文档,Function Calling的工作流程如下:
Step 1:定义函数— 你在API请求中传入一组函数定义(函数名、参数、描述)。
Step 2:模型决策— 模型根据用户输入,判断是否需要调用某个函数。如果需要,它返回一个JSON格式的函数调用请求,而不是直接回答。
Step 3:执行与反馈— 你在本地执行函数,拿到结果后,把结果再发回给模型,模型基于函数返回值生成最终回答。
举个例子:用户问"今天北京天气怎么样?"
你定义了一个
get_weather(city)函数模型识别到用户问天气,返回
{"name": "get_weather", "arguments": {"city": "北京"}}你调用天气API拿到数据,发回给模型,模型生成"今天北京晴,25°C,适合出行"。
3.2 各平台的Function Calling对比
| 平台 | 名称 | 特点 |
|---|---|---|
| OpenAI | Function Calling | 支持并行调用多个函数,JSON Schema严格 |
| Function Calling | 与Gemini原生多模态结合,支持声明式工具 | |
| Anthropic | Tool Use | 强调安全性和可控性,支持Computer Use |
| Meta | Tool Calling (via vLLM) | 开源生态灵活,社区方案丰富 |
3.3 实战代码示例(OpenAI)
from openai import OpenAI client = OpenAI() # 定义工具 tools = [{ "type": "function", "function": { "name": "get_weather", "description": "获取指定城市的天气", "parameters": { "type": "object", "properties": { "city": {"type": "string", "description": "城市名称"} }, "required": ["city"] } } }] # 第一轮对话:模型决定调用函数 response = client.responses.create( model="gpt-5.5", input="北京今天天气怎么样?", tools=tools ) # 执行函数并返回结果 weather = get_weather("北京") # 第二轮对话:模型基于函数结果生成回答 response = client.responses.create( model="gpt-5.5", input=[ {"role": "user", "content": "北京今天天气怎么样?"}, {"role": "assistant", "content": response.output_text}, {"role": "user", "content": f"天气结果:{weather}"} ] )记住一个原则:Function Calling的本质不是"让模型执行代码",而是"让模型做决策——决定调用什么函数、传什么参数"。函数的实际执行必须在你的代码里完成,模型本身不会直接访问外部系统。
四、多模态能力:LLM不止于文字
2024年,GPT-4o的发布标志着一个重要转折:LLM不再只是文字处理器,而是开始统一处理文字、图片、音频、视频。
4.1 各平台多模态能力对比
| 能力 | OpenAI | Anthropic | |
|---|---|---|---|
| 文本理解 | ✅ 全系支持 | ✅ 全系支持 | ✅ 全系支持 |
| 图片理解 | ✅ GPT-4o/Vision | ✅ Gemini原生多模态 | ✅ Claude 3 Vision |
| 音频理解 | ✅ GPT-4o实时语音 | ✅ Gemini Audio | ❌ 暂不支持 |
| 视频理解 | ⚠️ 需拆帧处理 | ✅ Gemini原生支持 | ❌ 暂不支持 |
| 图片生成 | ✅ DALL·E / GPT-4o | ✅ Imagen | ❌ 暂不支持 |
关键差异:Google Gemini 是原生多模态——它的训练数据本身就包含了图文音视频的对齐数据,所以理解跨模态内容更自然。而OpenAI的GPT-4o虽然也能处理多模态,但在架构上更像是在文本模型基础上叠加了视觉/音频编码器。
4.2 多模态的实际应用场景
场景1:文档OCR + 理解
上传一张发票照片,模型直接提取金额、日期、税号,并判断是否符合报销规则。这在财务自动化中非常有用。
场景2:UI截图转代码
把设计稿截图发给模型,让它生成对应的HTML/CSS代码。GPT-4o和Gemini在这方面表现都不错。
场景3:视频内容分析
Gemini可以直接上传视频文件,模型自动理解视频内容并生成摘要。OpenAI则需要先把视频拆成关键帧图片,再逐帧分析。
五、推理模型:从"背诵答案"到"逐步思考"
2024年底,OpenAI发布了o1 / o3系列模型,正式把"推理能力"从大语言模型的通用能力中剥离出来,做成了专门的推理模型(Reasoning Model)。
5.1 推理模型与普通LLM的区别
普通LLM(如GPT-4)的回答方式是**“一步到位”**:看到问题,直接生成答案。这种模式在简单问题上很快,但面对复杂逻辑题、数学证明、代码调试时,容易"一口说错"。
推理模型(如o1/o3)则采用**“思维链(Chain of Thought)+ 强化学习”**的方式:
模型在内部生成多个思考步骤
对每个步骤进行自我验证和修正
最后基于验证后的思路给出答案
你可以把它理解为:普通LLM是"脱口而出",推理模型是"先打草稿再回答"。
5.2 什么时候该用推理模型?
推理模型的Output Token消耗通常比普通模型高3~10倍(因为它内部要生成大量思考过程),所以不是什么时候都用。适合的场景:
数学/逻辑题:复杂的数学证明、逻辑推理
代码调试:定位深层Bug,需要多步推理
策略分析:商业决策、风险评估等需要权衡多方面因素的场景
科学计算:物理、化学等需要精确推导的问题
不适合的场景:简单的问答、文案创作、翻译——这些用普通模型更快更便宜。
划重点:推理模型的"思考过程"对开发者是黑盒的(OpenAI不暴露内部思维链),你只能通过调整reasoning_effort参数来控制思考的"深度"。取值有 low / medium / high。
六、Prompt Engineering:不是玄学,是工程
很多开发者觉得Prompt Engineering就是"多试几次找到好说法",其实这是有方法论可循的。OpenAI和Anthropic的官方文档都给出了系统化的最佳实践。
6.1 结构化Prompt的黄金公式
一个高质量的Prompt通常包含四个部分:
【角色定义】你是一位资深Java架构师 【任务描述】请审查以下代码,找出潜在的性能问题和安全漏洞 【输入数据】 ```java // 待审查的代码 ```【输出格式】 1. 问题概述(一句话) 2. 具体位置(行号) 3. 严重程度(高/中/低) 4. 修复建议(带代码示例) 5. 解释原因(为什么这是个问题)这个结构化的Prompt让模型明确知道:我是谁、我要做什么、输入是什么、输出要什么格式。比一句简单的"帮我看看这段代码"效果好得多。
6.2 少样本提示(Few-shot Prompting)
如果你的任务有明确的"格式要求",最好在Prompt里给1~3个示例。这就是Few-shot Prompting。
OpenAI官方文档明确指出:“Designing a prompt is essentially how you ‘program’ a model, usually by providing instructions or some examples of how to successfully complete a task.”
举个例子,如果你要让模型做情感分析,可以这样写:
请判断以下评论的情感倾向,只输出"正面"、"负面"或"中性"。 示例1: 评论:"这款手机续航太差了,一天要充三次电" 结果:负面 示例2: 评论:"快递很快,包装也很严实,满意" 结果:正面 待分析: 评论:"价格还行,但屏幕亮度一般" 结果:6.3 系统提示词(System Prompt)的重要性
System Prompt是每次对话的"全局设定",它会在每一轮对话中默默影响模型的行为。根据各平台文档,System Prompt的作用包括:
定义角色:“你是一位专业的医疗顾问”
约束行为:“不要提供医疗诊断建议,只提供一般性健康信息”
设定格式:“所有回答必须用Markdown格式”
注入知识:“你熟悉我们公司的产品矩阵,包括A、B、C三款产品”
误区:很多人只在User Message里写指令,忽略了System Prompt。实际上,System Prompt的权重更高,模型更倾向于遵守System级别的设定。
七、模型选型与成本优化:不是越贵越好
最后来聊聊一个实际的问题:面对这么多模型,我该怎么选?
7.1 选型决策树
根据任务类型选择模型,可以大幅降低成本:
| 任务类型 | 推荐模型 | 理由 |
|---|---|---|
| 简单问答/分类 | gpt-5.4-mini / Gemini Flash | 速度快、成本低,足够胜任 |
| 复杂推理/创意写作 | GPT-4o / Claude Sonnet | 质量高,适合需要"智力"的任务 |
| 超长文档处理 | Claude 3.5 / Gemini 1.5 Pro | 上下文窗口大,长文本理解精准 |
| 数学/代码推理 | o1 / o3 (OpenAI) | 推理能力强,适合需要多步思考的场景 |
| 图片/视频理解 | GPT-4o / Gemini Pro | 多模态能力强,原生支持 |
| 本地部署/隐私敏感 | LLaMA / Qwen | 开源模型,可本地运行,数据不出境 |
7.2 成本优化的三个技巧
技巧1:Prompt缓存(Prompt Caching)
OpenAI和Anthropic都支持Prompt Caching——如果你每次请求的System Prompt和上下文是重复的,平台会缓存这部分Token,只对新内容收费。这在客服机器人、代码审查等场景中能省50%以上的费用。
技巧2:模型降级策略
先用便宜的小模型(如gpt-5.4-mini)处理请求,如果小模型的回答质量不达标(可以用简单的规则判断),再回退到大模型。这种"小模型守门 + 大模型兜底"的策略,能在保证质量的同时大幅降低平均成本。
技巧3:流式输出(Streaming)
开启流式输出后,模型生成一个字就返回一个字,用户无需等待完整生成。虽然Token费用不变,但用户体验大幅提升,间接减少了用户因等待过久而重复提交请求的情况。
假如你从2026年开始学大模型,按这个步骤走准能稳步进阶。
接下来告诉你一条最快的邪修路线,
3个月即可成为模型大师,薪资直接起飞。
阶段1:大模型基础
阶段2:RAG应用开发工程
阶段3:大模型Agent应用架构
阶段4:大模型微调与私有化部署
配套文档资源+全套AI 大模型 学习资料,朋友们如果需要可以微信扫描下方二维码免费领取【保证100%免费】👇👇