SDK 兼容性和基础 URL 设置
通过将客户端指向我们的专用端点来连接现有客户端代码。此 openai compatible API 接受标准标头和 SDK 配置,无需更改代码。您只需更新基础 URL 并提供来自仪表板的 API 密钥即可。
https://api.openrouterratelimits.com/v1 是所有请求的单一入口点。身份验证使用大多数现代 LLM 库中标准的 Bearer token 方案。将您的密钥传递到 Authorization 用于验证您身份的 header。此设置适用于任何期望 OpenAI 风格接口的客户端,使厌倦了供应商锁定的团队能够即时迁移。
- 基础 URL:
https://api.openrouterratelimits.com/v1 - Auth 标头:
Authorization: Bearer YOUR_API_KEY - 模型 ID:
uncensored
带有 SSE 的流式响应
通过将 stream: true 在请求负载中。API 返回服务器发送事件(SSE)以实时传输 token。每个数据块包含生成的文本,直到最后一个数据块包含使用统计。此方法即使在长上下文窗口下也能保持 UI 响应灵敏。
流式传输非常适合对延迟敏感的聊天界面或角色扮演场景。你无需等待完整响应即可渲染文本。最后一个数据块始终包含用于准确计费的 token 计数。流式传输期间的错误仍会返回适当的 HTTP 状态码以便立即处理。
函数调用和 JSON 模式
使用结构化输出以实现可靠的数据提取或工具集成。启用 response_format 与 {"type": "json_object"} 以强制 JSON 合规性。此模式对于解析复杂的嵌套结构且无需额外清理逻辑至关重要。函数调用与标准文本生成并行工作,以支持动态代理工作流。
在 tools 数组并指定 tool_choice 用于严格强制执行。模型以标准的 OpenAI 格式返回函数调用。此功能支持在单个回合中执行单个和多个工具调用。用于构建能可靠与外部 API 或数据库交互的智能体。
管理令牌与参数
使用标准参数控制生成行为,例如 temperature, top_p,以及 stop. 上下文窗口支持提示和补全总共最多 100,000 token。这允许在单个请求中进行广泛的历史上下文或大型文档处理。
设置 max_tokens 限制输出长度,如果省略则默认为 2,048。该模型处理 presence_penalty 和 frequency_penalty 用于风格控制。Token 使用量根据实际的输入和输出数量计费。错误不消耗 token,确保对失败请求的公平计费。
了解每密钥的速率限制
每个 API 密钥支持每分钟 300 次请求,并发限制为 8 个同时请求。此限制适用于每个密钥,因此创建多个密钥可以线性扩展您的吞吐量。最大请求体大小为 8 MB,适合大多数用例的上下文窗口。
速率限制基于滑动窗口持续重置。如果超出限制,API 将返回 429 错误。升级您的预存余额以保持优先访问。与共享层级不同,我们的专用服务器不会受到邻居干扰的影响。监控您的使用仪表板以保持在限制范围内,从而获得一致的性能。
排查常见错误
通过检查 HTTP 状态码和响应主体来处理错误。401 错误表示 API 密钥无效或缺失。如果身份验证失败,请从仪表板重新生成密钥。402 错误表示您的预付费余额已耗尽;通过加密货币充值以恢复服务。
429 错误表示您已超过速率限制。降低请求频率或将工作负载拆分到多个密钥上。API 不会为这些错误收取 token 费用,因此重试不会损失余额。确保您的客户端库使用指数退避进行重试以提高鲁棒性。
cURL
curl https://api.openrouterratelimits.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Process one million logs"}]
}'Python
from openai import OpenAI
client = OpenAI(base_url="https://api.openrouterratelimits.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)Node.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.openrouterratelimits.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);流式传输
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)