中文 ▾
获取 API 密钥

无审查 AI 编程助手:在 Cursor 和 Python 中使用

一些代码请求会被主流助手拒绝或标记警告:安全工具、爬虫、逆向工程、你本地实验室的漏洞利用说明。以下是将无审查模型接入编辑器和脚本的方法,以及预期效果。

更新于

等距终端,代码块流入连接的立方体,展示无审查编程 API

要点

  • 该接口遵循 OpenAI 聊天格式,因此接受自定义基础 URL 的编辑器和框架均可使用它。
  • 支持函数调用、JSON 模式和流式输出,涵盖了大多数编程 Agent 模式。
  • 100,000 token 的上下文窗口允许在单个请求中包含代码库的很大一部分。
  • 它是一个通用模型,而非代码专用模型,因此请先用你自己的任务进行测试。

无审查编程助手是什么,不是什么

无审查 AI 编程助手是一种语言模型,它回答编程请求时不会质疑你的理由。如果你正在为你拥有的网络编写端口扫描器、反编译你丢失源码的旧二进制文件,或构建模仿浏览器的爬虫,你会得到代码,而不是一段关于负责任使用的文字。

准确了解该服务是什么很重要。它是一个开放权重模型,针对合法成人用途进行了调整,能够以无内容拒绝的方式回答,由独立提供商运营。它不是任何大型供应商的官方 API,也不是在多个模型之间进行选择的网关。模型 ID 为 uncensored。此处未提及基准测试分数,因为该网站未发布相关数据。拒绝率更低的模型并不自动意味着编程能力更好,因此请将第一周作为评估期。

合法使用由你负责。该工具消除了合法安全工作、研究和非典型工程工作的摩擦。它并非攻击非你拥有系统的许可证。

通过 Python 或 curl 调用

最简单的测试是单次请求。此 Python 脚本请求一个小工具并打印答案。

from openai import OpenAI

client = OpenAI(base_url="https://api.nofilterai.cc/v1", api_key="YOUR_KEY")

resp = client.chat.completions.create(
    model="uncensored",
    temperature=0.2,
    messages=[
        {"role": "system", "content": "You are a senior engineer. Reply with code first, then at most five lines of notes."},
        {"role": "user", "content": "Write a Python script that scans TCP ports 1-1024 on a host I own, using asyncio, with a 0.5 s timeout."},
    ],
)
print(resp.choices[0].message.content)

较低的温度适合代码。0.1 到 0.3 之间的值提供更稳定的输出,seed 允许你在比较提示词时重复运行。来自 shell 的相同请求如下所示。

curl https://api.nofilterai.cc/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "temperature": 0.2,
    "messages": [
      {"role": "user", "content": "Explain this regex and rewrite it without lookbehind: (?<=id=)\\d+"}
    ]
  }'

你可以通过 GET /v1/models 列出该接口提供的内容。从 密钥页面 获取密钥;$0.50 的一键试用额度足以完成数百次小型编程请求。

在 Cursor 中设置

Cursor 允许你在模型设置中覆盖 OpenAI 基础 URL,这是将其指向任何兼容提供商的方法。确切菜单名称因版本而异,因此请遵循思路而非标签。

  1. 打开 Cursor 设置并找到模型部分。
  2. 将你的密钥粘贴到 OpenAI API 密钥字段中。
  3. 启用覆盖 OpenAI 基础 URL 的选项,并输入 https://api.nofilterai.cc/v1。
  4. 添加名为uncensored的自定义模型,并在聊天面板中选择它。
  5. 在尝试跨多个文件进行编辑之前,发送一条小型测试消息。

Cursor 和类似编辑器可能为某些功能使用自己的服务器,并且某些功能可能根本不接受自定义模型。如果功能失败,请检查它是否绑定到供应商自己的模型,而不是假设接口不可用。使用自定义模型的聊天是可靠的部分。

接受 OpenAI 兼容接口的其他工具,如 Continue 或 Aider,使用相同的三个值:基础 URL、密钥、模型名称。

在 LangChain 中使用

LangChain 的ChatOpenAI类接受base_url参数,因此接口无需自定义包装即可即插即用。

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="uncensored",
    base_url="https://api.nofilterai.cc/v1",
    api_key="YOUR_KEY",
    temperature=0.2,
)

print(llm.invoke("Write a bash one-liner that lists the 10 largest files under /var/log.").content)

链、提示词模板和输出解析器的工作方式与遵循 OpenAI 模式的任何聊天模型相同。如果你构建智能体,请记住并发限制:完整密钥允许同时 8 个请求和每分钟 300 个请求,试用密钥允许 2 个和 60 个。扇出十个工具调用的并行智能体将对额外请求获得 HTTP 429 错误,代码为concurrency。限制扇出,或带短延迟重试。

Agent 的函数调用和 JSON 模式

编程智能体依赖于结构化输出。API 支持tools、tool_choice、流式tool_calls,以及作为role: "tool"消息发送的工具结果。以下是读取文件的函数的最小往返示例。

