Генерация текста
Chat Completions, Responses и Beta-форматы текста
Выбирайте формат API, поддерживаемый семейством модели. Не смешивайте поля форматов: выберите один контракт и разбирайте ответ в его собственной структуре.
| Текстовые модели | Поддерживаемые API |
|---|---|
| GPT | Chat Completions, Responses |
| Claude | Anthropic Messages, Chat Completions, Responses |
| Gemini | Gemini GenerateContent, Chat Completions, Responses |
| Остальные, включая Qwen, GLM и DeepSeek | Chat 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);Ключевые параметры
| Параметр | Значение | Примечание |
|---|---|---|
model | ID модели из 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 удаляет его |
stream | true/false | SSE-поток при true; финальный chunk с usage — через stream_options.include_usage |
tools | массив function tools | JSON-Schema в parameters; tool_choice: auto/none/required/имя функции |
response_format | json_object или json_schema (strict) | strict: true — гарантия схемы |
reasoning_effort | minimal/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 |
| Оценить input | POST /v1/responses/input_tokens |
| Получить | GET /v1/responses/{id} |
| Input items | GET /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.
Ключевые параметры
| Параметр | Значение | Примечание |
|---|---|---|
model | ID модели из GET /v1/models | Обязательный (или previous_response_id) |
input | строка или массив items | input_text, input_image, input_audio — мультимодальный вход |
instructions | строка | Системный промпт (аналог system) |
max_output_tokens | целое, минимум 16 | Включает reasoning-токены; NeuroAPI автоматически поднимает значения ниже 16 |
reasoning | effort: minimal/low/medium/high | Только gpt-5/o-модели |
temperature / top_p | не поддерживаются base gpt-5 | NeuroAPI удаляет их; gpt-5.1+/5.2 допускают при reasoning.effort: "none" |
store | true/false | true — сохранение ответа: GET/DELETE /v1/responses/{id} |
previous_response_id | ID ответа | Цепочка диалога (stateful) |
tools | массив function tools | function: name + parameters |
tool_choice | auto/none/required/имя функции | |
text.format | json_schema (strict) | Structured Outputs; strict: true — гарантия схемы |
stream | true/false | SSE-события 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)Ключевые параметры
| Параметр | Значение | Примечание |
|---|---|---|
model | ID модели | Обязательный |
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 |
thinking | adaptive либо enabled + budget_tokens: N | Зависит от модели; Opus 5.5 использует только адаптивное рассуждение |
stop_sequences | массив непустых строк | Пустые/пробельные значения невалидны |
temperature | число, если поддерживается моделью | Для Opus 5.5 опустите параметр или передайте 1 |
top_k | целое, если поддерживается моделью | Для Opus 5.5 опустите параметр |
cache_control | ephemeral | Промпт-кэш: TTL 5 мин / 1 час; экономия до 90% на повторных вызовах |
stream | true/false | SSE: 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. Коэффициент фиксируется при
создании; база батча может отличаться от базы обычных запросов. Подробности — в ценах и тарифах.