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

Как использовать Ollama с графическим интерфейсом (и хостинговым резервом)

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

Обновлено

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

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

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

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

  • В Ollama нет встроенного окна чата; вы добавляете интерфейс, такой как Open WebUI.
  • Фронтенды общаются с Ollama или любым URL, совместимым с OpenAI, поэтому один графический интерфейс может поддерживать оба подключения.
  • Для подключения к хостингу используйте базовый URL https://api.ollamansfw.com/v1 и ID модели uncensored.
  • Потоковая передача, вызов функций и JSON-режим работают через хостинговый эндпоинт со стандартными настройками клиента.

Почему Ollama нужен отдельный GUI

Если вы хотите узнать, как использовать ollama с графическим интерфейсом, первый факт, который нужно принять, заключается в том, что проект Ollama — это сервер и инструмент командной строки. Он загружает модели и отвечает на запросы на локальном порту. Окно чата — задача других разработчиков, и их несколько.

Это разделение полезно. Поскольку Ollama предоставляет API в стиле OpenAI на вашей машине (по умолчанию на порту 11434 под /v1), любой интерфейс, позволяющий задать пользовательский базовый URL OpenAI, может его использовать. Это же свойство означает, что позже вы можете направить этот интерфейс в другое место. В этой статье мы сначала разберем локальную настройку, а затем добавим хостинговый эндпоинт как второе подключение.

Выберите фронтенд

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

  • Open WebUI. Интерфейс для браузера с возможностью самостоятельного размещения. Он напрямую поддерживает Ollama и принимает любое совместимое с OpenAI подключение. Обычно устанавливается с помощью Docker или pip.
  • Десктопные клиенты. Нативные приложения, такие как Chatbox или Msty, позволяют добавить сервер Ollama или провайдера, совместимого с OpenAI, через экран настроек. Сервер запускать не нужно.
  • Интерфейсы для ролевых игр и написания текстов. SillyTavern позволяет добавить конечную точку, совместимую с OpenAI, и существуют аналогичные инструменты для создания длинных произведений и персонажей-компаньонов для совершеннолетних.

Если вы не хотите использовать контейнер Docker, десктопный клиент — самый короткий путь. Если вам нужен общий интерфейс для нескольких пользователей в одной сети, обычно выбирают Open WebUI.

Пошаговая инструкция с Open WebUI

  1. Установите и запустите Ollama, затем загрузите модель с помощью команды ollama pull. Убедитесь, что она отвечает из терминала, прежде чем переходить к следующему шагу.
  2. Запустите Open WebUI. В случае с Docker обычно используется публикация порта и монтирование тома для его данных.
  3. Откройте веб-страницу, создайте первую локальную учетную запись (она станет администратором) и найдите раздел подключений в настройках администратора.
  4. Проверьте, что URL Ollama указывает на машину, где запущен Ollama. Когда они находятся на одном хосте, это обычно локальный адрес на порту 11434. Когда Open WebUI запущен внутри контейнера, localhost означает сам контейнер, что является самой частой причиной, по которой список моделей остается пустым.
  5. Обновите страницу, выберите модель из выпадающего списка и отправьте сообщение.

Это полноценный локальный интерфейс. Ничего не покидает ваш компьютер, а скорость зависит от вашего GPU или CPU.

Добавление хостингового подключения, совместимого с OpenAI

Теперь альтернативный вариант. Предположим, что модель, которую вы можете запустить локально, слишком мала для длинной сцены, или ваш GPU занят рендерингом. Вы можете добавить второе подключение к тому же графическому интерфейсу. Для этого вам нужен API-ключ, который вы можете получить на странице API-ключ после входа через Google или по электронной почте и паролю. Пробный баланс в размере $0,50 доступен в один клик, не требует оплаты и действует 7 дней.

В Open WebUI добавьте подключение OpenAI со следующими значениями:

  • Базовый URL: https://api.ollamansfw.com/v1
  • API-ключ: ваш ключ, отправляемый как Authorization: Bearer
  • Модель: uncensored

Если вы предпочитаете использовать переменные окружения при запуске контейнера, Open WebUI документирует OPENAI_API_BASE_URL и OPENAI_API_KEY для этой цели:

docker run -d -p 3000:8080 \
  -e OPENAI_API_BASE_URL=https://api.ollamansfw.com/v1 \
  -e OPENAI_API_KEY=YOUR_KEY \
  -v open-webui:/app/backend/data \
  --name open-webui ghcr.io/open-webui/open-webui:main
# model to pick in the UI: uncensored

После обновления в выпадающем списке моделей должен появиться uncensored рядом с вашими локальными моделями. Интерфейс находит его через GET /v1/models. Теперь вы можете переключаться между локальной моделью и хостинговой в одном списке бесед.

Протестируйте эндпоинт вне интерфейса

Когда интерфейс показывает неясную ошибку, самый быстрый способ определить, проблема в ключе или в интерфейсе, — это прямой вызов. Вот потоковый запрос с помощью curl:

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

