RU ▾
2026-10-30gptsemfiltro.comuncensored
Gptsemfiltro

LLM API без цензуры, совместимый с OpenAI

Получить ключ

Документация API ChatGPT: краткая справка и первые вызовы

Большинство чат-API используют формат запроса, популяризированный API ChatGPT. На этой странице — краткая справка по совместимому эндпоинту на этом сайте с примерами для копирования.

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

Итоги

  1. Базовый URL https://api.gptsemfiltro.com/v1, аутентификация по bearer-токену, ID модели uncensored.
  2. Три метода: chat completions, responses и список моделей; для баланса есть отдельные эндпоинты.
  3. Поддерживаются потоковая передача, вызов инструментов и JSON-режим; контекст составляет 100 000 токенов.
  4. Ошибки 429 содержат код: rate_limited или concurrency.

Что охватывает эта страница

Если вы искали документацию API ChatGPT, вам может подойти официальная документация OpenAI для моделей OpenAI. Эта страница — другое: рабочая справка по API, совместимому с OpenAI, размещённому на этом сайте. Она использует одну модель с открытыми весами, uncensored, настроенную на ответы без отказов по контенту для законного использования взрослыми. Это не официальный API OpenAI или другого вендора.

Форматы запросов и ответов соответствуют привычному формату OpenAI, поэтому официальные SDK и большинство инструментов работают после изменения базового URL и ключа. Полная справка находится в документации API; эта страница даёт краткую версию с примерами, которые можно выполнить.

Основы подключения и первый вызов

Основы подключения

ПунктЗначение
Базовый URLhttps://api.gptsemfiltro.com/v1
АвторизацияAuthorization: Bearer YOUR_KEY
ID моделиuncensored
Эндпоинт чатаPOST /v1/chat/completions
Эндпоинт responsesPOST /v1/responses
Список моделейGET /v1/models
БалансGET /v1/balance или GET /v1/dashboard/billing/credit_grants
Максимальный размер тела запроса8 МБ
Контекстное окно100 000 токенов, промпт плюс генерация

Получите ключ на странице API-ключ. Новые пользователи могут получить пробный баланс $0,50 одним кликом; он действителен в течение 7 дней и не требует оплаты. Вы можете создать новый ключ в любое время, а аккаунты с пополненным балансом могут хранить до 5 ключей, присваивать им метки и отзывать любой из них.

Ваш первый вызов

curl https://api.gptsemfiltro.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [
      {"role": "system", "content": "You answer in plain language."},
      {"role": "user", "content": "What is a context window?"}
    ],
    "temperature": 0.7
  }'
from openai import OpenAI

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

resp = client.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": "You answer in plain language."},
        {"role": "user", "content": "What is a context window?"},
    ],
)
print(resp.choices[0].message.content)
print(resp.usage)

Ответ содержит choices[0].message.content и объект usage с подсчётом токенов промпта и ответа.

Параметры запроса

Параметры, которые вы будете использовать чаще всего:

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

Роли работают так же, как в формате OpenAI. Сообщение system задаёт поведение для всего чата, сообщения user содержат ввод пользователя, сообщения assistant содержат предыдущие ответы, а сообщения tool возвращают результаты функций. API не сохраняет память между вызовами, поэтому каждый запрос должен включать историю, которую вы хотите показать модели. Промпт и ответ делят контекстное окно на 100 000 токенов, поэтому длинная история оставляет меньше места для ответа.

Потоковая передача, вызов инструментов и JSON-режим

Потоковая передача

Установите stream в значение true и читайте события по мере их поступления. Каждый чанк содержит небольшой прирост текста, а данные об использовании поступают в конце.

import OpenAI from "openai";

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

const stream = await client.chat.completions.create({
  model: "uncensored",
  messages: [{ role: "user", content: "List five uses of a context window." }],
  stream: true,
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}

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

Вызов инструментов и JSON-режим

Объявляйте функции с помощью tools. Когда модели нужна одна из них, в ответе будет tool_calls вместо текста. Вы запускаете функцию и отправляете результат обратно как сообщение с role: "tool".

import json
from openai import OpenAI

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

tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Get the weather for a city",
        "parameters": {
            "type": "object",
            "properties": {"city": {"type": "string"}},
            "required": ["city"],
        },
    },
}]

messages = [{"role": "user", "content": "What is the weather in Lisbon?"}]
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": json.dumps({"city": "Lisbon", "temp_c": 21}),
})
final = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
print(final.choices[0].message.content)

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

Лимиты, ошибки и заголовки

ЛимитПолный ключПробный ключ
Параллельные запросы82
Запросов в минуту30060
Размер тела запроса8 МБ8 МБ

При превышении лимита API возвращает HTTP 429. Код ошибки rate_limited означает слишком много запросов в минуту; concurrency означает слишком много одновременно. При временной перегрузке вы также получите 429 с заголовком Retry-After: 5. Неудачные или отклонённые запросы не оплачиваются.

