Документация NeuroAPI
Генерация

Генерация текста

Chat Completions, Responses и Beta-форматы текста

Выбирайте формат API, поддерживаемый семейством модели. Не смешивайте поля форматов: выберите один контракт и разбирайте ответ в его собственной структуре.

Текстовые моделиПоддерживаемые API
GPTChat Completions, Responses
ClaudeAnthropic Messages, Chat Completions, Responses
GeminiGemini GenerateContent, Chat Completions, Responses
Остальные, включая Qwen, GLM и DeepSeekChat Completions, Responses

Chat Completions использует /v1/chat/completions, Responses — /v1/responses, Anthropic Messages — /v1/messages, Gemini — /v1beta/models/{model}:generateContent. Для Claude и Gemini запросы Chat/Responses при необходимости преобразуются в нативный формат. Неподдерживаемое сочетание возвращает HTTP 400 с сообщением на русском языке и подходящими API до резервирования средств и запуска генерации. Правило действует также для потоковых запросов, подсчёта токенов и создания пакетных заданий. Текстовую LLM нельзя использовать вместо embedding-, moderation-, rerank-, image- или audio-модели: такой запрос также отклоняется до резервирования. Настоящие специализированные модели и их API сохраняют отдельные контракты.

Информация: Список моделей и их контекстные ограничения доступен через GET /v1/models и в каталоге цен.

Как NeuroAPI сохраняет Chat/Responses формат для Alibaba Cloud →

OpenAI Chat Completions

Стабильный

Рекомендуется для существующих OpenAI-совместимых приложений, истории сообщений, streaming и клиентских function tools.

POST /v1/chat/completions

cURL

curl https://neuroapi.host/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5-mini",
    "messages": [
      {"role": "user", "content": "Объясни квантовую запутанность простыми словами"}
    ]
  }'

Python · OpenAI SDK

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://neuroapi.host/v1",
)

result = client.chat.completions.create(
    model="gpt-5-mini",
    messages=[
        {"role": "user", "content": "Объясни квантовую запутанность простыми словами"}
    ],
)
print(result.choices[0].message.content)

Node.js · TypeScript

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.NEUROAPI_KEY,
  baseURL: "https://neuroapi.host/v1",
});

const result = await client.chat.completions.create({
  model: "gpt-5-mini",
  messages: [{ role: "user", content: "Объясни квантовую запутанность простыми словами" }],
});

console.log(result.choices[0]?.message.content);

Ключевые параметры

ПараметрЗначениеПримечание
modelID модели из GET /v1/modelsОбязательный
messagesмассив {role, content}system/user/assistant/tool
max_completion_tokensцелое, 1…1073741823Предпочтительное поле для gpt-5/o-моделей; включает reasoning-токены
max_tokensцелоеУстаревшее имя; для gpt-5/o-моделей NeuroAPI автоматически приводит его к max_completion_tokens
temperatureтолько 1 (или отсутствует)Для gpt-5/o-моделей иные значения отклоняются моделью; NeuroAPI удаляет их
top_pтолько 1 (или отсутствует)То же для gpt-5/o-моделей
nтолько 1Для gpt-5/o-моделей зафиксирован; NeuroAPI приводит n>1 к 1
stopмассив строкНе поддерживается gpt-5/o-моделями; NeuroAPI удаляет его
streamtrue/falseSSE-поток при true; финальный chunk с usage — через stream_options.include_usage
toolsмассив function toolsJSON-Schema в parameters; tool_choice: auto/none/required/имя функции
response_formatjson_object или json_schema (strict)strict: true — гарантия схемы
reasoning_effortminimal/low/medium/high/xhigh/maxНабор зависит от модели; для Claude Opus 5.5 см. ограничения ниже

Информация: перечисленные ограничения (temperature/top_p/n = 1, отсутствие stop, поле max_completion_tokens) — это требования самих reasoning-моделей OpenAI. NeuroAPI нормализует такие запросы автоматически, см. Нормализация параметров.

OpenAI Responses

Стабильный

Подходит для новых интеграций, мультимодального input и современных клиентских tools. Поддерживаются обычный и потоковый ответы, подсчёт input tokens, получение и удаление сохранённого response, а также список его input items.

ДействиеПуть
СоздатьPOST /v1/responses
Оценить inputPOST /v1/responses/input_tokens
ПолучитьGET /v1/responses/{id}
Input itemsGET /v1/responses/{id}/input_items
УдалитьDELETE /v1/responses/{id}

Python · OpenAI SDK

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://neuroapi.host/v1",
)

response = client.responses.create(
    model="gpt-5-mini",
    input="Составь краткий план запуска мобильного приложения",
)
print(response.output_text)

Node.js · TypeScript

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.NEUROAPI_KEY,
  baseURL: "https://neuroapi.host/v1",
});

const response = await client.responses.create({
  model: "gpt-5-mini",
  input: "Составь краткий план запуска мобильного приложения",
});

console.log(response.output_text);

cURL

curl https://neuroapi.host/v1/responses \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5-mini",
    "input": "Составь краткий план запуска мобильного приложения"
  }'

