Три значения
- Базовый URL
https://nokeep.ai/v1- Ключ API
sk-nokeep-test (free) or your sk-nokeep-… key- Модель
deepseek-v4.1-flash-uncensored
Официальные SDK OpenAI читают базовый URL и ключ из окружения, так что во многих проектах переключение вообще не требует правок кода:
export OPENAI_BASE_URL="https://nokeep.ai/v1"
export OPENAI_API_KEY="sk-nokeep-…"Затем замените имя модели там, где вы её вызываете. Все остальные строки остаются.
На Python, JavaScript и curl
import os
from openai import OpenAI
client = OpenAI(
base_url="https://nokeep.ai/v1",
api_key=os.environ["NOKEEP_API_KEY"],
)
reply = client.chat.completions.create(
model="deepseek-v4.1-flash-uncensored",
messages=[{"role": "user", "content": "Write a haiku about moving house."}],
)
print(reply.choices[0].message.content)Стриминг, инструменты, вывод JSON и картинки работают так же, как в формате самого OpenAI. Библиотеки и фреймворки, построенные на SDK OpenAI, принимают тот же базовый URL и ключ. Сначала попробуйте вызов прямо здесь:
Что поддерживается
| Функция | Поддерживается |
|---|---|
POST /v1/chat/completions, целиком или потоком | Да, обе модели |
GET /v1/models и GET /v1/models/{id} | Да, с длиной контекста, самым длинным ответом и ценой за токен |
| Роли: system, developer, user, assistant, tool | Да |
Вызовы инструментов: tools, tool_choice | Да. У GLM tool_choice принимает только auto или none. |
reasoning_effort | DeepSeek: none, low, high, max. GLM: low, high. |
Картинки как части image_url, ссылки или data URL | deepseek-v4.1-flash-uncensored, до 10 на запрос |
response_format, temperature, top_p, stop, seed, штрафы | deepseek-v4.1-flash-uncensored |
stream_options.include_usage, max_tokens, max_completion_tokens | Да |
Закэшированный вход в usage.prompt_tokens_details.cached_tokens | Да, списывается по цене кэша |
Каждое поле, модель за моделью: Chat completions.
Что не поддерживается
| Не поддерживается | Что вы получите |
|---|---|
| Другие эндпоинты: embeddings, images, audio, files, batch, moderations, API Responses и Assistants, устаревшие completions | 404 not_found, с перечислением четырёх маршрутов, которые есть |
n со значением, отличным от 1 | 400 unsupported_n |
reasoning_effort, который модель не принимает | 400 invalid_reasoning_effort, с перечислением тех, что принимает |
Именованная функция или required как tool_choice на glm-5.3-flash-uncensored | 400 unsupported_tool_choice |
Картинки для glm-5.3-flash-uncensored; части с аудио или видео для любой модели | 400 unsupported_input, с названием модели, которая читает картинки |
| Больше 10 картинок или больше 2,000 сообщений | 400 too_many_images, 400 invalid_messages |
Поля, которые не принимает ни одна модель, например logprobs, logit_bias, user или store | Отбрасываются и перечисляются в заголовке x-nokeep-ignored |
Ничего неподдерживаемого не угадывается и не меняется молча: запрос либо отклоняется с кодом, либо его неиспользованные поля перечисляются в заголовке. Каждый код и его решение описаны в Ошибки.
Небольшие различия, которые стоит знать
usage.nokeep_creditsпоказывает, сколько стоил запрос, а заголовкиx-nokeep-creditsиx-nokeep-balanceсообщают это в целом ответе.- Оплата идёт предоплаченными кредитами: 1,000 — это $1, от $5, и они не сгорают. Отклонённый запрос ничего не стоит.
- Лимит: 120 запросов в минуту на ключ. Ответ
429содержитRetry-After. - Хост GLM может быть занят в часы пик; занятый запрос отвечает
503 busyсRetry-After: 5и ничего не стоит.
Вопросы
Нужно ли менять код, чтобы переключиться?
Только базовый URL, ключ и имя модели. С официальными SDK первые два могут браться из OPENAI_BASE_URL и OPENAI_API_KEY в окружении.
Работает ли это с приложениями, которые принимают свой эндпоинт OpenAI?
Да. Любое приложение с настройкой OpenAI-совместимого или пользовательского эндпоинта работает. Руководства: SillyTavern, Open WebUI, а агенты для кода — на странице агентов для кода.
Какие модели OpenAI можно вызывать?
Никакие: формат — OpenAI, а модели — deepseek-v4.1-flash-uncensored и glm-5.3-flash-uncensored. GET /v1/models перечисляет все идентификаторы.
Есть ли эндпоинт embeddings?
Пока нет. API обслуживает chat completions, список моделей и маршрут статуса. Новые маршруты появятся в журнале изменений.
Что происходит с полями, которые вы не поддерживаете?
Они отбрасываются и перечисляются в заголовке x-nokeep-ignored, так что вы видите, что именно не использовано. Значения, которые меняют смысл запроса, например n больше 1, вместо этого отклоняются с 400.