Справочник API
Chat Completions
Создавайте чат-завершения, потоковые ответы, вызывайте инструменты и обрабатывайте изображения — всё через единую конечную точку, совместимую с OpenAI, с 200+ моделями.
Конечная точка
POST https://api.tokspan.com/v1/chat/completionsБыстрые примеры
Одинаковый API для всех моделей. Выберите язык:
from openai import OpenAI
client = OpenAI(api_key="sk-your-key", base_url="https://api.tokspan.com/v1")
response = client.chat.completions.create(model="gpt-4o", messages=[{"role":"user","content":"Hello"}])
print(response.choices[0].message.content)import OpenAI from 'openai';
const client = new OpenAI({ apiKey: process.env.TOKSPAN_API_KEY, baseURL: 'https://api.tokspan.com/v1' });
const response = await client.chat.completions.create({ model: 'gpt-4o', messages: [{ role: 'user', content: 'Hello' }] });
console.log(response.choices[0].message.content);curl -X POST "https://api.tokspan.com/v1/chat/completions" \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-4o","messages":[{"role":"user","content":"Hello"}]}'Тело запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| model | string | Да | ID модели (например, gpt-4o, claude-opus-4-8). См. Модели для полного каталога. |
| messages | array | Да | Массив объектов сообщений с полями role (system / user / assistant / tool) и content. |
| temperature | number | Нет | Температура сэмплирования (0–2). Выше = более случайный результат. Значение по умолчанию зависит от модели. |
| max_tokens | integer | Нет | Максимальное количество генерируемых токенов. Если не указано, модель определяет сама на основе оставшегося контекста. |
| stream | boolean | Нет | Включить потоковую передачу SSE. По умолчанию: false. См. Потоковая передача ниже. |
| top_p | number | Нет | Nucleus-сэмплирование — альтернатива температуре (0–1). |
| stop | string / array | Нет | Одна или несколько последовательностей, при достижении которых модель прекращает генерацию. |
| frequency_penalty | number | Нет | Снижение повторяемости токенов (от −2.0 до 2.0). |
| presence_penalty | number | Нет | Повышение вероятности новых тем (от −2.0 до 2.0). |
| seed | integer | Нет | Seed детерминированного сэмплирования для воспроизводимых результатов. |
| response_format | object | Нет | Принудительный вывод в JSON: {"type": "json_object"} или {"type": "json_schema", "json_schema": {...}}. |
| tools | array | Нет | Определения инструментов/функций для function calling. См. Вызов инструментов ниже. |
| tool_choice | string / object | Нет | Управление выбором инструмента: "auto", "none", "required" или конкретный объект инструмента. |
| n | integer | Нет | Количество генерируемых завершений. По умолчанию: 1. |
| user | string | Нет | Идентификатор конечного пользователя для мониторинга злоупотреблений. |
Пример запроса и ответа
{
"model": "gpt-4o",
"messages": [
{ "role": "system", "content": "You are a helpful assistant." },
{ "role": "user", "content": "What is the capital of France?" }
],
"temperature": 0.7,
"max_tokens": 256
}{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1700000000,
"model": "gpt-4o",
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "The capital of France is Paris."
},
"finish_reason": "stop"
}],
"usage": {
"prompt_tokens": 25,
"completion_tokens": 8,
"total_tokens": 33
}
}Поля ответа
| Поле | Тип | Описание |
|---|---|---|
| id | string | Уникальный идентификатор запроса — используйте при обращении в поддержку |
| object | string | Всегда "chat.completion" |
| created | integer | Unix-метка времени (в секундах) создания ответа |
| model | string | Модель, которая фактически обработала запрос (полезно при активном автоматическом переключении или маршрутизации) |
| choices | array | Массив вариантов завершения. Каждый содержит index, message (role + content) и finish_reason (stop / length / tool_calls / content_filter) |
| usage | object | Количество токенов: prompt_tokens, completion_tokens, total_tokens. См. Использование токенов ниже. |
Как учитываются токены
Объект usage сообщает о токенах, потреблённых для биллинга:
prompt_tokens— Токены в ваших входных сообщениях (включая системный промпт, историю и любые прикреплённые медиа, преобразованные в токен-эквиваленты)completion_tokens— Токены, сгенерированные моделью в ответеtotal_tokens— Сумма токенов промпта и завершения = то, за что выставляется счёт
Для мультимодальных входных данных (изображения, аудио) провайдеры преобразуют медиа в токен-эквиваленты. GPT-4o учитывает около 85 токенов за изображение низкого разрешения и около 170+ за высокое. В вашей панели управления отображается итоговое количество токенов и стоимость каждого запроса.
Потоковая передача (SSE)
Установите stream: true для получения токенов в реальном времени по мере генерации моделью. TokSpan использует стандартные Server-Sent Events (SSE) — полностью совместимо с форматом потоковой передачи OpenAI.
Пример
from openai import OpenAI
client = OpenAI(api_key="sk-your-key", base_url="https://api.tokspan.com/v1")
stream = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Tell me a story."}],
stream=True,
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)curl -X POST "https://api.tokspan.com/v1/chat/completions" \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"messages": [{"role": "user", "content": "Tell me a story."}],
"stream": true
}'Формат фрагментов SSE
Каждый фрагмент — это объект JSON с префиксом data:. Поток завершается строкой data: [DONE]:
data: {"id":"chatcmpl-abc","object":"chat.completion.chunk","choices":[{"delta":{"content":"Hello"},"index":0}]}
data: {"id":"chatcmpl-abc","object":"chat.completion.chunk","choices":[{"delta":{"content":" world"},"index":0}]}
data: {"id":"chatcmpl-abc","object":"chat.completion.chunk","choices":[{"delta":{},"finish_reason":"stop","index":0}]}
data: [DONE]Каждый фрагмент содержит объект delta (а не message). Поле content может быть пустым или отсутствовать в последнем фрагменте. Последний фрагмент содержит установленный finish_reason и пустой delta.
Потоковая передача с вызовами инструментов
Когда модель вызывает функцию во время потоковой передачи, фрагменты вызова инструмента приходят в delta с полем tool_calls — имя функции и аргументы передаются инкрементально. Соберите все фрагменты для данного tool_call_id, чтобы составить полный вызов функции, затем отправьте ответное сообщение с role: "tool".
Вызов инструментов / Function Calling
TokSpan поддерживает function calling, совместимый с OpenAI, для всех способных к этому моделей. Определите свои инструменты в запросе, и модели ответят структурированными вызовами функций в JSON, которые ваш код выполнит.
Определение инструментов
Передайте массив tools с определениями функций. Каждая функция требует name, description и JSON Schema parameters:
"tools": [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a city",
"parameters": {
"type": "object",
"properties": {
"city": { "type": "string" }
},
"required": ["city"]
}
}
}]Ответ модели с вызовами инструментов
Когда модель решает вызвать функцию, ответ содержит tool_calls вместо текстового содержимого:
{
"role": "assistant",
"tool_calls": [{
"id": "call_abc123",
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{\"city\": \"Paris\"}"
}
}]
}Полный цикл вызова инструментов
- Отправьте запрос с определениями
tools - Получите
tool_callsв ответе — извлеките имя функции и аргументы - Выполните функцию в вашем коде (вызовите ваш API погоды, выполните запрос к базе данных и т. д.)
- Отправьте результаты обратно в виде сообщения с
role: "tool", ссылаясь наtool_call_id - Модель отвечает текстом на естественном языке, включающим результаты инструментов
Поддерживаемые модели
Вызов инструментов поддерживается моделями: GPT-4o, GPT-4.1, Claude Opus 4.8, Claude Sonnet 4.6, Gemini 2.5 Pro, Gemini 2.5 Flash, DeepSeek V3, Mistral Large 3, Llama 4, Qwen3 и другими. Проверьте страницу Моделей для получения информации о возможностях каждой модели.
tool_choice: "required", чтобы принудительно заставить модель всегда вызывать инструмент (полезно для агентных пайплайнов, где текстовые ответы должны быть исключением).Ввод изображений / Vision
Для мультимодальных моделей, таких как GPT-4o и Claude 4 Vision, включайте изображения как URL-адреса или данные в кодировке base64 в массиве content:
{
"model": "gpt-4o",
"messages": [{
"role": "user",
"content": [
{ "type": "text", "text": "What's in this image?" },
{ "type": "image_url", "image_url": { "url": "https://example.com/photo.jpg" } }
]
}]
}Поддерживаемые форматы изображений: PNG, JPEG, WebP, GIF (неанимированные). Максимальный размер изображения зависит от модели — обычно 20 МБ на изображение. Для моделей Claude документы PDF также поддерживаются в качестве визуального ввода.
Режим JSON / Структурированный вывод
Принудительно заставьте модель возвращать корректный JSON, установив response_format:
- Режим JSON:
{"type": "json_object"}— Модель возвращает корректный JSON. Необходимо включить слово "JSON" в системный промпт. - Структурированный вывод:
{"type": "json_schema", "json_schema": {...}}— Модель возвращает JSON, соответствующий вашей точной схеме. Поддерживается GPT-4o и более новыми моделями.
response_format модель передаёт токены JSON потоком. Полный ответ является корректным JSON после сборки всех фрагментов — выполните валидацию после завершения потока.