import json
from openai import OpenAI

client = OpenAI(base_url="https://api.nofilterai.cc/v1", api_key="YOUR_KEY")

tools = [{
    "type": "function",
    "function": {
        "name": "read_file",
        "description": "Read a UTF-8 text file from the project",
        "parameters": {
            "type": "object",
            "properties": {"path": {"type": "string"}},
            "required": ["path"],
        },
    },
}]

messages = [{"role": "user", "content": "Open main.py and tell me what it does."}]
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": open(json.loads(call.function.arguments)["path"]).read(),
})
final = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
print(final.choices[0].message.content)

在运行模型请求的任何操作之前,始终验证参数。来自模型的路径、shell 字符串或 URL 都是不受信任的输入,无论哪个模型生成的。

对于需要解析的输出,将response_format设置为{"type":"json_object"},并在提示词中说明你期望的键。JSON 模式使回复成为有效的 JSON,但你的模式检查仍应位于代码中。

上下文大小及编程请求成本

上下文窗口为 100,000 token,包括提示词和回复。作为粗略指南,这可以一次性容纳许多源文件,因此你可以一次性粘贴模块、其测试和失败的 traceback,而不是进行总结。更大的提示词成本更高,因此只发送问题所需的内容。

价格为每 1M 输入 token $0.15,每 1M 输出 token $0.50。示例:

请求输入输出成本
解释函数1,500500$0.000225 + $0.00025 = $0.000475
审查带有测试的模块30,0002,000$0.0045 + $0.001 = $0.0055
每天 200 条此类评价6,000,000400,000$0.90 + $0.20 = $1.10
整个窗口作为输入,一次请求100,0000$0.015

失败或被拒绝的请求不收费。余额为预付制,不会过期,充值金额从 20 美元到 500 美元,支持任意整数金额,50 美元起享 5% 奖励,100 美元起享 10% 奖励,200 美元起享 15% 奖励。仅支持加密货币支付:TRC20 上的 USDT 或 Base 上的 USDC。查看 定价页面 了解当前条款。

适用于真实代码差异的审查提示词

大上下文窗口的最佳用途之一是审查。与其问“这段代码好吗?”,不如粘贴差异及其涉及的文件,然后要求以固定格式提供发现结果。请求一个编号列表,其中每项命名文件、行号、问题和一行修复方案,并说明空列表是有效答案。最后一条指令很重要:被要求查找问题的模型有时会为了取悦你而编造问题。

审查时保持 temperature 接近 0.2,以便二次运行获得相同结果。若将审查放入持续集成任务,请设置 seed 并记录 X-Request-Id 头以便后续追踪异常结果。若脚本需发布结果,请结合 JSON 模式并请求 file、line、severity 和 fix 等键。

答案错误或为空时

大多数失败运行由三个问题引起。如果收到 401 错误,说明密钥缺失或请求头未设置为 Authorization: Bearer 后跟你的密钥。如果编辑器提示模型不存在,请检查名称是否完全为 uncensored,且基础 URL 以 /v1 结尾且无多余路径。如果代码编译但行为异常,请将失败输出提供给模型,要求其在重写之前先解释错误;诊断后的修复往往比盲目修复更小且更安全。

适用与不适用的场景

对于其他助手拒绝或模棱两可的请求,使用无审查接口,如果常用的工具对你来说效果更好,请保留它。许多开发者并行运行两个模型,并将每个任务发送给能清晰回答的那个。

  • 适用场景:在你拥有的系统上进行的实验室安全工作、爬取和自动化脚本、面向防御者的恶意软件分析报告、逆向工程笔记、特殊数据处理工作。
  • 注意:生成的代码可能包含错误或模型编造的库函数。运行它、测试它、阅读它。
  • 不提供:图片或音频生成、嵌入向量和微调。这只是一个文本聊天接口。
  • 隐私:提示词不会用于训练,如果你粘贴专有代码,这一点很重要。

每个请求的请求体限制为 8 MB,远大于上下文窗口能使用的量。响应头包含 X-Request-Id、X-Balance-USD 和速率限制值,这些对日志很有用。文档列出了所有透传的参数。

问答

无审查 AI 编程模型在编程方面比其他模型更好吗?

默认情况下并非如此。更少的拒绝行为会改变它会回答的内容,而不改变其编程能力。在依赖它之前,请先在你的任务上进行测试。

哪些编辑器和框架可以与之配合使用?

任何允许自定义 OpenAI 兼容基础 URL、密钥和模型名称的工具。Cursor、LangChain 和官方 OpenAI SDK 是常见示例。

支持函数调用吗?

是的。它接受 tools 和 tool_choice,返回 tool_calls(即使在流式输出时也会返回),并将结果作为 role: tool 的消息传入。JSON 模式也可用。

当我达到速率限制时会发生什么?

你会收到 HTTP 429 错误,错误代码为 rate_limited 或 concurrency。对于临时过载,429 错误会携带一个 5 秒的 Retry-After 头。

你只需填写一张表单即可获得密钥

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