Важно: Не все hosted tools и provider-owned ресурсы OpenAI поддерживаются. Используйте только возможности, указанные в карточке модели или явно описанные в документации NeuroAPI.

Ключевые параметры

ПараметрЗначениеПримечание
modelID модели из GET /v1/modelsОбязательный (или previous_response_id)
inputстрока или массив itemsinput_text, input_image, input_audio — мультимодальный вход
instructionsстрокаСистемный промпт (аналог system)
max_output_tokensцелое, минимум 16Включает reasoning-токены; NeuroAPI автоматически поднимает значения ниже 16
reasoningeffort: minimal/low/medium/highТолько gpt-5/o-модели
temperature / top_pне поддерживаются base gpt-5NeuroAPI удаляет их; gpt-5.1+/5.2 допускают при reasoning.effort: "none"
storetrue/falsetrue — сохранение ответа: GET/DELETE /v1/responses/{id}
previous_response_idID ответаЦепочка диалога (stateful)
toolsмассив function toolsfunction: name + parameters
tool_choiceauto/none/required/имя функции
text.formatjson_schema (strict)Structured Outputs; strict: true — гарантия схемы
streamtrue/falseSSE-события response.*, финал — response.completed

Anthropic Messages

Бета

Используйте, если приложение уже работает с Messages API. Обязательны anthropic-version, model, max_tokens и messages. Для авторизации подходят x-api-key или Bearer.

cURL

curl https://neuroapi.host/v1/messages \
  -H "x-api-key: YOUR_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "Сделай ревью этой архитектурной идеи"}
    ]
  }'

Python · Anthropic SDK

from anthropic import Anthropic

client = Anthropic(
    api_key="YOUR_API_KEY",
    base_url="https://neuroapi.host",
)

message = client.messages.create(
    model="claude-sonnet-4",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Сделай ревью этой архитектурной идеи"}],
)
print(message.content[0].text)

Ключевые параметры

ПараметрЗначениеПримечание
modelID моделиОбязательный
max_tokensцелоеОбязательный; верхняя граница ответа
messagesмассив {role, content}user/assistant; мультимодальные content-блоки: text, image, document (PDF), tool_result
systemстрока или массив блоковПоддерживает cache_control
toolsмассив {name, description, input_schema}Поддержка tool_choice зависит от модели; Opus 5.5 принимает только auto/none
thinkingadaptive либо enabled + budget_tokens: NЗависит от модели; Opus 5.5 использует только адаптивное рассуждение
stop_sequencesмассив непустых строкПустые/пробельные значения невалидны
temperatureчисло, если поддерживается модельюДля Opus 5.5 опустите параметр или передайте 1
top_kцелое, если поддерживается модельюДля Opus 5.5 опустите параметр
cache_controlephemeralПромпт-кэш: TTL 5 мин / 1 час; экономия до 90% на повторных вызовах
streamtrue/falseSSE: message_start → content_block_* → message_stop
metadata{user_id}Опционально

Claude Opus 5.5

Модель claude-opus-5-5 всегда использует адаптивное рассуждение. В Messages опустите thinking или передайте {"type":"adaptive"}; уровень задаётся через output_config.effort: low, medium, high, xhigh, max (по умолчанию medium). В Chat Completions те же уровни передаются через reasoning_effort.

Отключение рассуждения (none/disabled), ручной budget_tokens, принудительный выбор инструмента и нестандартные temperature/top_p не поддерживаются. max_tokens включает и рассуждение, и видимый ответ. В нативных Messages сохраняйте полученные thinking-блоки и подписи без изменений при продолжении диалога с инструментами. Для управления рассуждением используйте Chat Completions или Messages; Responses с явным reasoning для этой модели пока не поддерживается.

Gemini GenerateContent

Бета

Сохраняет Gemini-структуру contents, parts, generationConfig и candidates. Доступны generateContent, streamGenerateContent и countTokens.

Важно: для текстовых моделей этот API доступен только семейству Gemini. Нативные запросы сохраняют структуру Gemini; доступность отдельных tools и параметров зависит от модели. Неподдерживаемые возможности отклоняются до платной генерации. Прямой запрос countTokens обслуживает операцию подсчёта токенов; обычная генерация не запускает скрытый запрос countTokens. Список доступных для этого формата моделей возвращает GET /v1beta/models.

cURL

curl "https://neuroapi.host/v1beta/models/gemini-3.1-flash-lite:generateContent" \
  -H "x-goog-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [{"text": "Составь три варианта заголовка"}]
    }]
  }'

JavaScript · fetch

const response = await fetch(
  "https://neuroapi.host/v1beta/models/gemini-3.1-flash-lite:generateContent",
  {
    method: "POST",
    headers: {
      "x-goog-api-key": process.env.NEUROAPI_KEY!,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      contents: [{ role: "user", parts: [{ text: "Составь три варианта заголовка" }] }],
    }),
  },
);

if (!response.ok) throw new Error(await response.text());
console.log((await response.json()).candidates?.[0]?.content?.parts?.[0]?.text);

Нормализация параметров на стороне NeuroAPI

