Генерация текста
Chat Completions, Responses и Beta-форматы текста
Для одной и той же модели можно использовать разные форматы запроса. Не смешивайте поля форматов: выберите один контракт и разбирайте ответ в его собственной структуре.
Информация: Список моделей и их контекстные ограничения доступен через
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 | Только gpt-5/o-модели |
Информация: перечисленные ограничения (
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: auto/any/tool: name/none |
thinking | enabled + budget_tokens: N | budget_tokens ≥ 1024 и < max_tokens; ответ содержит thinking-блок |
stop_sequences | массив непустых строк | Пустые/пробельные значения невалидны |
temperature | deprecated для новых моделей (например, claude-opus-5) | Модель отклоняет 400; NeuroAPI удаляет его |
top_k | deprecated для новых моделей | Модель отклоняет 400; NeuroAPI удаляет его |
cache_control | ephemeral | Промпт-кэш: TTL 5 мин / 1 час; экономия до 90% на повторных вызовах |
stream | true/false | SSE: message_start → content_block_* → message_stop |
metadata | {user_id} | Опционально |
Информация:
top_kиtemperatureофициально deprecated в Anthropic для новых моделей семейства opus-5/sonnet-5 — они отклоняются даже напрямую. NeuroAPI удаляет их из запросов к таким моделям, чтобы запрос обрабатывался (см. Нормализация параметров).
Gemini GenerateContent
Бета
Сохраняет Gemini-структуру contents, parts, generationConfig и candidates. Доступны generateContent, streamGenerateContent и countTokens.
Важно: нативная gemini-поддержка отключена — запросы обслуживаются конверсией gemini→chat на OpenAI-совместимых каналах (чат-провод сохраняет кириллицу, tools и стриминг). Поддерживаются:
contents/parts(text,inline_data,fileData-URL),systemInstruction,tools.functionDeclarations+toolConfig(mode ANY/AUTO/NONE, allowedFunctionNames),generationConfig(temperature/topP/maxOutputTokens/stopSequences/responseMimeType+responseSchema/seed/candidateCount).safetySettingsиtopKне имеют аналога в чат-проводе и игнорируются.countTokensвыполняется локальным токенизатором.
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 приводит его к валидной форме автоматически — запрос обрабатывается провайдером вместо ошибки 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") |
| Messages (новые claude) | temperature, top_k | удаляет (deprecated; модель отклоняет 400) |
Что NeuroAPI не исправляет (возвращает понятную ошибку с кодом): невалидный JSON, неизвестную модель, неверный тип параметра, противоречивые поля (например, store в сочетании с несовместимыми hosted tools), превышение лимитов токенов. Полный список кодов — в разделе ошибок.
Информация: нормализация — это осознанный компромисс: например, удалённый
stopне обрежет ответ, а удалённаяtemperatureвернёт дефолт модели. Если вам нужен строгий контроль этих параметров — используйте модели, которые их поддерживают (gpt-4o и другие легаси-модели).
Общее правило ошибок
Исправляйте запрос при 400/422, снижайте частоту при 429 и повторяйте временные 5xx/сетевые ошибки с экспоненциальной задержкой. Ошибки NeuroAPI или провайдера не должны списывать стоимость успешной генерации.