Что такое API, совместимый с OpenAI?

Многие провайдеры LLM и серверы инференса с самостоятельным размещением — сам OpenAI, Azure OpenAI, Groq, OpenRouter, Together AI, Mistral, DeepSeek, vLLM, сервер llama.cpp, LM Studio и режим Ollama, совместимый с OpenAI, — предоставляют один и тот же REST-интерфейс, популяризированный OpenAI: запросы JSON к конечным точкам вроде /v1/chat/completions, аутентифицированные с помощью токена Bearer в заголовке Authorization. Это позволяет менять провайдеров без переписывания кода интеграции.

Ручное написание корректной команды cURL для этих конечных точек означает необходимость точно указать URL, заголовки и тело JSON, особенно при настройке параметров сэмплирования, таких как temperature и штрафы, или при переключении между запросами чата, устаревших completions и embeddings.

Описание инструмента

Этот инструмент генерирует готовые к использованию команды cURL для любого API, совместимого с OpenAI. Укажите базовый URL, конечную точку, модель и параметры — и мгновенно получите правильно отформатированную команду cURL, готовую для вставки в терминал или скрипты.

Примеры

Завершение чата:

curl -X POST "https://api.openai.com/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
  "model": "gpt-4o-mini",
  "messages": [
    { "role": "system", "content": "Вы — полезный помощник по программированию." },
    { "role": "user", "content": "Напишите функцию на Python для обращения строки" }
  ],
  "temperature": 0.3,
  "stream": false
}'

Сервер с самостоятельным размещением (vLLM, llama.cpp, LM Studio, ...):

curl -X POST "http://localhost:8000/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
  "model": "llama-3-8b-instruct",
  "messages": [
    { "role": "user", "content": "Кратко изложите сюжет «Гамлета» в двух предложениях" }
  ],
  "stream": true
}'

Векторные представления:

curl -X POST "https://api.openai.com/v1/embeddings" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
  "model": "text-embedding-3-small",
  "input": "Быстрая коричневая лиса перепрыгивает через ленивую собаку"
}'

Возможности

  • Поддерживает три наиболее распространённые конечные точки, совместимые с OpenAI: /chat/completions, /completions и /embeddings
  • Работает с любым совместимым базовым URL, поэтому подходит для OpenAI, Azure, Groq, OpenRouter, Together AI и серверов с самостоятельным размещением
  • Настраиваемые параметры сэмплирования: temperature, top-p, frequency penalty, presence penalty, максимальное количество токенов, количество вариантов завершения, последовательности остановки и seed
  • Необязательный формат ответа в виде объекта JSON для завершения чата
  • Ничего никуда не отправляется: команда cURL полностью создаётся в вашем браузере, и ключ API никогда не покидает ваше устройство

Объяснение параметров

Параметр Описание По умолчанию Диапазон
Базовый URL Корневой URL API без пути конечной точки. https://api.openai.com/v1 Любой URL
Конечная точка Конечная точка API, к которой следует обратиться. /chat/completions chat, completions, embeddings
Temperature Управляет случайностью вывода. Меньшие значения создают более сфокусированный текст, а большие повышают креативность. 1 0-2
Top P Порог nucleus-сэмплирования. Модель учитывает токены, совокупная вероятность которых достигает этого значения. 1 0-1
Штраф за частотность Накладывает штраф на токены в зависимости от того, как часто они уже встречались, уменьшая дословные повторы. 0 -2-2
Штраф за присутствие Накладывает штраф на токены, которые уже встречались хотя бы один раз, побуждая модель вводить новые темы. 0 -2-2
Максимум токенов Максимальное количество токенов, генерируемых в ответе. Оставьте поле пустым, чтобы не указывать параметр и использовать значение провайдера по умолчанию. - Любое целое число
Завершения (n) Количество вариантов ответа чата или завершения для входных данных. 1 Любое целое число
Seed Фиксированный seed для максимально воспроизводимого результата. Оставьте поле пустым для случайных результатов. - Любое целое число
Последовательности остановки Список последовательностей, разделённых запятыми, при обнаружении которых API прекращает генерировать последующие токены. - Любой текст
Формат ответа Выберите объект JSON, чтобы принудительно получать от модели корректный вывод JSON (только для конечной точки чата). Нет Нет / объект JSON
Потоковая передача При включении ответ передаётся в виде событий, отправляемых сервером. Отключите параметр, чтобы получить весь ответ сразу. Выкл. Вкл. / Выкл.