Текст, изображения, видео и музыка через один API — выберите модель
  1. Главная
  2. /
  3. Документация
  4. /
  5. Гайды

Текст и инструменты

Гайды, примеры запросов и справочник методов. Всё, что нужно для подключения нейросетей к вашему проекту.

Гайды

POST /chat/completions принимает выбранную модель и messages в формате диалога. Роли: system, developer, user, assistant, tool. Для tool-сообщения обязателен tool_call_id.

Поддержка tools, response_format, reasoning и лимитов зависит от модели и выбранного маршрута. Неизвестный или несовместимый параметр отклоняется до обращения к модели. Инструменты возвращаются клиенту; сервис не исполняет клиентские функции.

Обычный запрос использует stream: false. Для потоковой выдачи текста передайте stream: true; протокол и повтор запроса описаны в гайде Streaming.

Обычный результат содержит choices и usage. Завершение по лимиту токенов может вернуть пустой текст; проверяйте finish_reason и задавайте достаточный лимит.

Длительный текст: Prefer: respond-async, прежние model/messages и Idempotency-Key; затем GET /requests/{id}. При completed используйте result. Ограничения клиентского соединения не отменяют уже принятую генерацию. Синхронное ожидание допускает общий сохранённый срок операции; клиент и прокси должны разрешать такое ожидание.

cURL · POST /chat/completions

curl "https://formula-ai.ru/api/v1/chat/completions" \
  -H "Authorization: Bearer $AI_SERVICE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: example-text-1" \
  --data-binary "{
    \"model\": \"$AI_SERVICE_MODEL\",
    \"messages\": [
        {
            \"role\": \"user\",
            \"content\": \"Reply OK\"
        }
    ]
}"

PHP · POST /chat/completions

<?php
$key = getenv("AI_SERVICE_API_KEY");
$url = "https://formula-ai.ru/api/v1/chat/completions";
$handle = curl_init($url);
curl_setopt_array($handle, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => json_encode(["model" => getenv("AI_SERVICE_MODEL"), "messages" => [["role" => "user", "content" => "Reply OK"]]], JSON_THROW_ON_ERROR),
    CURLOPT_HTTPHEADER => ["Authorization: Bearer " . $key, "Content-Type: application/json", "Idempotency-Key: first-text-1"],
]);
if (getenv("AI_SERVICE_CA")) {
    curl_setopt($handle, CURLOPT_CAINFO, getenv("AI_SERVICE_CA"));
}
$body = curl_exec($handle);
if ($body === false) {
    throw new RuntimeException(curl_error($handle));
}
$status = curl_getinfo($handle, CURLINFO_RESPONSE_CODE);
curl_close($handle);
$result = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
echo json_encode(["status" => $status, "result" => $result], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR);

Примеры cURL используют Bash. Задайте AI_SERVICE_API_KEY и AI_SERVICE_MODEL; модель выберите из /models. В PHP для опроса/файла задайте AI_SERVICE_REQUEST_ID/AI_SERVICE_MEDIA_ID, для правки — AI_SERVICE_SOURCE_URL. Для локального сертификата используйте доверенный CA через --cacert, для PHP — AI_SERVICE_CA. Проверку TLS сохраняйте включённой.