中文 ▾

从试用额度开始

邮箱和密码,密钥立即显示在屏幕上。

https://api.uncensoredllmhub.com/v1

Uncensored LLM Hub:一个接口,支持对话与智能体

Uncensored LLM Hub 是一个托管的、兼容 OpenAI 的文本 API,提供单一模型和单一基础 URL。本页介绍如何在其之上为聊天应用和智能体进行实用设置。

更新于

中央发光枢纽通过光流连接到聊天窗口、智能体和文档

要点

  • 一个基础 URL 和一个模型 ID(uncensored)可与任何 OpenAI SDK 或客户端配合使用。
  • 支持流式输出、函数调用和 JSON 模式,拥有 100,000 token 的上下文窗口。
  • 完整密钥允许 8 个并发请求和每分钟 300 个请求,因此请为繁忙的应用程序规划一个小队列。
  • 计费为每 1M 输入 token $0.15,每 1M 输出 token $0.50,从预付额度中扣除,且提示词不用于训练。

从一个接口获得的内容

人们寻找 Uncensored LLM Hub,是因为他们想要一个在合法成人用途下不对内容进行拒绝的模型,但不想运行 GPU。该服务是一个普通的 HTTPS 接口。你将 OpenAI 客户端指向 https://api.uncensoredllmhub.com/v1,发送模型 ID uncensored,并使用 Authorization: Bearer YOUR_KEY 进行身份验证。有两种方法:POST /v1/chat/completions 用于对话,GET /v1/models 用于列出。

清楚该接口背后的情况很有帮助。它是一个开放权重模型,由独立提供商运行,并经过调整以跳过内容拒绝。它不是任何大型供应商的官方接口,也不是在模型之间进行选择的路由。它仅处理文本:不支持图像、音频、视频、嵌入或微调。一条硬性规则毫无例外地适用:禁止涉及未成年人的性内容。

这种狭窄的范围正是其要点。一个稳定的接口易于构建。下面的章节展示了一个小型聊天后端,然后是智能体循环,以及你需要设计应对的限制。

步骤 1:连接现有客户端

由于 API 遵循 OpenAI 格式,你很少需要编写新的客户端代码。打开你的 SDK 或工具,更改 Base URL 和密钥,并将模型设置为 uncensored。首先在 API 密钥页面(Google,或电子邮件和密码)注册,然后点击一次领取 $0.50 的免费试用额度。该试用不需要信用卡,有效期为 7 天,每人限领一次。

Python 中的最小请求:

from openai import OpenAI

client = OpenAI(
    base_url="https://api.uncensoredllmhub.com/v1",
    api_key="YOUR_API_KEY",
)

resp = client.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": "You are a concise assistant for a writing tool."},
        {"role": "user", "content": "Give me three opening lines for a mystery set on a ferry."},
    ],
    temperature=0.9,
    top_p=0.95,
)
print(resp.choices[0].message.content)

temperature、top_p、stop、seed 等采样设置以及频率和存在惩罚会传递给模型,因此你从其他提供商处熟悉的旋钮以相同方式工作。相同的调用也适用于接受自定义 OpenAI 兼容端点的工具,例如 SillyTavern 或 Open WebUI:粘贴基础 URL,添加密钥,手动输入模型 ID。

步骤 2:将答案流式输出到聊天界面

如果用户盯着空白框直到完整答案到达,聊天应用会感觉缓慢。流式输出解决了这个问题。设置 stream: true,API 将以服务器发送事件的形式发送答案,并在流结束时报告使用情况。这是一个 Node 版本,它在令牌到达时转发令牌:

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.uncensoredllmhub.com/v1",
  apiKey: process.env.API_KEY,
});

export async function streamReply(history, onToken, signal) {
  const stream = await client.chat.completions.create(
    { model: "uncensored", messages: history, stream: true },
    { signal }
  );
  let text = "";
  for await (const chunk of stream) {
    const piece = chunk.choices[0]?.delta?.content ?? "";
    if (piece) {
      text += piece;
      onToken(piece);
    }
  }
  return text;
}

两个习惯可以省去以后的麻烦。首先,始终传递一个中止信号,并在用户关闭标签页或按下停止时取消它。流式请求会占用其并发槽位,直到流结束,因此废弃的流会消耗你的额度。其次,保留你组装的完整文本,因为你会将其作为助手消息追加到历史记录中,用于下一轮对话。

如果你在流式传输时在前端看到模糊错误,我们关于诊断流式传输故障的说明涵盖了常见原因,例如错误的基础 URL、缓冲事件的代理以及两个 429 代码。

步骤 3:刻意使用长上下文

上下文窗口为 100,000 token,由提示词和补全共享。对于故事编写工具、角色聊天或文档助手,这为长历史记录、大型系统提示词和参考资料提供了同时存在的空间。你不需要设置 max_tokens;补全可以使用剩余的任何内容。

以这些价格尝试长上下文很便宜。用输入填满整个窗口,针对 100,000 个输入 token 的成本为 0.1 × $0.15 = $0.015。加上 2,000 token 的回答(0.002 × $0.50 = $0.001),一个几乎满额的调用成本为 $0.016。你仍然需要管理窗口,原因有三:延迟随提示词大小增长,每轮对话都会重新发送历史记录,因此成本会在会话中累积,而且很长的历史记录会稀释顶部的指令。

