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

要点
- 该接口遵循 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,这是将其指向任何兼容提供商的方法。确切菜单名称因版本而异,因此请遵循思路而非标签。
- 打开 Cursor 设置并找到模型部分。
- 将你的密钥粘贴到 OpenAI API 密钥字段中。
- 启用覆盖 OpenAI 基础 URL 的选项,并输入
https://api.nofilterai.cc/v1。 - 添加名为
uncensored的自定义模型,并在聊天面板中选择它。 - 在尝试跨多个文件进行编辑之前,发送一条小型测试消息。
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,500 | 500 | $0.000225 + $0.00025 = $0.000475 |
| 审查带有测试的模块 | 30,000 | 2,000 | $0.0045 + $0.001 = $0.0055 |
| 每天 200 条此类评价 | 6,000,000 | 400,000 | $0.90 + $0.20 = $1.10 |
| 整个窗口作为输入,一次请求 | 100,000 | 0 | $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。这就是全部设置。