Перейти к основному содержимому

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

Доступные модели

Полный список моделей можно посмотреть тут или получить динамически через API эндпоинты: https://openai.bothub.chat/v1/models и https://bothub.chat/api/v2/replicate/v1/models

Для работы с текстом, визуальным анализом и многим другим в BotHub используется шлюз OpenAI. Вы можете выполнять запросы через два разных эндпоинта в зависимости от архитектуры вашего проекта: классический Chat Completions API или современный Responses API.


Chat Completions API vs Responses API​

  • Chat Completions API — классический эндпоинт, построенный вокруг привычной системы ролей (system, user, assistant). Он полностью совместим с официальными SDK OpenAI. Отличный выбор для быстрой интеграции и стандартных чат-интерфейсов.
  • Responses API — новый мультимодальный эндпоинт. Он не требует официальных SDK, поддерживает как простой строковый ввод, так и сложные массивы данных, а также позволяет гибко управлять структурой ответа (JSON-схемы) и инструментами.

1. Chat Completions API (Классический шлюз)​

Этот эндпоинт полностью совместим с синтаксисом OpenAI. Вы можете использовать официальные библиотеки, просто переопределив baseURL на https://openai.bothub.chat/v1.

Синхронная генерация​

import OpenAI from 'openai';

const openai = new OpenAI({
apiKey: 'ВАШ_API_КЛЮЧ_BOTHUB',
baseURL: 'https://openai.bothub.chat/v1'
});

async function main() {
const completion = await openai.chat.completions.create({
model: 'claude-opus-5',
messages: [{ role: 'user', content: 'Привет! Расскажи о себе в трех словах.' }],
});

console.log(completion.choices[0].message.content);
}

main();

Потоковая генерация (Streaming)​

import OpenAI from 'openai';

const openai = new OpenAI({
apiKey: 'ВАШ_API_КЛЮЧ_BOTHUB',
baseURL: 'https://openai.bothub.chat/v1'
});

async function main() {
const stream = await openai.chat.completions.create({
model: 'claude-opus-5',
messages: [{ role: 'user', content: 'Напиши короткую историю об ИИ.' }],
stream: true,
});

for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content || '');
}
}

main();

Пример ответа шлюза OpenAI:​

{
"id": "gen-1779989130-XaEliNRQ9QbSu4dyJgr3",
"object": "chat.completion",
"created": 1779989130,
"model": "anthropic/claude-4.7-opus-fast-20260512",
"provider": "Anthropic",
"system_fingerprint": null,
"service_tier": "default",
"choices": [
{
"index": 0,
"logprobs": null,
"finish_reason": "stop",
"native_finish_reason": "end_turn",
"message": {
"role": "assistant",
"content": "ИИ-помощник от Anthropic.",
"refusal": null,
"reasoning": null
}
}
],
"usage": {
"prompt_tokens": 29,
"completion_tokens": 19,
"total_tokens": 48,
"cost": 0.00372,
"is_byok": false,
"prompt_tokens_details": {
"cached_tokens": 0,
"cache_write_tokens": 0,
"audio_tokens": 0,
"video_tokens": 0
},
"cost_details": {
"upstream_inference_cost": 0.00372,
"upstream_inference_prompt_cost": 0.00087,
"upstream_inference_completions_cost": 0.00285
},
"completion_tokens_details": {
"reasoning_tokens": 0,
"image_tokens": 0,
"audio_tokens": 0
},
"speed": "fast"
}
}

2. Responses API (Новый унифицированный шлюз)​

Этот эндпоинт принимает запросы по адресу https://openai.bothub.chat/v1/responses напрямую через стандартные HTTP-методы. Он предлагает упрощенную структуру для простого текста и продвинутый контроль для многоходовых диалогов.

Не сохраняет состояние

Responses API Alpha не хранит историю переписки на сервере. Для поддержания контекста клиентская сторона должна передавать массив всех предыдущих сообщений в свойстве input при каждом новом запросе.


Вариант 1: Простой текстовый ввод (Строка)​

async function sendRequest() {
const response = await fetch('https://openai.bothub.chat/v1/responses', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ВАШ_API_КЛЮЧ_BOTHUB'
},
body: JSON.stringify({
model: 'claude-opus-5',
input: 'В чем смысл жизни?',
max_output_tokens: 4000
})
});

const result = await response.json();
console.log(result.output[0].content[0].text);
}

sendRequest();

Вариант 2: Структурированный ввод сообщений​

