ChatGPT API 文档:快速参考与首次调用
大多数聊天 API 都采用 ChatGPT API 普及的请求格式。本页是该站点兼容接口的简短参考,附带可复制粘贴的示例。
最后更新

总结
- 基础 URL https://api.gptsemfiltro.com/v1, Bearer 令牌认证,模型 ID 为 uncensored。
- 三种方法:聊天补全、响应和模型列表;余额有独立的接口。
- 支持流式输出、函数调用和 JSON 模式;上下文为 100,000 个 token。
- 429 错误会携带代码:rate_limited 或 concurrency。
本页涵盖内容
如果你搜索的是 chatgpt api documentation,你可能需要 OpenAI 为其自有模型提供的官方文档。本页内容不同:它是本站托管的 OpenAI 兼容 API 的工作参考。该接口运行一个开放权重模型 uncensored,针对合法成人用途进行了优化,能够不拒绝内容。它并非 OpenAI 或其他厂商的官方 API。
请求和响应的结构遵循熟悉的 OpenAI 格式,因此更改基础 URL 和密钥后,官方 SDK 和大多数工具均可使用。完整参考位于 API 文档;本页提供带有可运行示例的快速版本。
连接基础与首次调用
连接基础
| 项目 | 说明 |
|---|---|
| Base URL | https://api.gptsemfiltro.com/v1 |
| 认证 | Authorization: Bearer YOUR_KEY |
| 模型 ID | uncensored |
| 聊天接口 | POST /v1/chat/completions |
| 响应接口 | POST /v1/responses |
| 模型列表 | GET /v1/models |
| 余额 | GET /v1/balance 或 GET /v1/dashboard/billing/credit_grants |
| 最大请求体 | 8 MB |
| 上下文窗口 | 100,000 个 token,提示词和补全总计 |
在 API 密钥页面 获取密钥。新用户可在此一键领取 $0.50 试用额度,有效期 7 天,无需付款。你可以随时重新生成密钥,已充值的账户最多可持有 5 个密钥,并可对其进行标记和撤销。
你的第一次调用
curl https://api.gptsemfiltro.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [
{"role": "system", "content": "You answer in plain language."},
{"role": "user", "content": "What is a context window?"}
],
"temperature": 0.7
}'
from openai import OpenAI
client = OpenAI(base_url="https://api.gptsemfiltro.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[
{"role": "system", "content": "You answer in plain language."},
{"role": "user", "content": "What is a context window?"},
],
)
print(resp.choices[0].message.content)
print(resp.usage)
回复包含 choices[0].message.content 和带有提示词及补全 token 计数的 usage 对象。
请求参数
您将使用的主要参数:
model:始终为uncensored。messages:包含role(system、user、assistant或tool)和content的对象列表。max_tokens:可选。如果省略,补全将使用剩余的 100,000-token 窗口。temperature、top_p、stop、seed、frequency_penalty、presence_penalty:透传给模型。stream:设置为true以启用服务器发送事件,用量将在末尾发送。tools和tool_choice:描述模型可能调用的函数。response_format:{"type": "json_object"}开启 JSON 模式。
不可用:图像、音频或视频生成、嵌入和微调。该服务仅处理文本。
角色用法与 OpenAI 格式一致。system 消息设置整个聊天的行为,user 消息携带用户输入,assistant 消息包含之前的回复,tool 消息返回函数结果。API 在调用之间不保留记忆,因此每次请求都必须包含你希望模型看到的对话历史。提示词和补全共享 100,000-token 窗口,这意味着长历史会减少回答的可用空间。
流式输出、工具调用和 JSON 模式
流式输出
设置 stream 为 true 并读取传入的事件。每个块包含文本增量,用量在末尾到达。
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.gptsemfiltro.com/v1",
apiKey: process.env.API_KEY,
});
const stream = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "List five uses of a context window." }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
流式请求会维持其并发槽位,直到流结束,因此请关闭不再需要的流。
工具调用和 JSON 模式
使用 tools 声明函数。当模型想要调用某个函数时,回复将包含 tool_calls 而非文本。你执行该函数并将结果作为 role: "tool" 的消息发回。
import json
from openai import OpenAI
client = OpenAI(base_url="https://api.gptsemfiltro.com/v1", api_key="YOUR_KEY")
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the weather for a city",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
}]
messages = [{"role": "user", "content": "What is the weather in Lisbon?"}]
first = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
call = first.choices[0].message.tool_calls[0]
messages.append(first.choices[0].message)
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": json.dumps({"city": "Lisbon", "temp_c": 21}),
})
final = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
print(final.choices[0].message.content)
在生产环境中,请在读取前检查 tool_calls 是否存在,因为模型可能会以纯文本形式回答。对于不使用工具的结构化输出,添加 "response_format": {"type": "json_object"} 并在提示词中说明你需要 JSON。
限制、错误和标头
| 限制 | 完整密钥 | 试用密钥 |
|---|---|---|
| 并发请求 | 8 | 2 |
| 每分钟请求数 | 300 | 60 |
| 正文大小 | 8 MB | 8 MB |
超出限制时,API 返回 HTTP 429。错误代码 rate_limited 表示每分钟请求过多;concurrency 表示同时请求过多。临时过载时也会收到 429,带有 Retry-After: 5 标头。失败或被拒绝的请求不收费。
有用的响应标头:X-Request-Id(联系 支持 时引用它)、X-Balance-USD、X-RateLimit-Limit-Requests 和 X-RateLimit-Limit-Concurrency。
Node 中的小型重试辅助函数,等待 Retry-After 中的时间,并在每次尝试时稍微增加退避时间:
async function chat(messages, tries = 4) {
for (let n = 0; n < tries; n++) {
const res = await fetch("https://api.gptsemfiltro.com/v1/chat/completions", {
method: "POST",
headers: {
"Authorization": "Bearer " + process.env.API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({ model: "uncensored", messages: messages }),
});
if (res.status === 429) {
const wait = Number(res.headers.get("Retry-After") || 5);
await new Promise(function (r) { setTimeout(r, wait * 1000 * (n + 1)); });
continue;
}
return res.json();
}
throw new Error("still rate limited");
}迁移现有代码和检查余额
将现有代码迁移到此接口
如果您的代码已经调用 OpenAI 风格的聊天接口,迁移工作很小。更改这三个值,其余保持不变:
- 基础 URL 变为
https://api.gptsemfiltro.com/v1。 - 密钥变为来自 API 密钥页面 的密钥。
- 模型变为
uncensored。
然后检查你的代码依赖项。任何基于文本且适合聊天的内容都可以迁移:系统提示词、历史、流式输出、工具调用和 JSON 模式。其他功能在此不存在。没有图像生成、音频或视频、嵌入和微调,因此调用这些路由的代码需要其他提供商。
Responses 接口也可用,适合偏好该格式的客户:
curl https://api.gptsemfiltro.com/v1/responses \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "uncensored", "input": "Summarise what a context window is in one sentence."}'
在发布前测试,因为不同的模型在同一提示词下表现不同。拒绝、语气和长度都可能发生变化,因此请重新运行您关心的提示词。
从代码中检查余额
余额有三种获取方式。每个响应都包含 X-Balance-USD 头信息。你也可以调用 GET /v1/balance,或者 OpenAI 风格的 GET /v1/dashboard/billing/credit_grants,部分仪表盘已经知道如何读取该格式。
curl https://api.gptsemfiltro.com/v1/balance \
-H "Authorization: Bearer YOUR_KEY"
一个实用的模式是在每次调用后读取该头信息并存储,当余额低于你设定的阈值时发出警报。由于额度是预付的且不会过期,余额低只是提示你需要充值,而不是截止日期。
定价一览
输入成本为每 1M token $0.15,输出成本为每 1M token $0.50,从预付额度中扣除。示例:3,000 个输入 token 和 600 个输出 token 的成本为 3,000 x $0.15 / 1M + 600 x $0.50 / 1M = $0.00045 + $0.0003 = $0.00075。充值金额为 $20 至 $500 的整数倍,并享有额外奖励:$50 起 +5%,$100 起 +10%,$200 起 +15%,支持通过 USDT (TRC20) 或 USDC (Base) 支付。更多详情见 定价页面。提示词不用于训练。
首次集成故障排除清单
大多数首次调用失败都源于少数几个原因。在怀疑服务之前,请按顺序排查。
- 状态 401。 密钥缺失或拼写错误。打印你的客户端实际发送的头信息,并与
Authorization: Bearer YOUR_KEY进行比较。如果密钥被粘贴到公共区域,请在 API 密钥页面 重新生成密钥;旧密钥将立即失效。 - 状态 404。 路径错误。基础 URL 以
/v1结尾,SDK 会自动添加/chat/completions。如果使用纯 HTTP 调用 API,请编写完整路径。 - 模型错误。 唯一的模型 ID 是
uncensored。从其他提供商文档复制的名称将不匹配。GET /v1/models列出了该密钥可用的模型。 - 请求过大导致失败。 请求体限制为 8 MB。长历史记录最好在接近该大小之前进行修剪或摘要,而且 100,000-token 窗口由提示词和补全共享。
- 间歇性 429。 读取错误代码。
concurrency表示并发请求过多,请降低你的工作线程数。rate_limited表示每分钟请求过多。Retry-After: 5头信息表示临时过载,短暂等待即可解决。 - 回复被截断。 如果你设置了
max_tokens,回复将在此处停止,且finish_reason显示为length。提高上限或移除该限制。
保留你无法解释的任何调用的 X-Request-Id 值。这是你在联系支持团队时定位特定请求的最快方式。
更多指南
常见问题
这是官方的 ChatGPT API 吗?
不是。这是一个独立托管的开放权重模型,提供 OpenAI 兼容的接口。它不由 OpenAI 运营。
支持哪些接口?
POST /v1/chat/completions、POST /v1/responses 和 GET /v1/models,以及 /v1/balance 和 /v1/dashboard/billing/credit_grants 处的余额接口。
我需要不同的 SDK 吗?
不是。官方 OpenAI 的 Python 和 Node.js SDK 在更改基础 URL、密钥和模型名称后即可使用。
如何检查剩余额度?
读取任何响应中的 X-Balance-USD 头信息,或调用 GET /v1/balance。
获取 API 密钥
注册,复制密钥,并更新你的基础 URL。设置完成。