RU ▾
Получить API-ключ

AI-кодер без фильтров: использование в Cursor и Python

Некоторые запросы на код получают отказ или метку предупреждения от популярных ассистентов: инструменты безопасности, скрейперы, реверс-инжиниринг, описания эксплойтов для вашей собственной лаборатории. Вот как подключить модель без цензуры к редактору и скриптам, и чего от неё ожидать.

Обновлено

Изометрический терминал с блоками кода, стекающими в связанные кубы, иллюстрирующий API без цензуры для программирования

Ключевые моменты

  • Эндпоинт использует формат чата OpenAI, поэтому редакторы и фреймворки, принимающие пользовательский базовый URL, могут его использовать.
  • Поддерживаются вызов функций, JSON-режим и потоковая передача, что покрывает большинство сценариев для кодовых агентов.
  • Окно в 100 000 токенов позволяет поместить большой фрагмент репозитория в один запрос.
  • Это общая модель, а не специализированная для кода, поэтому сначала протестируйте её на своих задачах.

Что такое кодер без фильтров и чем он не является

AI-кодер без фильтров — это языковая модель, которая отвечает на запросы по программированию, не сомневаясь в ваших причинах. Если вы пишете сканер портов для сети, которой владеете, декомпилируете устаревший бинарный файл, исходный код которого вы потеряли, или создаёте скрейпер, имитирующий браузер, вы получаете код, а не абзац об ответственном использовании.

Важно точно понимать, что представляет собой этот сервис. Это одна модель с открытыми весами, настроенная на ответы без отказов по контенту для законного использования взрослыми, от независимого провайдера. Это не официальный API какого-либо крупного вендора и не роутер, выбирающий между моделями. Идентификатор модели — 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 позволяет повторить запуск при сравнении промптов. Тот же запрос из оболочки выглядит так.

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 позволяет переопределить базовый URL OpenAI в настройках моделей, так вы направляете его к любому совместимого провайдера. Точные названия меню меняются между версиями, поэтому следуйте идее, а не названиям.

  1. Откройте настройки Cursor и найдите раздел моделей.
  2. Вставьте свой ключ в поле ключа API OpenAI.
  3. Включите опцию переопределения базового URL OpenAI и введите https://api.nofilterai.cc/v1.
  4. Добавьте пользовательскую модель с именем uncensored и выберите её в панели чата.
  5. Отправьте небольшое тестовое сообщение, прежде чем пытаться редактировать несколько файлов.

Cursor и аналогичные редакторы могут использовать свои серверы для некоторых функций, и некоторые функции могут вообще не принимать пользовательские модели. Если функция не работает, проверьте, связана ли она с моделями самого вендора, а не предполагайте, что эндпоинт сломан. Чат с пользовательской моделью — это надёжная часть.

Другие инструменты, принимающие эндпоинт, совместимый с OpenAI, такие как Continue или Aider, используют те же три значения: базовый URL, ключ, имя модели.

Использование с LangChain

Класс ChatOpenAI в LangChain принимает аргумент 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. Параллельный агент, разветвляющий 10 вызовов инструментов, получит HTTP 429 с кодом concurrency для дополнительных вызовов. Ограничьте разветвление или повторите попытку с небольшой задержкой.

Вызов функций и 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)

Всегда проверяйте аргументы перед выполнением того, что запросит модель. Путь, строка оболочки или URL, полученные от модели, — это ненадежный ввод, независимо от того, какая модель его выдала.

Для вывода, который должен парситься вашим кодом, установите response_format в {"type":"json_object"} и укажите в промпте ожидаемые ключи. JSON-режим делает ответ валидным JSON, но проверки вашей схемы все равно должны быть в вашем коде.

Размер контекста и стоимость вызова для кода

Контекстное окно составляет 100 000 токенов для промпта и ответа. Как грубый ориентир, это вмещает множество исходных файлов одновременно, так что вы можете вставить модуль, его тесты и трассировку сбоев за один раз, а не сводить их в резюме. Большие промпты обходятся дороже, поэтому отправляйте только то, что нужно для вопроса.

Цена составляет $0.15 за 1M входных токенов и $0.50 за 1M выходных токенов. Примеры:

