RU ▾
Получить API-ключ

API Ollama против API OpenAI: эндпоинты и код

Вопрос Ollama API против OpenAI API сводится к двум форматам запросов и двум способам запуска модели. Ollama имеет собственный нативный API и также OpenAI-совместимый слой, поэтому переход на размещённый эндпоинт в стиле OpenAI может потребовать изменения базового URL и ключа.

Обновлено

Настольный компьютер и облачный сервер, связанные двумя легкими мостами, передающими идентичные сообщения
Окно чата, подключенное к локальному компьютеру и облачному серверу светящимися кабелями

Карта не нужна. После входа в систему получите $0,50 бесплатного пробного баланса в один клик (один раз на человека).

Получить API-ключ

Ключевые моменты

  • Ollama имеет нативные маршруты в /api и слой совместимости с OpenAI в /v1; клиенты, написанные для OpenAI SDK, обычно работают с обоими.
  • Ollama в нативном режиме потоково передает JSON, разделенный новой строкой, тогда как формат OpenAI потоково передает серверные события (SSE).
  • Переход с локального на размещённый означает изменение базового URL, ключа и имени модели, а не вашего кода.
  • Локальный режим сохраняет данные на вашем компьютере; хостинг снимает работу с оборудованием и добавляет оплату за каждый токен.

Краткая версия

Оба API просят вас отправить POST-запрос со списком сообщений и получить текст в ответ. Разница в структуре запроса, месте расположения сервера и том, кто платит за GPU. Ollama запускает модели на вашем собственном компьютере и слушает порт 11434. API OpenAI — это размещённый сервис со своими платными моделями. В сравнении Ollama API и OpenAI API люди часто упускают третий момент: Ollama также предоставляет маршруты, совместимые с OpenAI, поэтому два формата пересекаются.

Это пересечение делает миграцию дешёвой. Если ваше приложение уже использует OpenAI SDK, вы можете направить его на локальный Ollama сегодня и на размещённый OpenAI-совместимый URL завтра. Размещённый эндпоинт на этом сайте — один из таких. Он обслуживает единственную модель, uncensored, по адресу https://api.ollamansfw.com/v1, и не является официальным продуктом OpenAI, Meta или любой другой лаборатории.

Различия по эндпоинтам

ЗадачаНативный OllamaВ стиле OpenAI
ЧатPOST /api/chatPOST /v1/chat/completions
Одиночный промптPOST /api/generatePOST /v1/responses или chat completions
Список моделейGET /api/tagsGET /v1/models
АутентификацияПо умолчанию нетAuthorization: Bearer key
Потоковая передачаJSON, разделенный новой строкойСерверные события (SSE), завершающиеся маркером done
Имя моделиЛюбая скачанная вами модель, например llama3Что угодно, что перечисляет провайдер

Ollama также предоставляет эндпоинт /v1/chat/completions и эндпоинт /v1/models на том же порту, что позволяет OpenAI-клиентам работать с ним. По умолчанию для нативных вызовов используется потоковая передача, поэтому установите stream: false, если вам нужен единый JSON-ответ.

Хостинг реализует POST /v1/chat/completions, POST /v1/responses и GET /v1/models, а также проверку баланса по адресу GET /v1/balance. Полный список см. в документации API.

Один запрос тремя способами

Нативный Ollama на Python:

import requests

r = requests.post(
    "http://localhost:11434/api/chat",
    json={
        "model": "llama3",
        "messages": [{"role": "user", "content": "Say hello in five words."}],
        "stream": False,
    },
)
print(r.json()["message"]["content"])

OpenAI SDK с настройками для локального и хостинга рядом. Изменяется только закомментированная строка:

from openai import OpenAI

# Local Ollama through its OpenAI-compatible layer:
# client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")

# Hosted endpoint, same code from here on:
client = OpenAI(base_url="https://api.ollamansfw.com/v1", api_key="YOUR_KEY")

resp = client.chat.completions.create(
    model="uncensored",   # local would be e.g. "llama3"
    messages=[{"role": "user", "content": "Say hello in five words."}],
)
print(resp.choices[0].message.content)

И curl против хостинга с включенной потоковой передачей:

curl https://api.ollamansfw.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"uncensored","messages":[{"role":"user","content":"Hello"}],"stream":true}'

