Playground и AI API
Короткая инструкция для работы с OpenAI и Claude через единый OpenAI-compatible API: от входа и approval до первого запроса и Code Interpreter.
https://crawlingchaos.isgood.host/api/v1. Модельные маршруты доступны только на Crawling Chaos.Вход и approval
- Создай аккаунт или войди в личном кабинете.
- При регистрации сохрани recovery-код: повторно он не показывается.
- В профиле кратко опиши личный или учебный сценарий и отправь заявку.
- После ручного approval открой Playground, отдельный Chat или создай gateway key.
Черновики Playground остаются локально в браузере. История обычного Chat привязана к одобренному аккаунту на сервере: после входа тот же диалог можно открыть на другом устройстве. Хранится до 30 чатов и 80 сообщений в каждом; файлы и base64 в историю не записываются. Enter отправляет сообщение, Shift+Enter создаёт новый абзац.
Gateway key
В кабинете открой вкладку API-ключи, задай понятное имя и сразу скопируй созданный секрет. Полное значение показывается один раз.
export ML_PORTAL_BASE_URL="https://crawlingchaos.isgood.host/api/v1" export ML_PORTAL_API_KEY="paste_your_gateway_key_here"
Передавай ключ как Authorization: Bearer $ML_PORTAL_API_KEY. Это длинный ключ портала, а не исходный токен OpenAI или Anthropic. При удалении он сразу перестаёт работать и исчезает из всех списков.
Во вкладке Использование видны общие токены, расход каждого ключа, browser Playground и разбивка по моделям. Тексты запросов в статистику не входят.
Доступные модели
Не фиксируй model ID заранее: список зависит от настроенных провайдеров и может расширяться.
/api/v1/modelsapprovedcurl "$ML_PORTAL_BASE_URL/models" \ -H "Authorization: Bearer $ML_PORTAL_API_KEY"
Каждая запись сообщает provider, endpoints, tools, tools_by_endpoint, input_mime_types, attachments_endpoint, max_inline_attachments, max_inline_images, max_inline_documents, max_inline_attachment_bytes, max_request_body_bytes, subtype-лимиты файлов, эффективный лимит ответа и, когда применимо, reasoning_efforts с endpoint-scoped метаданными. attachments_endpoint явно показывает, куда отправлять файлы: chat.completions для OpenAI или messages для Claude. Для API и Playground доступен полный одобренный каталог. Упрощённый Chat намеренно показывает только gpt-5.5, gpt-5.6-sol и claude-opus-4-8. Интерфейсы обновляют live-каталог примерно раз в четыре дня; после перезапуска сервиса первое чтение обновляет его сразу.
Статистика и стоимость
Во вкладке Использование стоимость показана по ключам и моделям. Администратор дополнительно видит её по пользователям и API-ключам. Значения считаются в USD из provider usage и сохраняются как снимок: последующее изменение тарифов не переписывает историю.
≈ означает полное покрытие известных запросов, ≥ — нижнюю границу при неполных данных или неизвестной цене модели, — — отсутствие полезной оценки.Учитываются входные, выходные и cached tokens, а также сообщённые провайдером cache writes и применимые коэффициенты длинного контекста. Hosted tools, Code Interpreter, web search, runtime сессий, налоги, кредиты, Batch и специальные service tiers не входят. Окончательное списание сверяй в панели OpenAI или Anthropic.
API возвращает целое поле estimated_cost_micros: раздели его на 1_000_000, чтобы получить USD. Поля cost_estimate_status, pricing_catalog_version, unpriced_model_count и unestimated_event_count объясняют покрытие суммы.
OpenAI-compatible Chat
Один endpoint принимает точный model ID OpenAI или Claude из /models. Это основной вариант для VS Code, Cursor и других OpenAI-compatible клиентов.
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["ML_PORTAL_API_KEY"],
base_url="https://crawlingchaos.isgood.host/api/v1",
)
answer = client.chat.completions.create(
model="OPENAI_OR_CLAUDE_MODEL_FROM_MODELS",
messages=[{"role": "user", "content": "Проверь идею ML-проекта"}],
)
print(answer.choices[0].message.content)
Поддерживаются streaming и до 128 function tools, которые выполняет сам клиент. Hosted shell/web tools для Claude на сервере не включаются.
VS Code coding agent
- Открой API-ключи на Crawling Chaos.
- Оставь режим Автоматически · все совместимые модели и выбери способ хранения ключа. При необходимости можно собрать профиль только для одного протокола или одной модели.
- Скопируй или скачай
chatLanguageModels.json, затем открой в VS Code команду Chat: Manage Language Models и добавь сгенерированную запись. - Отдельный фрагмент
settings.jsonвключает основную BYOK-модель как utility model; после изменения выполни Developer: Reload Window.
zeroDataRetentionEnabled: true, чтобы VS Code не отправлял запрещённый previous_response_id. Claude и OpenAI-модели без Responses используют Chat Completions; в этом fallback-профиле reasoning picker не публикуется, поскольку каталог подтверждает reasoning и tools по отдельности, но не их совместимость в одном Chat-запросе. Для Claude modelOptions убирает одновременно заданные VS Code temperature и top_p. Модели без function tools не включаются в coding-agent профиль.Сам JSON собирается за миллисекунды. Обычно прогретый каталог загружается менее чем за секунду; первое обновление после рестарта API может обращаться к провайдерам до 30 секунд. Кнопка повторной загрузки появляется в той же форме, а URL скриптов версионируются, чтобы браузер не оставался на старом генераторе.
Ссылка вида ${input:chat.lm.secret.…} работает только в том профиле VS Code, где была создана. Браузер не может записать секрет в VS Code SecretStorage. Режим «готовый JSON с ключом внутри» убирает ручную настройку, но сохраняет рабочий Bearer-ключ открытым текстом — не коммить и не синхронизируй такой файл.
BYOK-модель работает в Chat и agent mode. Обычные inline completions и часть функций поиска кода могут по-прежнему зависеть от встроенных сервисов VS Code/GitHub — это отдельный механизм, не ошибка gateway.
Вложения по возможностям модели
В Chat нажми +: список форматов строится из input_mime_types выбранной модели. OpenAI и Claude принимают изображения, PDF и проверенные UTF-8 файлы — Markdown, табличный текст, JSON/YAML и распространённые исходники. Если формат отсутствует в метаданных модели, интерфейс и API его отклонят.
OpenAI-модели получают изображения как image_url, PDF как нативный file.file_data, а UTF-8 текст и код шлюз после проверки преобразует в именованную пользовательскую текстовую часть. Claude-вложения Chat отправляет через нативный /messages: image/PDF в base64, а текст и исходники — как UTF-8 text/plain. Office-файлы сначала преобразуй в PDF или текст.
{
"model": "OPENAI_MODEL_FROM_MODELS",
"messages": [{
"role": "user",
"content": [
{"type": "file", "file": {
"filename": "notes.md",
"file_data": "data:text/plain;base64,..."
}},
{"type": "text", "text": "Сделай краткий разбор"}
]
}]
}
OpenAI Responses
Выбери OpenAI-модель из /models и отправь текстовый запрос:
curl "$ML_PORTAL_BASE_URL/responses" \
-H "Authorization: Bearer $ML_PORTAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"OPENAI_MODEL_FROM_MODELS","input":"Составь план небольшого ML-эксперимента","max_output_tokens":4096}'
Python SDK
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["ML_PORTAL_API_KEY"],
base_url="https://crawlingchaos.isgood.host/api/v1",
)
response = client.responses.create(
model="OPENAI_MODEL_FROM_MODELS",
input="Объясни precision и recall в пяти предложениях.",
)
print(response.output_text)
Если модель рекламирует выбранный уровень в reasoning_efforts, Responses принимает "reasoning": {"effort": "medium"}, а OpenAI Chat Completions — top-level "reasoning_effort": "medium". Значение Auto не отправляет provider-поле.
Native Claude Messages
Для возможностей, которых нет в compatibility-слое, остаётся нативный формат Anthropic Messages и отдельный endpoint:
curl "$ML_PORTAL_BASE_URL/messages" \
-H "Authorization: Bearer $ML_PORTAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"CLAUDE_MODEL_FROM_MODELS","max_tokens":4096,"messages":[{"role":"user","content":"Составь план ML-эксперимента"}]}'
Для Claude Opus 4.8 выбранный effort передаётся нативно через "output_config": {"effort": "high"}; "thinking": {"type": "adaptive"} — отдельное поле, которое интерфейс включает для adaptive thinking. OpenAI-compatible Chat намеренно отклоняет Claude-поле reasoning_effort с кодом reasoning_endpoint_unsupported: используй нативный POST /api/v1/messages, чтобы настройка не была молча проигнорирована. Обычный browser Chat уже выбирает этот нативный маршрут.
Если Anthropic ещё не настроен владельцем, Claude-модели не появляются в /models. Каталог проекта обновляется автоматически; новые Sonnet/Haiku могут включаться сразу, а новые более дорогие Opus/Fable требуют проверки владельца. Выбор провайдера всегда определяется точным model ID — случайного fallback нет.
Code Interpreter
Инструмент доступен только для OpenAI-модели, у которой /models содержит code_interpreter в массиве tools. В Playground переключатель включается автоматически по этой метаданной.
{
"model": "OPENAI_MODEL_FROM_MODELS",
"input": "Используй Python и рассчитай среднее [12, 17, 25, 31]",
"tools": [{
"type": "code_interpreter",
"container": {"type": "auto"}
}]
}
Это hosted-инструмент OpenAI, а не локальный shell на Crawling Chaos. Запрос отправляется через POST /responses.
Ошибки и лимиты
| Status | Значение | Действие клиента |
|---|---|---|
| 401 | Ключ отсутствует, неверен или удалён | Проверить Bearer key |
| 403 | Нет approval или модель запрещена | Проверить профиль и models |
| 404 | AI route вызван не через Crawling Chaos | Использовать edge hostname |
| 413 / 422 | Размер или поля запроса неверны | Исправить запрос |
| 429 | Rate limit или месячная квота | Учитывать Retry-After |
| 503 | Provider не настроен или недоступен | Не создавать новый аккаунт |
При 429 дождись Retry-After. Ошибки 401, 403 и 422 требуют исправить ключ, доступ или тело запроса — повтор без изменения не поможет.