Ollama
Конвертация Ollama API в Meridian — local-first inference, OpenAI-совместимый формат, streaming, tool calling и embeddings.
Обзор
Ollama — local-first, OpenAI-совместимый inference-движок для запуска больших языковых моделей на персональных компьютерах или серверах. Meridian делегирует обработку OpenAI-реализации, поддерживая при этом специфические для Ollama требования к конфигурации. Ключевые особенности:
- Local-first развёртывание — запуск моделей локально или на приватной инфраструктуре;
- OpenAI API-совместимость — идентичный формат запроса/ответа;
- Полная поддержка фич — chat, text, embeddings и streaming;
- Tool calling — полное определение и исполнение функций;
- Self-hosted — не требует внешней API-зависимости.
Поддерживаемые операции
| Операция | Non-Streaming | Streaming | Endpoint |
|---|---|---|---|
| Chat Completions | ✅ | ✅ | /v1/chat/completions |
| Responses API | ✅ | ✅ | /v1/chat/completions |
| Text Completions | ✅ | ✅ | /v1/completions |
| Embeddings | ✅ | — | /v1/embeddings |
| List Models | ✅ | — | /v1/models |
| Image Generation | ❌ | ❌ | — |
| Speech (TTS) | ❌ | ❌ | — |
| Transcriptions (STT) | ❌ | ❌ | — |
| Files | ❌ | ❌ | — |
| Batch | ❌ | ❌ | — |
Неподдерживаемые операции (❌): Speech, Transcriptions, Files и Batch не поддерживаются upstream-API Ollama. Возвращают UnsupportedOperationError.
Ollama — self-hosted. Убедитесь, что у вас запущен инстанс Ollama и сконфигурирован корректный BaseURL (например, http://localhost:11434).
1. Chat Completions
Параметры запроса
Ollama поддерживает все стандартные параметры OpenAI chat completion. Полное описание параметров и их поведения — на странице OpenAI Chat Completions.
Фильтруемые параметры
Удаляются для совместимости с Ollama:
prompt_cache_key— не поддерживается;verbosity— специфика Anthropic;store— не поддерживается;service_tier— не поддерживается.
Ollama поддерживает все стандартные типы сообщений, tools, responses и streaming-форматы OpenAI. Детали по обработке сообщений, конвертации tools, responses и streaming — на странице OpenAI Chat Completions.
2. Responses API
Внутренне конвертируется в Chat Completions:
ResponsesRequest → ChatRequest → ChatCompletion → ResponsesResponseПоддержка параметров такая же, как у Chat Completions.
3. Text Completions
Ollama поддерживает legacy формат text completion:
| Параметр | Маппинг |
|---|---|
prompt | Прямой проброс |
max_tokens | max_tokens |
temperature, top_p | Прямой проброс |
stop | Stop sequences |
4. Embeddings
Ollama поддерживает text embeddings:
| Параметр | Примечания |
|---|---|
input | Текст или массив текстов |
model | Имя embedding-модели |
encoding_format | "float" или "base64" |
dimensions | Кастомные размерности на выходе (опционально) |
Ответ содержит embedding-векторы и информацию о потреблённых токенах.
5. List Models
Возвращает список моделей, загруженных в Ollama, с информацией о capabilities и контексте.
Неподдерживаемые фичи
| Фича | Причина |
|---|---|
| Speech / TTS | Не предоставляется API Ollama |
| Transcription / STT | Не предоставляется API Ollama |
| Batch Operations | Не предоставляется API Ollama |
| File Management | Не предоставляется API Ollama |
Ollama следует спецификации OpenAI API в части формата запроса и обработки ошибок. Аутентификация опциональна и зависит от способа развёртывания (для локального доступа аутентификация не требуется, для защищённых инстансов — опциональный Bearer-токен).
Важно: BaseURL должен быть явно задан и указывать на ваш инстанс Ollama (например, http://localhost:11434 для локального, https://ollama.example.com для удалённого).
Конфигурация
# Указать на локальный инстанс Ollama
curl -X POST http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "ollama/llama3.1:latest",
"messages": [{"role": "user", "content": "Hello"}]
}'
# Шлюз должен быть сконфигурирован с BaseURL для OllamaНастройка окружения:
- Установите Ollama с https://ollama.ai
- Скачайте модель:
ollama pull llama3.1 ollama pull mistral ollama pull neural-chat - Запустите сервер Ollama:
ollama serve - Проверьте, что он работает:
curl http://localhost:11434/api/tags
Подробнее о настройке BaseURL и параметров провайдера — на странице Настройка провайдеров.
Замечания по производительности
Streaming для больших моделей: Для лучшего пользовательского опыта с большими моделями используйте streaming:
{
"model": "llama3.1:latest",
"messages": [...],
"stream": true
}Контекст токенов: У разных моделей разные окна контекста:
- Llama 3.1 70B: 128K токенов;
- Mistral 7B: 32K токенов;
- Neural Chat 7B: 8K токенов.
GPU-ускорение: Ollama автоматически использует GPU, если он доступен. Для CPU-only режима убедитесь, что таймаут достаточен.
Популярные модели
| Модель | Размер | Контекст | Скорость |
|---|---|---|---|
| llama3.1:latest | Varies | 128K | Fast |
| mistral:latest | 7B | 32K | Very Fast |
| neural-chat:latest | 7B | 8K | Very Fast |
| orca-mini:latest | 3B | 3K | Very Fast |
| openchat:latest | 7B | 8K | Very Fast |