Локальное и Production развертывание связки Ollama с поддержкой GPU и LiteLLM прокси для работы с моделями через OpenAI-совместимый API. Проект оптимизирован для Windows, предлагая полностью автоматизированное развертывание через PowerShell-скрипт (deploy.ps1). Для пользователей Linux/macOS также доступен Bash-скрипт (deploy.sh).
Для использования в production-среде необходимо задать надежные пароли и ключи в файле .env:
POSTGRES_PASSWORD: пароль для базы данных PostgreSQL (например:my_strong_postgres_password).LITELLM_MASTER_KEY: мастер-ключ для доступа к API LiteLLM (например:sk-my_secret_key_123).
.
├── docker-compose.yml # Конфигурация Docker Compose
├── litellm_config.yaml # Конфигурация LiteLLM
├── .env # Переменные окружения (настройки и ключи)
├── README.md # Эта инструкция
├── deploy.ps1 # PowerShell скрипт автоматического развертывания (Windows - Основной)
├── deploy.sh # Bash скрипт развертывания (Linux/macOS)
├── ollama_data/ # Папка для хранения моделей (создается автоматически)
└── postgres_data/ # Данные PostgreSQL (создается автоматически)
- Docker и Docker Compose установлены на системе
- NVIDIA GPU (опционально, но рекомендуется для производительности)
- NVIDIA Container Toolkit установлен для поддержки GPU в контейнерах
# Для Ubuntu/Debian
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart dockerДля Windows пользователей доступен автоматический скрипт развертывания deploy.ps1:
# Запуск с правами администратора (рекомендуется)
.\deploy.ps1
# Показать справку
.\deploy.ps1 -Help
# Пропустить проверку Docker
.\deploy.ps1 -SkipDockerCheck
# Пропустить загрузку моделей и создание custom моделей
.\deploy.ps1 -SkipModelDownload
# Указать дополнительную модель для скачивания
.\deploy.ps1 -Model "llama3.2:3b"
# Задать конкретные модели без интерактивного меню
.\deploy.ps1 -ActModel "qwen2.5-coder:14b" -PlanModel "deepseek-r1:14b"
# Полное удаление стека и данных
.\deploy.ps1 -UninstallПри запуске скрипта без параметров моделей появится интерактивное меню для выбора профиля:
- 10GB VRAM Optimized (
qwen2.5-coder:7b+deepseek-r1:8b) - Рекомендуется для большинства видеокарт - High Performance (
qwen2.5-coder:14b+deepseek-r1:14b) - Требуется 16GB+ видеопамяти - Custom Models - Ввод своих моделей
- Skip Model Download - Пропустить загрузку
Аналогичный функционал реализован в Bash-скрипте deploy.sh:
# Сделать скрипт исполняемым (при первом запуске)
chmod +x deploy.sh
# Запуск развертывания с интерактивным меню выбора моделей
./deploy.sh
# Показать справку
./deploy.sh -Help
# Задать конкретные модели без интерактивного меню
./deploy.sh -ActModel "qwen2.5-coder:14b" -PlanModel "deepseek-r1:14b"
# Полное удаление стека и данных
./deploy.sh -Uninstall- Загружают переменные окружения (включая ключи) из файла
.env - Проверяют наличие и работоспособность Docker
- Создают необходимые директории (
ollama_data,postgres_data) - Запускают Docker Compose стек
- Загружают базовые модели в Ollama и создают Custom Modelfiles
- Выполняют healthcheck сервисов (LiteLLM)
- Выводят итоговую информацию для настройки клиентов
# Запуск в фоновом режиме
docker compose up -d
# Просмотр логов
docker compose logs -f
# Остановка стека
docker compose downПосле запуска контейнера Ollama, нужно скачать модель:
# Скачать модель qwen2.5-coder:7b
docker exec ollama ollama pull qwen2.5-coder:7b
# Проверить список доступных моделей
docker exec ollama ollama list# Проверить доступность Ollama
curl http://localhost:11434/api/tags# Проверить доступность LiteLLM
curl http://localhost:4000/health
# Проверить список моделей через LiteLLM
curl http://localhost:4000/v1/models \
-H "Authorization: Bearer <ваш_LITELLM_MASTER_KEY>"http://localhost:4000
# Запрос к модели через LiteLLM (замените <ваш_LITELLM_MASTER_KEY> на ваш ключ из .env)
curl http://localhost:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_secure_litellm_master_key_here" \
-d '{
"model": "qwen2.5-coder:7b-act",
"messages": [
{"role": "user", "content": "Напиши пример создания простого окна на Delphi VCL"}
],
"temperature": 0.7
}'Эта модель будет писать код для Delphi VCL.
- API Provider: OpenAI Compatible
- Base URL:
http://localhost:4000/v1(обязательно с/v1на конце) - API Key:
Ваш LITELLM_MASTER_KEY из .env(например:your_secure_litellm_master_key_here) - Model ID:
qwen2.5-coder:7b-act(или та модель, которую вы выбрали при установке)
В блоке MODEL CONFIGURATION:
- Supports Images: ❌ Снимите галочку (Qwen не умеет смотреть картинки, если оставить галочку, при прикреплении скриншота будет ошибка)
- Enable R1 messages format: ❌ Снимите галочку
- Context Window Size:
32768(На вашем скрине 128000. Лучше поставьте 32768, как мы прописывали в конфигах, иначе Ollama может "съесть" всю оперативную память компьютера и зависнуть) - Max Output Tokens:
-1(без ограничений)
Переключитесь на вкладку Plan Mode и заполните так:
- API Provider: OpenAI Compatible
- Base URL:
http://localhost:4000/v1 - API Key:
Ваш LITELLM_MASTER_KEY из .env - Model ID:
deepseek-r1:8b-plan(или та модель, которую вы выбрали при установке)
В блоке MODEL CONFIGURATION:
- Supports Images: ❌ Снимите галочку
- Enable R1 messages format: ✅ ОБЯЗАТЕЛЬНО ПОСТАВЬТЕ ГАЛОЧКУ! (Это супер-важная настройка специально для моделей R1. Она скажет расширению Cline прятать "размышления" модели в тегах
<think>, чтобы они не мешали основному ответу) - Context Window Size:
32768 - Max Output Tokens:
-1
| Переменная | Значение по умолчанию | Описание |
|---|---|---|
| OLLAMA_IMAGE | ollama/ollama:latest |
Образ Ollama |
| LITELLM_IMAGE | ghcr.io/berriai/litellm:main-latest |
Образ LiteLLM |
| OLLAMA_PORT | 11434 |
Порт Ollama |
| LITELLM_PORT | 4000 |
Порт LiteLLM |
- Модель по умолчанию:
qwen2.5-coder:7b-act - Эндпоинт Ollama:
http://ollama:11434 - Мастер-ключ: загружается из
.env(LITELLM_MASTER_KEY) - URL базы данных: загружается из
.env(DATABASE_URL)
Конфигурация теперь динамически генерируется скриптом развертывания на основе выбранных моделей.
- Скачать модель в Ollama:
docker exec ollama ollama pull <название-модели>- Добавить модель в
litellm_config.yaml:
model_list:
- model_name: qwen2.5-coder:7b-act
litellm_params:
model: ollama/qwen2.5-coder:7b-act
api_base: http://ollama:11434
api_key: "ollama"
- model_name: llama3.2:3b # Новая модель
litellm_params:
model: ollama/llama3.2:3b
api_base: http://ollama:11434
api_key: "ollama"- Перезапустить LiteLLM:
docker compose restart litellm# Проверить доступность GPU в Docker
docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
# Если GPU не доступен, проверьте установку NVIDIA Container Toolkit
nvidia-container-cli --version# Проверить доступность сервисов
docker compose ps
# Проверить логи конкретного сервиса
docker compose logs ollama
docker compose logs litellm# Проверить свободное место на диске
df -h
# Очистить кэш Docker (осторожно!)
docker system prune -aПроект включает файл .clinerules, который содержит подробные инструкции для работы с кодом на Delphi (Object Pascal). Этот файл задает контекст для AI-ассистента при генерации и анализе кода.
Структура проекта Delphi:
ProjectRoot/
├── Source/ # Исходный код
│ ├── Core/ # Основные модули
│ ├── Forms/ # Формы и их модули
│ ├── Components/ # Кастомные компоненты
│ ├── Services/ # Сервисные классы
│ └── Utils/ # Вспомогательные утилиты
├── Packages/ # Пакеты Delphi
│ ├── Runtime/ # Runtime пакеты
│ └── DesignTime/ # DesignTime пакеты
└── Scripts/ # Скрипты сборки
Управление памятью:
- Обязательное использование
try...finallyблоков - Использование
FreeAndNilдля безопасного освобождения объектов - Правильная работа с интерфейсами (reference counting)
Соглашения об именовании:
T- префикс для типов (классов, записей)F- префикс для приватных полей классаI- префикс для интерфейсов- Константы в верхнем регистре
Сборка без IDE:
- Компиляция через
dcc32.exe,dcc64.exeилиMSBuild - Автоматизация сборки через
.batи PowerShell скрипты - Разделение на runtime и designtime пакеты
Помимо qwen2.5-coder:7b и qwen2.5-coder:14b, для разработки на Delphi хорошо подходят:
- deepseek-coder:6.14b - отлично понимает Object Pascal, хорош для работы с VCL
- codellama:14b - имеет хорошую поддержку Delphi
- wizardcoder:14b - хорошо справляется с генерацией компонентов
# Для Delphi разработки рекомендуется
docker exec ollama ollama pull deepseek-coder:6.14b
docker exec ollama ollama pull codellama:14bКонфигурация LiteLLM оптимизирована для работы с большими .pas и .dfm файлами:
max_tokens: 16384- увеличенный контекстrequest_timeout: 900- 15 минут для обработкиnum_retries: 5- больше попыток при ошибках
# Запрос на создание компонента Delphi
curl http://localhost:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_secure_litellm_master_key_here" \
-d '{
"model": "deepseek-coder:6.14b",
"messages": [
{"role": "system", "content": "Ты эксперт по Delphi (Object Pascal). Следуй правилам из .clinerules."},
{"role": "user", "content": "Создай кастомный компонент TMyButton, наследующий от TButton"}
],
"temperature": 0.7,
"max_tokens": 4096
}'Проект поддерживает архитектуру разделения ролей для разработки на Delphi VCL:
- Модель:
deepseek-r1:8b(оптимально для 10GB VRAM) илиdeepseek-r1:14b(High Performance) - Назначение: Анализ архитектуры, выявление проблем, проектирование решений
- Задачи:
- Анализ .pas модулей и связей в .dfm
- Поиск утечек памяти и архитектурных проблем
- Проектирование компонентов и интерфейсов
- Составление пошаговых планов модификации кода
- Правила: Следует
.clinerules-plan
- Модель:
qwen2.5-coder:7b(оптимально для 10GB VRAM) илиqwen2.5-coder:14b(High Performance) - Назначение: Быстрая реализация утвержденных планов
- Задачи:
- Написание готового к компиляции Object Pascal кода
- Строгое соблюдение правил управления памятью VCL
- Сохранение целостности больших функций
- Работа с DFM-файлами
- Правила: Следует
.clinerules-act
- Plan Mode: Анализирует код, выявляет проблемы, составляет план
- Act Mode: Берет утвержденный план и реализует его в виде кода
В litellm_config.yaml генерируются настройки для обеих моделей:
- Модель Plan - для аналитического мышления (temperature: 0.3, max_tokens: 32768)
- Модель Act - для генерации кода (temperature: 0.8, max_tokens: 32768)
- Для анализа и планирования: Выберите модель
deepseek-r1:8b-plan(или ту, что выбрали в меню) - Для реализации кода: Выберите модель
qwen2.5-coder:7b-act(или ту, что выбрали в меню) - Base URL:
http://localhost:4000/v1 - API Key: Ваш
LITELLM_MASTER_KEY
# Скрипт развертывания автоматически предложит загрузить модели.
# Либо вы можете скачать их вручную:
.\deploy.ps1 -ActModel "qwen2.5-coder:14b" -PlanModel "deepseek-r1:14b"Проект предоставляется как есть. Используйте на свой страх и риск.

