什么是 LLM API?它如何工作以及何时使用
LLM API 是一个为你运行大型语言模型的 Web 服务。你的代码通过 HTTP 发送文本,模型返回文本,你按使用情况付费。
更新于

要点
- LLM API 是一个 HTTP 接口:你 POST 消息,接收补全结果。
- 按 token 计费,输入和输出分别计数。
- OpenAI 兼容 API 共享一种请求格式,因此切换提供商主要是更改 Base URL。
- 流式输出、函数调用和 JSON 模式将简单的聊天接口转变为真实软件的构建模块。
简短版本
那么,什么是 LLM API?它是一个通过网址暴露语言模型的服务。你不需要下载模型,不需要拥有 GPU,也不需要管理推理软件。你发送包含对话的请求,服务返回该对话的下一条消息。
把它想象成支付 API 或地图 API。别人负责运行底层基础设施,你使用标识身份的密钥在自己的程序中调用它。模型是产品,API 是通往它的入口。
这个入口是带有 JSON 请求体的普通 HTTP,这意味着它适用于 Python、Node、Go、Shell 脚本、电子表格宏或 VS Code 扩展。它不与任何特定语言或框架绑定。
请求和响应的样子
如今大多数 LLM API 都采用了 OpenAI 为聊天引入的格式。你调用一个接口 POST /v1/chat/completions,并发送消息列表。每条消息都有一个 role 和一些 content。
system设置整个对话的规则和人格。user是人(或你的程序)所说的内容。assistant是模型之前说过的内容,你将其发送回去以便它记住对话上下文。tool携带模型要求你运行的函数的结果。
关键细节是模型在调用之间没有记忆。每次请求都必须携带你希望它考虑的全部对话。如果你想要一个能记住最近十轮对话的聊天机器人,你的代码需要存储这十轮对话并在每次发送时包含它们。
这是使用 curl 的最小可用调用。它使用该站点的接口、模型 ID uncensored 和 Bearer token。
curl https://api.codingllmapi.com/v1/chat/completions \
-H "Authorization: Bearer $LLM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [
{"role": "system", "content": "You are a concise assistant."},
{"role": "user", "content": "Explain what a mutex is in two sentences."}
]
}'
响应是 JSON。你需要的文本位于 choices[0].message.content。旁边有一个 usage 对象,报告输入和输出了多少 token,这是计费的基础。
Token:一切计量的单位
模型不读取字符或单词。它读取 token,即文本块,通常是一个短词或长词的一部分。英文散文平均每个单词略少于一个 token,而代码由于标点和缩进,每行往往使用更多 token。将任何精确转换视为估算值,并读取 usage 字段以获取实际计数。
Token 之所以重要,原因有三。
- 价格。 你按百万 token 付费,输入(你的提示词)有一个费率,输出(模型的回答)有更高的费率。
- 上下文窗口。 提示词和回答共享一个限制。在此 API 上,窗口总共为 100,000 个 token。
- 速度。 输出是一个 token 接一个 token 生成的,因此长回答比短回答花费的时间更长。
根据本站的费率,输入 token 每 1,000,000 个收费 $0.15,输出 token 每 1,000,000 个收费 $0.50。一次包含 2,000 个输入 token 和 500 个输出 token 的请求,输入费用为 2,000 x $0.15 / 1,000,000 = $0.0003,输出费用为 500 x $0.50 / 1,000,000 = $0.00025。总计 $0.00055,因此一千次此类请求的费用为 $0.55。当前费率始终显示在 定价页面。
从代码调用 LLM API
你可以手动编写 HTTP 调用,但使用 SDK 可以节省精力。由于该 API 与 OpenAI 兼容,在更改 Base URL 和密钥后,官方 OpenAI 库即可使用。
Python
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.codingllmapi.com/v1",
api_key=os.environ["LLM_API_KEY"],
)
resp = client.chat.completions.create(
model="uncensored",
messages=[
{"role": "system", "content": "You are a careful code reviewer."},
{"role": "user", "content": "What is wrong with: for i in range(len(x)): print(x[i])"},
],
temperature=0.3,
)
print(resp.choices[0].message.content)
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)
Node
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.codingllmapi.com/v1",
apiKey: process.env.LLM_API_KEY,
});
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Give me three names for a CLI that renames files." }],
});
console.log(resp.choices[0].message.content);
将密钥保存在环境变量或密钥存储中。粘贴在前端代码或公共存储库中的密钥可以被任何找到它的人使用,费用将记在你名下。
将聊天框转变为构建模块的功能
基本的补全很有用,但大多数真实程序至少使用以下功能之一。
流式输出
设置 stream: true,服务器将以流式输出(SSE)的方式逐 token 发送答案。用户会立即看到文本出现,而无需等待完整回复。用量数据在流结束时到达。
JSON 模式
传递 response_format: {"type": "json_object"},模型将被引导返回有效的 JSON。这是从杂乱文本中提取字段、分类工单或为管道的下一步生成结构化数据的方法。仍然需要在代码中验证结果,并在提示词中告诉模型你期望哪些键。
函数调用
你在 tools 数组中描述函数。模型可能会返回一个调用其中某个函数的请求,并填入参数。你的代码运行该函数并将结果作为带有 role: "tool" 的消息发回。模型本身从不执行任何操作。它只请求,由你决定实际运行什么。这是读取文件并运行测试的代码代理背后的机制。
采样控制
temperature、top_p、stop、seed 以及重复惩罚会被透传。低 temperature 为代码和提取提供更稳定的答案。较高的值提供更多样的文本。
托管 API 或自行运行模型
API 的替代方案是在自己的硬件上运行开放权重模型。这是一个合理的选择,诚实地讨论何时它更胜一筹是值得的。
| 问题 | 托管 API | 自托管 |
|---|---|---|
| 前期成本 | 无,你按 token 付费 | GPU 购买或租赁 |
| 设置时间 | 分钟 | 数小时至数天 |
| 扩展 | 受限于你密钥的速率限制 | 受限于你的硬件 |
| 数据离开你的机器 | 是的,发送给提供商 | 否 |
| 空闲成本 | 零 | 即使没有运行,你仍需付费 |
如果你每天发送数千个请求,或者使用量具有突发性,按 token 计费通常是更简单的方案。如果你有稳定的高负载,并且有严格规则禁止将文本发送给任何第三方,本地托管可能更合适。许多团队会先在 API 上验证想法,之后再重新考虑这个问题。
限制、错误和良好习惯
每个 API 都有各自的限制,尽早了解这些限制可以节省调试时间。在此服务中,完整密钥允许 8 个并发请求和每分钟 300 个请求。试用密钥允许 2 个并发请求和每分钟 60 个请求。最大请求体为 8 MB。流式请求在流结束前会占用其并发槽位,这常导致用户打开多个流却忘记关闭它们。
超出限制会返回 HTTP 429。错误代码 rate_limited 表示每分钟请求过多,concurrency 表示同时请求过多。带有 Retry-After: 5 头的 429 响应表示暂时过载。在所有这三种情况下,正确的做法是等待并退避重试,而不是频繁冲击接口。
- 从响应头中读取
X-RateLimit-Limit-Requests和X-RateLimit-Limit-Concurrency以查看你的上限,并读取X-Balance-USD以监控你的额度。 - 每次调用时记录
X-Request-Id。这会使支持问题的回答快得多。 - 设置合理的超时时间和对话长度上限,以防止失控循环消耗你的余额。
- 在聊天填满上下文窗口之前,截断旧的对话轮次。
失败或被拒绝的请求不会在此 API 上收费,且额度不会过期,因此测试中的错误成本很低。
开始使用此 API
此服务是一个托管的、与 OpenAI 兼容的文本 API,用于一个开放权重模型,由独立提供商运营,并针对合法成人用途下的无内容拒绝回答进行了优化。它仅支持文本:不支持图像、音频、嵌入或微调。它不是任何模型供应商的官方 API。提示词不用于训练。
新用户使用 Google 或邮箱和密码注册后,可在 API 密钥页面一键领取 $0.50 的免费试用额度。无需绑定卡片,有效期 7 天。之后你可以充值 $20 至 $500 之间的任意金额,充值 $50 起赠 5%,$100 起赠 10%,$200 起赠 15%。支持银行卡(Visa、Mastercard、Apple Pay、Google Pay)或加密货币(TRC20 链上的 USDT、Base 链上的 USDC)支付。
步骤很简单:创建你的 API 密钥,遵循文档中的 快速入门指南,并运行上面的 Python 代码片段。如果你的主要用途是编程辅助,用于编程代理的无审查模型页面对此案例有更详细的介绍。
更多指南
问答
LLM API 与聊天机器人相同吗?
不是。聊天机器人是一个带有界面的应用程序。LLM API 是此类应用程序背后的服务,你可以从自己的代码中调用它来构建你想要的界面或工作流。
使用 LLM API 需要懂机器学习吗?
不需要。如果你能发送 HTTP 请求或使用 SDK,你就可以使用 LLM API。你需要理解提示词和 token,但不需要了解模型的训练方式。
什么是“与 OpenAI 兼容”?
这意味着 API 接受与 OpenAI 聊天接口相同的请求格式。更改 Base URL 和密钥后,现有的 OpenAI SDK 和工具即可使用。
LLM API 的成本是多少?
提供商通常按每百万 token 收费,输入和输出有单独的费率。此处为每 1M 输入 token $0.15,每 1M 输出 token $0.50,从预付额度中扣除,无订阅费用。
我的数据会被用于训练模型吗?
在此服务中,提示词不用于训练。对于任何其他提供商,在发送敏感文本前请阅读其数据政策。
只差一张表单,即可获得密钥
创建账户,复制密钥,更改Base URL。这就是全部设置。
获取 API 密钥