Вы должны увидеть серию строк data:, заканчивающихся информацией об использовании. Если это работает, ключ и URL в порядке, и проблема находится в интерфейсе. На странице устранения неполадок описаны типичные ошибки, такие как отсутствие /v1 или лишний пробел в ключе.

Те же настройки клиента, которые вы используете для локальных моделей, в основном сохраняются. Temperature, top_p, стоп-последовательности, seed и штрафы передаются модели.

Использование хостингового эндпоинта в вашем коде

Интерфейс — это один клиент. Скрипты и небольшие приложения — другое, и хостинговый эндпоинт работает со стандартными SDK OpenAI. Поддерживаются вызов функций и JSON-режим, что важно, если ваш интерфейс или агент их использует.

from openai import OpenAI

client = OpenAI(base_url="https://api.ollamansfw.com/v1", api_key="YOUR_KEY")

resp = client.chat.completions.create(
    model="uncensored",
    response_format={"type": "json_object"},
    messages=[
        {"role": "system", "content": "Reply with a JSON object with keys title and summary."},
        {"role": "user", "content": "A short story about a lighthouse keeper."},
    ],
)
print(resp.choices[0].message.content)

В Node.js шаблон идентичен:

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.ollamansfw.com/v1",
  apiKey: process.env.API_KEY,
});

const stream = await client.chat.completions.create({
  model: "uncensored",
  stream: true,
  messages: [{ role: "user", content: "Name three sailing knots." }],
});
for await (const part of stream) {
  process.stdout.write(part.choices[0]?.delta?.content ?? "");
}

В быстром старте есть больше примеров, включая вызовы инструментов с параметром tool_choice.

Распространённые проблемы и решения

Большинство сбоев при настройке интерфейса происходят из-за короткого списка причин.

  • Пустой список моделей для локального подключения. Интерфейс не может подключиться к Ollama. Проверьте адрес и помните, что контейнерный интерфейс не видит ваш хост как localhost.
  • Ошибка 401 от хостинговой конечной точки. Ключ отсутствует или неверен. Вставьте его снова без пробелов и убедитесь, что GUI отправляет его как токен Bearer.
  • 404 на каждом запросе. Базовый URL, вероятно, не содержит /v1 или содержит его дважды.
  • Ответы останавливаются или интерфейс зависает. Некоторые интерфейсы буферизуют потоковый вывод через прокси. Попробуйте прямой тест с помощью утилиты curl выше, и если он работает, проверьте настройки прокси перед вашим GUI.
  • Медленные локальные ответы. Модель слишком большая для вашей видеопамяти и выгружается в системную память. Выберите меньшую степень квантования или переключите этот чат на хостинговое подключение.

Имейте в виду одно правило для приложений для написания художественной литературы и компаньонов для взрослых: хостинговая модель отвечает без отказов по контенту для законного использования взрослыми, но сексуальный контент с участием несовершеннолетних никогда не разрешен, и сервис обеспечивает это как жесткое ограничение.

Ограничения и расходы, о которых нужно знать в графическом интерфейсе

Интерфейсы могут отправлять несколько запросов одновременно, например, когда они генерируют заголовок чата в фоне, пока основной ответ передается потоком. Полный ключ позволяет 8 одновременных запросов и 300 запросов в минуту. Пробный ключ позволяет 2 одновременных и 60 в минуту. Потоковый запрос удерживает свой слот до конца потока. Если вы превысите лимит, вы получите HTTP 429 с кодом rate_limited или concurrency, а при временной перегрузке — 429 с заголовком Retry-After: 5. Отключение генерации заголовков в фоне в интерфейсе — простое решение для пробного ключа.

Стоимость рассчитывается за токен: $0,15 за 1 млн входных токенов и $0,50 за 1 млн выходных токенов. Один ход чата с историей в 2000 токенов и ответом в 500 токенов стоит $0,0003 плюс $0,00025, что составляет $0,00055. В заголовках ответа присутствует X-Balance-USD, поэтому вы можете следить за уменьшением вашего кредита. Подробности о пополнении доступны на странице цен. Этот сайт работает только с криптовалютой: USDT в сети TRC20 или USDC в сети Base, любая целая сумма от $20 до $500.

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

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

Есть ли у Ollama собственный графический интерфейс?

Ollama — это в основном сервер и инструмент командной строки. Окна чата предоставляются отдельными проектами, такими как Open WebUI или десктопные клиенты, к которым вы подключаетесь.

Может ли один графический интерфейс использовать локальную модель и размещённую?

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

Почему в моём графическом интерфейсе нет моделей для размещённого эндпоинта?

Проверьте, что базовый URL заканчивается на /v1, в ключе нет случайных пробелов, а графическому интерфейсу разрешено выполнять запрос GET /v1/models. Если ошибка сохраняется, введите идентификатор модели uncensored вручную.

Что делать, если я получаю HTTP 429?

Вы достигли лимита скорости или параллелизма. Уменьшите количество одновременных запросов, подождите указанное в заголовке Retry-After количество секунд и повторите запрос.