Используйте для сложных чатов, передавайте полную историю чата. При передаче истории от assistant, поля id и status не обязательны.

async function sendChat() {
const response = await fetch('https://openai.bothub.chat/v1/responses', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ВАШ_API_КЛЮЧ_BOTHUB'
},
body: JSON.stringify({
model: 'claude-opus-5',
input: [
{
type: 'message',
role: 'user',
content: [{ type: 'input_text', text: 'Какая столица у Франции?' }]
},
{
type: 'message',
id: 'msg_internal_123',
status: 'completed',
role: 'assistant',
content: [{ type: 'output_text', text: 'Столица Франции — Париж.' }]
},
{
type: 'message',
role: 'user',
content: [{ type: 'input_text', text: 'Какое там население?' }]
}
],
max_output_tokens: 4000
})
});

const result = await response.json();
console.log(result.output[0].content[0].text);
}

sendChat();

3. Vision (Анализ изображений)​

Vision — это возможность отправлять изображения вместе с текстовым запросом, чтобы модель могла анализировать визуальный контент: распознавать объекты, описывать сцены, анализировать интерфейсы и читать текст (OCR).

Поддерживаемые модели​

Для анализа изображений подходят практически все современные мультимодальные модели, доступные в BotHub:

  • OpenAI: вся линейка gpt-4o, gpt-4.1 и семейство gpt-5
  • Anthropic Claude: актуальные версии claude-sonnet и claude-opus
  • Google Gemini: быстрые и продвинутые модели gemini

И многие другие флагманские и специализированные модели.

Форматы передачи изображений​

Вы можете передать изображение как публичный URL, так и закодированное в Base64 строку.

Через URL

{
"type": "image_url",
"image_url": {
"url": "https://images.unsplash.com/photo-1579783902614-a3fb3927b6a5"
}
}

Через Base64

{
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ..."
}
}

Пример Vision-запроса (Chat Completions API)​

import OpenAI from 'openai';

const openai = new OpenAI({
apiKey: 'ВАШ_API_КЛЮЧ_BOTHUB',
baseURL: 'https://openai.bothub.chat/v1'
});

async function main() {
const res = await openai.chat.completions.create({
model: "gpt-4o",
messages: [
{
role: "user",
content: [
{ type: "text", text: "Что изображено на этой фотографии?" },
{
type: "image_url",
image_url: {
url: "https://images.unsplash.com/photo-1579783902614-a3fb3927b6a5"
}
}
]
}
]
});

console.log(res.choices[0].message.content);
}

main();
Рекомендации
  • Для большинства задач Vision рекомендуется использовать gpt-4o, так как модель обеспечивает лучший баланс между скоростью, качеством и стоимостью.
  • Если требуется работа с длинными документами, сложными схемами или большим контекстом, обратите внимание на модели Claude и Gemini.
  • Для локальных изображений используйте Base64, а для публично доступных файлов — обычные URL.

4. Уровень рассуждений​

Модели с рассуждениями могут думать перед ответом больше или меньше. BotHub принимает одну шкалу для всех моделей: none, minimal, low, medium, high, xhigh, max.

ШлюзПараметр
Chat Completions APIreasoning_effort
Responses APIreasoning.effort
curl https://openai.bothub.chat/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_BOTHUB_API_KEY" \
-d '{
"model": "glm-5.2",
"reasoning_effort": "medium",
"messages": [{"role": "user", "content": "Сколько простых чисел меньше 100?"}]
}'

Как применяется уровень​

У каждой модели своя часть шкалы, и следить за этим не нужно. Если у модели нет уровня, который вы отправили, шлюз применяет самый высокий уровень модели, не превышающий запрошенный. Если ниже у модели ничего нет, применяется её самый низкий уровень.

Вы отправилиУровни моделиПрименяется
low или mediumhigh, xhighhigh
maxhigh, xhighxhigh
xhighlow, medium, high, maxhigh
minimalnone, low, medium, highlow

none просит модель не рассуждать. Там, где рассуждения отключить нельзя, применяется самый низкий уровень модели, и запрос не завершается ошибкой.

Какие уровни есть у модели​

Запросите GET https://bothub.chat/api/v2/model/list и найдите модель. В её массиве apiParams есть элемент с кодом reasoning_effort. В нём enum — уровни модели, а default — уровень, выбранный по умолчанию в чате BotHub:

{
"code": "reasoning_effort",
"type": "string",
"enum": ["high", "xhigh"],
"default": "high"
}