ЗапросВходныеВыходныеСтоимость
Объяснение функции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 любой целой суммой, с бонусом 5% от $50, 10% от $100 и 15% от $200. Оплата только криптовалютой: USDT в сети TRC20 или USDC в сети Base. См. страницу цен для текущих условий.

Промпт для ревью, работающий на реальных изменениях

Одним из лучших применений большого окна является ревью. Вместо вопроса «хороший ли этот код?», вставьте diff и файлы, которые он затрагивает, затем запросите выводы в фиксированной форме. Запросите нумерованный список, в котором каждый пункт указывает файл, строку, проблему и однострочное исправление, и скажите, что пустой список является допустимым ответом. Эта последняя инструкция важна: модель, которой сказали найти проблемы, иногда изобретает их, чтобы угодить вам.

Держите температуру около 0.2 для ревью, потому что вы хотите получать одинаковый результат при повторном запуске. Если вы запускаете ревью в задаче непрерывной интеграции, установите seed и логируйте заголовок X-Request-Id, чтобы позже можно было отследить удивительный результат. Сочетайте это с JSON-режимом, когда скрипту нужно отправить результаты куда-либо, и запрашивайте ключи, такие как file, line, severity и fix.

Когда ответ неверный или пустой

Три проблемы покрывают большинство неудачных запусков. Если вы получаете 401, ключ отсутствует или заголовок не Authorization: Bearer с вашим ключом. Если редактор говорит, что модель не существует, проверьте, что имя точно uncensored и что базовый URL заканчивается на /v1 без дополнительных путей. Если код компилируется, но ведёт себя неправильно, дайте модели вывод с ошибкой и попросите объяснить её, прежде чем переписывать что-либо; исправления, сделанные после диагноза, как правило, меньше и безопаснее, чем исправления вслепую.

Где она подходит и где нет

Используйте эндпоинт без цензуры для запросов, которые другие ассистенты отклоняют или смягчают, и оставьте ваш обычный инструмент для остального, если он работает лучше для вас. Многие разработчики запускают две модели бок о бок и отправляют каждую задачу той, которая отвечает на неё чисто.

  • Хорошее применение: работа в лаборатории безопасности на системах, которыми вы владеете, скрипты для скрейпинга и автоматизации, описания анализа вредоносного ПО для защитников, заметки по реверс-инжинирингу, странные задачи по обработке данных.
  • Будьте осторожны: сгенерированный код может содержать ошибки или выдуманные функции библиотек. Запустите его, протестируйте, прочитайте.
  • Не предлагается: генерация изображений или аудио, эмбеддинги и дообучение. Это только текстовый чат-эндпоинт.
  • Конфиденциальность: промпты не используются для обучения, что важно, если вы вставляете проприетарный код.

Лимит тела запроса составляет 8 МБ на запрос, что значительно превышает возможности контекстного окна. Заголовки ответа включают X-Request-Id, X-Balance-USD и значения лимитов запросов, что полезно для логов. В документации перечислены все параметры, которые передаются дальше.

Вопросы и ответы

Является ли AI-кодер без фильтров лучше в программировании, чем другие модели?

Не автоматически. Меньше отказов меняет то, на что он ответит, а не то, насколько хорошо он программирует. Протестируйте его на своих задачах, прежде чем полагаться на него.

Какие редакторы и фреймворки работают с ним?

Любые, которые позволяют задать пользовательский базовый URL, совместимый с OpenAI, ключ и имя модели. Cursor, LangChain и официальные SDK OpenAI являются распространёнными примерами.

Поддерживает ли он вызов функций?

Да. Он принимает инструменты и tool_choice, возвращает tool_calls (даже при потоковой передаче) и принимает результаты в виде сообщений с role: tool. Также доступен JSON-режим.

Что происходит, когда я достигаю лимита запросов?

Вы получаете HTTP 429 с кодом ошибки rate_limited или concurrency. При временной перегрузке ответ 429 содержит заголовок Retry-After длительностью 5 секунд.

Ваш ключ — в одной форме от вас

Создайте учётную запись, скопируйте ключ, измените базовый URL. Вот и вся настройка.