Перейти к содержимому
18.2k

Клиенты, совместимые с Ollama

opencodex отвечает на часть HTTP API Ollama, поэтому инструмент, умеющий работать только с Ollama, может использовать модели, уже настроенные в opencodex. Запросы переводятся на путь Chat Completions и отправляются выбранному провайдеру. opencodex не скачивает, не хранит и не запускает модели на вашем компьютере.

Укажите адрес прокси как хост Ollama. Для локальной установки по умолчанию:

Terminal window
export OLLAMA_HOST=http://127.0.0.1:10100
curl "$OLLAMA_HOST/api/tags"

Если прокси требует ключ API (например, при привязке к 0.0.0.0), передавайте его так же, как для /v1/chat/completions, например Authorization: Bearer <opencodex key>. Ключ с ограничением по моделям видит и использует только разрешённые модели. Эти конечные точки доступны только на основном слушателе; слушатель loopback без аутентификации, Remote Link и вход управления хабом их не предоставляют.

Конечная точка Поведение
GET /api/version Версия opencodex.
GET /api/tags Модели настроенных провайдеров в виде имён provider/model.
POST /api/show { "model": "provider/model" } возвращает только известные сведения; без размера файла, дайджеста, шаблона и лицензии.
POST /api/chat Диалог с сообщениями system, user, assistant и tool.
POST /api/generate Один запрос с необязательным system.

Все остальные пути /api/* остаются частью API управления opencodex.

  • model: имя из /api/tags.
  • stream: по умолчанию true (JSON с разделением строками). Укажите false, чтобы получить один ответ JSON.
  • images: PNG, JPEG, GIF или WebP в base64 в пользовательских сообщениях (chat) или в запросе (generate).
  • tools (только chat): функциональные инструменты. Отправляйте сообщение assistant обратно без изменений, включая id каждого вызова; результат tool сопоставляется по tool_call_id, а при его отсутствии — по tool_name.
  • options: temperature, top_p, num_predict и stop.
  • format: только "json".

Всё остальное отклоняется с HTTP 400, а не игнорируется: think, keep_alive, suffix, raw, template, context, прочие options, format в виде JSON-схемы и URL изображений. Конечные точки Ollama для управления моделями и эмбеддингов не предоставляются.

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

Завершённый ответ содержит done: true и done_reason со значением stop, tool_calls или length. prompt_eval_count и eval_count появляются, когда провайдер сообщил об использовании; поля длительности не передаются. Поток отправляет ровно одну строку done: true после полного завершения ответа вышестоящего сервиса.

Ошибки имеют форму Ollama { "error": "message" } и сохраняют HTTP-статус, включая Retry-After при ограничении частоты и отказах из-за загрузки. Ответ, остановленный фильтром содержимого или по неизвестной причине, возвращается как ошибка, а не как обычная остановка. Если поток сбоит после начала, его последняя строка — объект error, и строка done: true за ней не следует.

Запросы видны в журнале запросов панели управления, как и остальной трафик, а заголовок ответа x-opencodex-request-id указывает на соответствующую строку.