Reasoning-модели OpenAI (gpt-5/o-series) и новые модели Anthropic имеют строгие ограничения параметров: часть полей устарела, часть зафиксирована, часть не поддерживается вовсе. NeuroAPI применяет только перечисленные ниже преобразования. Неподдерживаемые требования Opus 5.5 возвращают ошибку 400, а не незаметно заменяются значениями по умолчанию.

ФорматКлиент отправилNeuroAPI делает
Chat (gpt-5/o)max_tokens: 64приводит к max_completion_tokens: 64
Chat (gpt-5/o)stop: [...]удаляет (не поддерживается моделью; ответ не обрезается)
Chat (gpt-5/o)temperature: 0.7, top_p: 0.9удаляет (разрешено только значение 1 — возвращается дефолтный сэмплинг)
Chat (gpt-5/o)n: 4приводит к n: 1 (параметр зафиксирован)
Responses (gpt-5/o)max_output_tokens: 8поднимает до 16 (серверный минимум OpenAI)
Responses (base gpt-5)temperature, top_pудаляет (не поддерживаются; исключение — gpt-5.1+/5.2 с reasoning.effort: "none")
Chat (Claude Opus 5.5)reasoning_effort: "high"передаёт адаптивное рассуждение с выбранным уровнем
Chat (Claude Opus 5.5)temperature: 0.7, top_p: 0.9, reasoning_effort: "none"возвращает 400: требования не поддерживаются моделью

Что NeuroAPI не исправляет (возвращает понятную ошибку с кодом): невалидный JSON, неизвестную модель, неверный тип параметра, противоречивые поля (например, store в сочетании с несовместимыми hosted tools), превышение лимитов токенов. Полный список кодов — в разделе ошибок.

Информация: нормализация — это осознанный компромисс: например, удалённый stop не обрежет ответ, а удалённая temperature вернёт дефолт модели. Если вам нужен строгий контроль этих параметров — используйте модели, которые их поддерживают (gpt-4o и другие легаси-модели).

Общее правило ошибок

Исправляйте запрос при 400/422, снижайте частоту при 429 и повторяйте временные 5xx/сетевые ошибки с экспоненциальной задержкой. Ошибки NeuroAPI или провайдера не должны списывать стоимость успешной генерации.

Коды ошибок и безопасные повторы →

Батч-обработка

Подробная инструкция Batch API: загрузка файла, создание, результаты и восстановление →

Batch API выполняет независимые запросы асинхронно. Доступность проверяется по batch_enable_groups выбранной модели в GET /api/pricing: используйте API-ключ этого физического тарифа. Для этого режима поддерживается только /v1/chat/completions, потоковая передача (stream: true) не поддерживается. Все строки одного файла должны использовать одну модель. Текущий профиль принимает только текст без инструментов, поиска, медиа и режима размышлений.

Подготовьте UTF-8 JSONL: каждая строка — отдельный запрос с уникальным custom_id. Укажите явный max_tokens и отключите режим размышлений, если модель его поддерживает. Пример для модели с отключаемым режимом размышлений; перед отправкой проверьте её доступность:

{"custom_id":"question-1","method":"POST","url":"/v1/chat/completions","body":{"model":"qwen3.7-plus","messages":[{"role":"user","content":"Сколько будет 2+2?"}],"enable_thinking":false,"max_tokens":64}}

Загрузите файл с purpose=batch, затем передайте полученный id при создании батча:

curl https://neuroapi.host/v1/files \
  -H "Authorization: Bearer $NEUROAPI_KEY" \
  -F purpose=batch -F file=@requests.jsonl

curl https://neuroapi.host/v1/batches \
  -H "Authorization: Bearer $NEUROAPI_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: example-batch-1" \
  -d '{"input_file_id":"file-ID-ИЗ-ОТВЕТА","endpoint":"/v1/chat/completions","completion_window":"24h"}'

Сохраните id батча и опрашивайте GET /v1/batches/{id}. После завершения скачайте результаты через GET /v1/files/{output_file_id}/content, ошибки — по error_file_id тем же способом. Порядок строк может отличаться от входного: сопоставляйте их по custom_id. Для отмены используйте POST /v1/batches/{id}/cancel: уже выполненные запросы могут остаться платными. Создание поддерживает Idempotency-Key; при потере ответа повторяйте ту же команду с тем же ключом и телом, не создавая новый батч.

Входной файл ограничен 100 МиБ, одна строка — 1 МиБ, custom_id — 160 байт. Дополнительно проверяется общий бюджет результатов 512 МиБ: на строку учитываются 8 КиБ и 2048 байт на выходной токен с запасом 10 токенов. Если бюджет превышен, разделите файл на несколько батчей или уменьшите max_tokens.

Окно обработки — 24 часа с момента создания, хранение результатов — 29 дней с момента создания батча. По истечении срока результаты удаляются, заголовок задания и счётчики остаются доступны. Цена рассчитывается из отдельной базы batch_pricing, если она задана, с наценкой Оптимального и коэффициентом batch_tariff_multiplier. Коэффициент фиксируется при создании; база батча может отличаться от базы обычных запросов. Подробности — в ценах и тарифах.