Парсинг отличается на нативной стороне: каждая потоковая строка — это JSON-объект с message.content, а последняя содержит done: true. В формате OpenAI каждое событие начинается с data: , содержит фрагмент choices[0].delta.content, а поток завершается символом [DONE]. Используйте SDK, и вы не увидите ни того, ни другого.

Где каждый из них уместен

Локальный Ollama — правильный выбор, когда конфиденциальность стоит на первом месте, у вас есть GPU с достаточной памятью для нужной модели или вы экспериментируете с множеством моделей. Ничего не покидает вашу машину, и нет счёта за токен. Расходы проявляются в виде оборудования, электроэнергии и вашего времени. Наше руководство по использованию Ollama с графическим интерфейсом охватывает удобную сторону этого маршрута.

Хостинг с совместимостью с OpenAI лучше подходит, когда у вас нет оборудования, нужны параллельные запросы, вы запускаете бота или сервис для других людей или хотите стабильный URL, не зависящий от того, включен ли ваш ноутбук. Полный ключ позволяет 8 параллельных запросов и 300 запросов в минуту. Контекстное окно составляет 100 000 токенов, что больше, чем могут удержать в памяти многие локальные конфигурации.

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

Миграция с локального Ollama на хостинг

  1. Сначала переключитесь на формат OpenAI. Если ваш код вызывает /api/chat, перенесите его в OpenAI SDK, указав маршрут /v1 Ollama. Убедитесь, что он все еще работает локально.
  2. Получите ключ. Зарегистрируйтесь и получите $0,50 пробного баланса на странице API-ключа. Оплата не требуется, срок действия — 7 дней.
  3. Измените три значения. Базовый URL на https://api.ollamansfw.com/v1, ключ на ваш, модель на uncensored.
  4. Проверьте параметры. Temperature, top_p, stop, seed и штрафы передаются напрямую. Локальные опции, такие как num_ctx или keep_alive Ollama, не применяются; окно фиксировано на уровне 100 000 токенов.
  5. Добавьте логику повтора. Хостинговый API возвращает 429 с rate_limited или concurrency при превышении лимита, а также 429 с Retry-After: 5 при временной перегрузке. Локальные серверы редко так делают, поэтому существующий код может не обрабатывать это.

Если что-то сломается после переключения, статья о распространённых ошибках API Ollama охватывает частые причины, такие как неправильные порты и отсутствующие имена моделей.

Стоимость хостинга и его ограничения

Оплата по факту использования с предоплаченного баланса: $0,15 за 1 млн входных токенов и $0,50 за 1 млн выходных токенов. Один запрос в чате с 1 000 входными и 400 выходными токенами стоит $0,00015 + $0,0002 = $0,00035, поэтому $20 покрывает около 57 000 таких запросов. Неудачные или отклонённые запросы не оплачиваются, а баланс не сгорает. Пополнение от $20 до $500 с бонусами +5% от $50, +10% от $100 и +15% от $200. Оплата только криптовалютой (USDT в сети TRC20 или USDC в сети Base). Подробнее на странице с ценами.

Ограничения: только текст, поэтому нет эмбеддингов, генерации изображений или дообучения. Если вы полагаетесь на локальные эмбеддинги, оставьте их локальными. Модель настроена на ответы без отказов в контенте для законного использования взрослыми. Сексуальный контент с участием несовершеннолетних всегда запрещен. Промпты не используются для обучения.

Вопросы и ответы

Совместимо ли API Ollama с API OpenAI?

Частично. Ollama имеет встроенные маршруты под /api и также обслуживает маршруты в стиле OpenAI, такие как /v1/chat/completions, поэтому клиенты OpenAI SDK могут с ним работать.

Что нужно изменить при переходе с локального Ollama на хостинг?

Базовый URL, API-ключ и имя модели. Если ваш код уже использует OpenAI SDK, ничего больше менять не нужно.

Поддерживает ли хостинговый API эмбеддинги, как Ollama?

Нет. Это только генерация текста: chat completions и responses, без эмбеддингов, изображений или дообучения.

Является ли Ollama бесплатной?

Программное обеспечение бесплатное для загрузки и запуска. Вы всё равно платите за оборудование и электроэнергию, в то время как размещённый API взимает плату за каждый токен.