调用模型的API接口与Token详谈

如果说你和ai软件对话是软件界面为前端,作为和你交互的接口,大模型在云端负责处理你的需求,那么调用模型API接口就是程序与云端模型的对话

两个过程大致如下:

这是用户直接和模型交互:

cpp 复制代码
你的浏览器
   ↓
ChatGPT
   ↓
模型
   ↓
生成回答
   ↓
ChatGPT
   ↓
你的浏览器

这是程序和模型交互:

cpp 复制代码
你的 Python 程序
       ↓
    API 请求
       ↓
    AI 模型
       ↓
    API 响应
       ↓
你的 Python 程序

那么为什么agent需要API?

因为模型是大脑,agent是行为的执行者。模型负责想,agent负责做

比如你的程序有可能是这样:

cpp 复制代码
Agent 程序
    ↓
调用模型 API
    ↓
模型思考:
"我需要检查测试"
    ↓
Agent 调用 Terminal
    ↓
pytest
    ↓
发现测试失败
    ↓
把错误交给模型 API
    ↓
模型分析
    ↓
Agent 修改代码
    ↓
再次 pytest
    ↓
成功

这里的API就成了agent的大脑的接口

cpp 复制代码
             ┌─────────────┐
             │  AI 模型    │
             │    大脑     │
             └──────┬──────┘
                    │
                 API接口
                    │
             ┌──────▼──────┐
             │    Agent    │
             │    身体     │
             └──┬───┬───┬──┘
                │   │   │
              文件 Terminal Git

API key是什么?

调用API需要一个API key ,这个API key是你个人使用的私有密码,通常也用于计费

cpp 复制代码
你的程序
   ↓
API Key + 请求
   ↓
AI 服务
   ↓
确认身份/权限
   ↓
执行请求

模型的网页调用和API调用的使用是不同的计费情况,一般而言,直接用网页版的模型基础功能免费,但是调用API接口就需要根据token消耗量进行计费

那么token是什么呢?

token 是理解大模型运行方式的基础单位,是大模型处理文字时切分出来的基本计算单位

比如,大模型在理解人类语言时:

cpp 复制代码
文字
 ↓
分词(Tokenization)
 ↓
Token编号
 ↓
神经网络计算
 ↓
输出Token
 ↓
转换成人类文字

我喜欢学习人工智能可能会被切成:

cpp 复制代码
我
喜欢
学习
人工
智能

这样的每一块就是token。中文比较特殊,一般而言一个汉字是一个token左右,还有的时候一个词组是一个token

cpp 复制代码
你 = token 1
好 = token 2

也有可能:

cpp 复制代码
你好 = 一个token

大模型的能力和成本都跟token有关系,比如API计费,不是你问了几个问题,或者几句话,而是token消耗了多少(你输入多少 token + 模型输出多少 token)

context window(上下文窗口)

这个模型支持 128K context,这个k指的还是token

cpp 复制代码
128,000 tokens

这个指的是模型一次性能记忆的内容量

token和agent的关系:

对于平常使用的ai,可能输入100token的数据,输出1000token的数据,一共才1100token

cpp 复制代码
你:
写一个登录功能

AI:
代码

但是对于agent:

cpp 复制代码
任务
 ↓
读取项目
 ↓
分析文件
 ↓
修改代码
 ↓
运行测试
 ↓
看错误
 ↓
再次修改
 ↓
总结
cpp 复制代码
第1轮:
10000 tokens

第2轮:
15000 tokens

第3轮:
20000 tokens

一次任务可能几十万token

所以token的成本控制是现在很重要的研究内容

写代码 Agent:

不能把整个 GitHub 项目全部塞进去。

需要:检索,RAG,摘要,分块

这就是 AI 工程。

RAG是什么?

如果我要把一个很大的文档喂给ai,比如100g,这是不可能的,因为成本太大,所以我进行如下操作:

cpp 复制代码
用户问题

↓

搜索相关资料

↓

只取相关部分

↓

发送给模型

↓

回答

这就是RAG

关于计费这一块,我有一个问题,经过查阅得到了答案:如果计费仅仅和token有关,而token的消耗量是输入的token加模型输出的token,那只需要把prompt控制的尽可能短,让模型输出有限制,那成本不是很低了吗,但是这个问题如果很复杂,在模型内部生成的东西很多,需要的算力很大,模型推理时消耗的token多,但不计入计费规则,这样一来合理吗?

模型内部"思考"并不是完全不计费。对于支持 reasoning 的模型,内部 reasoning tokens 会被算进 output tokens,并按输出 Token 计费

模型内部想得多,通常意味着 reasoning tokens 更多,而这些会计入输出 Token 用量。OpenAI 当前的推理模型文档就明确说明,reasoning tokens 虽然不会直接展示给用户,但会占用上下文窗口,并且按 output tokens 计费。

所以不是:

cpp 复制代码
输入 Token
+
你看到的回答 Token
=
全部计费

而是:

cpp 复制代码
                  一次模型调用
                       │
          ┌────────────┴────────────┐
          ↓                         ↓
      Input Tokens              Output Tokens
                                    │
                         ┌──────────┴──────────┐
                         ↓                     ↓
                   Reasoning Tokens        可见输出 Tokens
                    (内部推理)             (你看到的)

举例:

假设你给模型:

cpp 复制代码
答案:50 tokens

但它内部为了得到这个答案,进行了:

cpp 复制代码
推理:5,000 tokens

那么实际可能是:

cpp 复制代码
Input = 100
Reasoning = 5,000
Visible Output = 50

Output = 5,050

Total = 5,150 tokens

这就是为什么现在会有按照推理能力不同的ai收费标准不一样

cpp 复制代码
reasoning effort
    ↓
low
medium
high
xhigh

它实际上是在控制模型愿意投入多少推理计算。推理投入越高 → 可能消耗更多 reasoning tokens → 成本和延迟可能增加。

相关推荐
禁默1 小时前
从一行需求到压测波峰:我用 Seed-2.1-pro-0915 从 0 交付了一套分布式任务看板
人工智能·ai·seed-2.1-pro
天远Date Lab1 小时前
零信任架构实战:基于天远手机在网状态V即时版构建自动化通信网关
人工智能·ai·工具分享
不会写代码的女程序猿2 小时前
商用 AI 四诊仪技术拆解|明理 AI 四诊仪多模态采集方案解析
大数据·人工智能·科技·ai·健康医疗
Code_流苏2 小时前
AI 知识库和数据库有什么区别?从“查订单”到“问规则”讲清楚
数据库·ai·agent·知识库
AAIshangyanxiu2 小时前
智能气候前沿:AI Agent结合机器学习与深度学习在全球气候变化驱动因素预测中的应用
人工智能·agent·气候变化·智能气候前沿
User_芊芊君子2 小时前
让 Claude Code 换上国产大脑:蓝耘元生代上 GLM-5.2 / DeepSeek / Qwen 模型横评实测
人工智能·ai·大模型
xiezhr2 小时前
我用豆包 Seed-2.1-pro-0915 做了个「今天吃啥」,中午点菜这事终于不用纠结了
agent·ai编程
Code_流苏2 小时前
如何写好一个 Skills?
ai·agent·技能·skills
程序员无隅3 小时前
Agent Loop 源码拆解:模型为什么会连续调用工具,又在何时停下
ai