Полезные заголовки ответа: X-Request-Id (цитируйте его при обращении в поддержку), X-Balance-USD, X-RateLimit-Limit-Requests и X-RateLimit-Limit-Concurrency.

Небольшой помощник для повторных попыток на Node.js, который ждёт время из Retry-After и увеличивает задержку при каждой попытке:

async function chat(messages, tries = 4) {
  for (let n = 0; n < tries; n++) {
    const res = await fetch("https://api.gptsemfiltro.com/v1/chat/completions", {
      method: "POST",
      headers: {
        "Authorization": "Bearer " + process.env.API_KEY,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({ model: "uncensored", messages: messages }),
    });
    if (res.status === 429) {
      const wait = Number(res.headers.get("Retry-After") || 5);
      await new Promise(function (r) { setTimeout(r, wait * 1000 * (n + 1)); });
      continue;
    }
    return res.json();
  }
  throw new Error("still rate limited");
}

Перенос существующего кода и проверка баланса

Перенос существующего кода на этот эндпоинт

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

  1. Базовый URL становится https://api.gptsemfiltro.com/v1.
  2. Ключ становится тем, что указан на странице API-ключ.
  3. Модель становится uncensored.

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

Эндпоинт Responses также доступен для клиентов, предпочитающих этот формат:

curl https://api.gptsemfiltro.com/v1/responses \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "uncensored", "input": "Summarise what a context window is in one sentence."}'

Протестируйте его перед запуском, так как разные модели по-разному реагируют на один и тот же промпт. Отказы, тон и длина могут меняться, поэтому перезапустите промпты, которые вас интересуют.

Проверка баланса из кода

Баланс доступен тремя способами. В каждом ответе есть заголовок X-Balance-USD. Вы также можете вызвать GET /v1/balance или запрос в стиле API OpenAI GET /v1/dashboard/billing/credit_grants, который уже поддерживается некоторыми дашбордами.

curl https://api.gptsemfiltro.com/v1/balance \
  -H "Authorization: Bearer YOUR_KEY"

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

Тарификация вкратце

Ввод стоит $0,15 за 1M токенов, вывод — $0,50 за 1M токенов, списание происходит с предоплаченного баланса. Пример: 3 000 входных и 600 выходных токенов стоят 3 000 x $0,15 / 1M + 600 x $0,50 / 1M = $0,00045 + $0,0003 = $0,00075. Пополнения — целыми суммами от $20 до $500 с бонусами +5% от $50, +10% от $100 и +15% от $200, оплата в USDT (TRC20) или USDC (Base). Подробнее на странице с ценами. Промпты не используются для обучения.

Чек-лист по устранению неполадок при первой интеграции

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

  1. Статус 401. Ключ отсутствует или введён с ошибкой. Выведите заголовок, который на самом деле отправляет ваш клиент, и сравните его с Authorization: Bearer YOUR_KEY. Если ключ был вставлен в публичное место, пересоздайте его на странице API-ключей; старый ключ перестаёт работать сразу.
  2. Статус 404. Путь неверный. Базовый URL заканчивается на /v1, а SDK добавляет /chat/completions самостоятельно. Если вы вызываете API через обычный HTTP, укажите полный путь.
  3. Ошибка, связанная с моделью. Единственный идентификатор модели — uncensored. Имя, скопированное из документации другого провайдера, не совпадёт. GET /v1/models перечисляет, что может использовать ваш ключ.
  4. Очень большой запрос завершается ошибкой. Лимит тела запроса — 8 МБ. Длинные истории лучше обрезать или сжимать задолго до достижения этого размера, а окно в 100 000 токенов общее для промпта и ответа.
  5. Периодические 429. Прочитайте код ошибки. concurrency означает слишком много вызовов одновременно, поэтому снизьте количество воркеров. rate_limited означает слишком много запросов в минуту. Заголовок Retry-After: 5 означает временную перегрузку, и короткая задержка исправит ситуацию.
  6. Ответы обрываются. Если вы установили max_tokens, ответ останавливается там, а finish_reason принимает значение length. Увеличьте лимит или уберите его.

Сохраняйте значение X-Request-Id из любого вызова, который вы не можете объяснить. Это самый быстрый способ указать на один конкретный запрос при обращении в поддержку.

Часто задаваемые вопросы

Это официальный API ChatGPT?

Нет. Это независимая размещённая модель с открытыми весами с интерфейсом, совместимым с OpenAI. Она не управляется компанией OpenAI.

Какие эндпоинты поддерживаются?

POST /v1/chat/completions, POST /v1/responses и GET /v1/models, а также эндпоинты баланса в /v1/balance и /v1/dashboard/billing/credit_grants.

Мне нужен другой SDK?

Нет. Официальные SDK для Python и Node от OpenAI работают после изменения базового URL, ключа и идентификатора модели.

Как проверить оставшийся баланс?

Прочитайте заголовок X-Balance-USD в любом ответе или вызовите GET /v1/balance.

Получите API-ключ

Зарегистрируйтесь, скопируйте ключ и обновите базовый URL. Настройка завершена.

Получить ключ