一个简单的策略效果很好:

  1. 将系统提示词和任何固定参考文本放在开头。
  2. 保留最近的轮次原文。
  3. 当历史记录超过你选择的阈值(例如 60,000 token)时,要求模型将最老的部分总结为简短笔记,并用它替换这些对话轮次。
  4. 从每个响应中读取 usage.prompt_tokens 以了解下一个请求的大小,而不是通过字符进行估算。

步骤 4:智能体的工具和结构化输出

智能体需要从模型获得两样东西:一种调用函数的方法,以及你可以解析的输出。两者都支持。工具调用使用标准的 tools 和 tool_choice 参数,工具调用可以流式输出,结果以 role: "tool" 消息返回。单次交互如下所示:

import json
from openai import OpenAI

client = OpenAI(
    base_url="https://api.uncensoredllmhub.com/v1",
    api_key="YOUR_API_KEY",
)

tools = [{
    "type": "function",
    "function": {
        "name": "lookup_order",
        "description": "Find an order by its number.",
        "parameters": {
            "type": "object",
            "properties": {"order_id": {"type": "string"}},
            "required": ["order_id"],
        },
    },
}]

messages = [{"role": "user", "content": "Where is order A-1042?"}]
first = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
msg = first.choices[0].message

if msg.tool_calls:
    call = msg.tool_calls[0]
    args = json.loads(call.function.arguments)
    result = {"order_id": args["order_id"], "status": "shipped"}  # your real lookup goes here
    messages.append(msg)
    messages.append({"role": "tool", "tool_call_id": call.id, "content": json.dumps(result)})
    final = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
    print(final.choices[0].message.content)

在执行任何具有副作用的操作之前,始终验证参数。模型可能会产生格式错误或意外的值,而你的代码是最后一道防线。

对于不带工具的直接结构化输出,请使用 JSON 模式,将 response_format 设置为 {"type": "json_object"}。在提示词中描述你想要的形状,并在 try 块中解析回复,以便错误响应触发重试而不是崩溃。

curl https://api.uncensoredllmhub.com/v1/chat/completions   -H "Authorization: Bearer $API_KEY"   -H "Content-Type: application/json"   -d '{
    "model": "uncensored",
    "response_format": {"type": "json_object"},
    "messages": [
      {"role": "system", "content": "Reply with JSON: {"title": string, "tags": [string]}"},
      {"role": "user", "content": "Describe a noir story set in a rainy port city."}
    ]
  }'

需考虑的限制

完整密钥允许 8 个并发请求和每分钟 300 个请求。试用密钥允许 2 个和 60 个。请求体最多可达 8 MB。每个响应都包含 X-Request-Id、X-Balance-USD、X-RateLimit-Limit-Requests 和 X-RateLimit-Limit-Concurrency,这些很有用,可用于记录日志。

当你超过限制时,API 返回 HTTP 429。代码为 rate_limited 表示每分钟请求过多,concurrency 表示同时请求过多。临时过载也返回 429,带有 Retry-After: 5。对于多用户应用,在 API 前面放置一个小队列:一个大小低于并发限制的信号量和一个尊重 Retry-After 的重试。对于将输出扇出到并行工具调用的智能体,将扇出限制在相同的数量。

完整的参数列表和错误格式在 API 文档 中。

成本、充值和数据处理

定价为每 1M 输入 token $0.15,每 1M 输出 token $0.50,从预付额度中扣除。没有订阅,额度永不过期,失败或被拒绝的请求不收费。一次包含 1,500 个输入和 500 个输出的聊天轮次成本为 0.0015 × $0.15 + 0.0005 × $0.50 = $0.000225 + $0.00025 = $0.000475,因此 $20 的额度可以覆盖约 42,000 次此类轮次。

你可以充值任意金额,从 $20 到 $500。赠送额度为:$50 起 +5%,$100 起 +10%,$200 起 +15%。支持银行卡(Visa、Mastercard、Apple Pay、Google Pay)或加密货币(TRC20 上的 USDT,Base 上的 USDC)支付。定价页面 有当前表格。

关于数据:提示词不用于训练。阅读 隐私政策 获取完整措辞。你需对使用模型构建的内容负责,该服务仅供成年用户合法使用。

问答

我应该使用哪个模型 ID?

在每个请求中使用 uncensored 作为模型 ID。将 Base URL 设置为 https://api.uncensoredllmhub.com/v1,并将 API 密钥作为 Bearer token 发送。

它是否兼容我现有的 OpenAI 代码?

是的。只要更改 base URL 和密钥,任何 OpenAI SDK 或客户端均可使用。支持聊天补全、流式输出、工具调用和 JSON 模式。

它可以生成图像或嵌入向量吗?

不支持。这是一个纯文本 API,不支持图像、音频或视频生成,也不支持嵌入和微调。

对话可以有多长?

上下文窗口为 100,000 token,由提示词和回答共享。请求体最多可达 8 MB。

只差一张表单,即可获得密钥

创建账户,复制密钥,更改 base URL。这就是全部设置。

获取 API 密钥

https://api.uncensoredllmhub.com/v1