> For the complete documentation index, see [llms.txt](https://docs.clore.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.clore.ai/guides/guides_v2-ru/yazykovye-modeli/localai-openai-compatible.md).

# LocalAI

Запустите совместимый с OpenAI локальный API с помощью LocalAI.

{% hint style="success" %}
Все примеры можно запускать на GPU-серверах, арендуемых через [CLORE.AI Marketplace](https://clore.ai/marketplace).
{% endhint %}

## Требования к серверу

| Параметр      | Минимум        | Рекомендуется |
| ------------- | -------------- | ------------- |
| ОЗУ           | 8GB            | 16 ГБ+        |
| VRAM          | 6 ГБ           | 8 ГБ+         |
| Сеть          | 200 Мбит/с     | 500 Мбит/с+   |
| Время запуска | **5–10 минут** | -             |

{% hint style="warning" %}
**Важно:** LocalAI полностью инициализируется при первом запуске в течение 5–10 минут. HTTP 502 в это время — нормально: служба загружает и инициализирует модели.
{% endhint %}

{% hint style="info" %}
LocalAI имеет небольшой вес. Для запуска LLM (модели 7B+) выбирайте серверы с 16 ГБ+ оперативной памяти и 8 ГБ+ видеопамяти.
{% endhint %}

## Что такое LocalAI?

LocalAI предоставляет:

* Полную замену OpenAI API «под ключ»
* Поддержку нескольких форматов моделей
* Генерация текста, изображений, аудио и эмбеддингов
* GPU не обязателен (но с GPU быстрее)

## Поддерживаемые модели

| Тип         | Форматы     | Примеры                       |
| ----------- | ----------- | ----------------------------- |
| LLM         | GGUF, GGML  | Llama, Mistral, Phi           |
| Эмбеддинги  | GGUF        | all-MiniLM, BGE               |
| Изображения | Diffusers   | SD 1.5, SDXL                  |
| Аудио       | Whisper     | Речь в текст (Speech-to-text) |
| TTS         | Piper, Bark | Текст в речь                  |

## Быстрое развертывание

**Docker-образ:**

```
localai/localai:master-aio-gpu-nvidia-cuda-12
```

**Порты:**

```
22/tcp
8080/http
```

**Команда не требуется** - сервер запускается автоматически.

### Проверьте, что всё работает

После развертывания найдите ваш `http_pub` URL в **Моих заказах** и протестируйте:

```bash
# Проверить, готова ли служба
curl https://your-http-pub.clorecloud.net/readyz

# Показать доступные модели
curl https://your-http-pub.clorecloud.net/v1/models

# Получить версию
curl https://your-http-pub.clorecloud.net/version
```

{% hint style="warning" %}
Если вы получаете HTTP 502, подождите 5–10 минут — LocalAI инициализируется дольше, чем другие сервисы.
{% endhint %}

## Предустановленные модели

LocalAI поставляется с несколькими моделями, доступными из коробки:

| Название модели            | Тип          | Описание                      |
| -------------------------- | ------------ | ----------------------------- |
| `gpt-4`                    | Чат          | LLM общего назначения         |
| `gpt-4o`                   | Чат          | LLM общего назначения         |
| `gpt-4o-mini`              | Чат          | Меньшая, быстрая LLM          |
| `whisper-1`                | STT          | Речь в текст (Speech-to-text) |
| `tts-1`                    | TTS          | Текст в речь                  |
| `text-embedding-ada-002`   | Эмбеддинги   | Векторы размерности 384       |
| `jina-reranker-v1-base-en` | Перераanking | Перерангировка документов     |

{% hint style="info" %}
Эти модели работают сразу после запуска без дополнительной настройки.
{% endhint %}

## Доступ к вашему сервису

При развертывании на CLORE.AI доступ к LocalAI осуществляется через `http_pub` URL:

```bash
# Chat completion
curl https://your-http-pub.clorecloud.net/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "gpt-4",
        "messages": [{"role": "user", "content": "Hello!"}]
    }'
```

{% hint style="info" %}
Все `localhost:8080` примеры ниже работают при подключении через SSH. Для внешнего доступа замените на ваш `https://your-http-pub.clorecloud.net/` URL.
{% endhint %}

## Развертывание в Docker (альтернатива)

```bash
docker run -d \
    --gpus all \
    -p 8080:8080 \
    -v /workspace/models:/models \
    -e THREADS=4 \
    -e CONTEXT_SIZE=4096 \
    localai/localai:master-aio-gpu-nvidia-cuda-12
```

## Загрузка моделей

### Из галереи моделей

LocalAI имеет встроенную галерею моделей:

```bash
# Показать доступные модели
curl http://localhost:8080/models/available

# Установить из галереи
curl http://localhost:8080/models/apply -d '{"id": "mistral-7b-instruct"}'
```

### С Hugging Face

```bash
mkdir -p /workspace/models

# Llama 3.1 8B GGUF
wget https://huggingface.co/bartowski/Meta-Llama-3.1-8B-Instruct-GGUF/resolve/main/Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf \
    -O /workspace/models/llama-3.1-8b.gguf

# Mistral 7B GGUF
wget https://huggingface.co/bartowski/Mistral-7B-Instruct-v0.3-GGUF/resolve/main/Mistral-7B-Instruct-v0.3-Q4_K_M.gguf \
    -O /workspace/models/mistral-7b.gguf
```

## Конфигурация модели

Создайте YAML-конфиг для каждой модели:

**models/llama-3.1-8b.yaml:**

```yaml
name: llama-3.1-8b
backend: llama-cpp
parameters:
  model: llama-3.1-8b.gguf
  context_size: 4096
  threads: 8
  gpu_layers: 35
template:
  chat: |
    {{.Input}}
    ### Ответ:
  completion: |
    {{.Input}}
```

## Использование API

### Chat Completions (совместимо с OpenAI)

```python
import openai

# Для внешнего доступа используйте ваш http_pub URL:
client = openai.OpenAI(
    base_url="https://your-http-pub.clorecloud.net/v1",
    api_key="не_требуется"
)

# Или через SSH-туннель:
# client = openai.OpenAI(base_url="http://localhost:8080/v1", api_key="not-needed")

response = client.chat.completions.create(
    model="mistral-7b",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Объясните квантовые вычисления простыми словами."}
    ],
    temperature=0.7,
    max_tokens=500
)

print(response.choices[0].message.content)
```

### Потоковая передача (Streaming)

```python
stream = client.chat.completions.create(
    model="mistral-7b",
    messages=[{"role": "user", "content": "Напишите стихотворение об ИИ"}],
    stream=True
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")
```

### Эмбеддинги

```python
response = client.embeddings.create(
    model="all-minilm",
    input="The quick brown fox jumps over the lazy dog"
)

embedding = response.data[0].embedding
print(f"Размерность эмбеддинга: {len(embedding)}")
```

### Генерация изображений

```python
response = client.images.generate(
    model="stablediffusion",
    prompt="a beautiful sunset over mountains",
    size="512x512",
    n=1
)

image_url = response.data[0].url
```

## Примеры cURL

### Чат

```bash
curl https://your-http-pub.clorecloud.net/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "mistral-7b",
        "messages": [{"role": "user", "content": "Hello!"}]
    }'
```

### Эмбеддинги

```bash
curl https://your-http-pub.clorecloud.net/v1/embeddings \
    -H "Content-Type: application/json" \
    -d '{
        "model": "text-embedding-ada-002",
        "input": "Your text here"
    }'
```

Ответ:

```json
{
  "data": [{"embedding": [0.1, -0.2, ...], "index": 0}],
  "model": "text-embedding-ada-002",
  "usage": {"prompt_tokens": 4, "total_tokens": 4}
}
```

### Текст в речь (TTS)

```bash
curl https://your-http-pub.clorecloud.net/v1/audio/speech \
    -H "Content-Type: application/json" \
    -d '{
        "model": "tts-1",
        "input": "Hello, welcome to LocalAI!",
        "voice": "alloy"
    }' \
    --output speech.wav
```

Доступные голоса: `alloy`, `echo`, `fable`, `onyx`, `nova`, `shimmer`

### Речь в текст (STT)

```bash
curl https://your-http-pub.clorecloud.net/v1/audio/transcriptions \
    -F "file=@audio.mp3" \
    -F "model=whisper-1"
```

Ответ:

```json
{"text": "Транскрибированный текст здесь..."}
```

### Перераanking

Переранжирование документов по релевантности запросу:

```bash
curl https://your-http-pub.clorecloud.net/v1/rerank \
    -H "Content-Type: application/json" \
    -d '{
        "model": "jina-reranker-v1-base-en",
        "query": "Что такое машинное обучение?",
        "documents": [
            "Машинное обучение — это часть ИИ",
            "Сегодня хорошая погода",
            "Глубокое обучение использует нейронные сети"
        ],
        "top_n": 2
    }'
```

Ответ:

```json
{
  "results": [
    {"index": 0, "relevance_score": 0.95},
    {"index": 2, "relevance_score": 0.82}
  ]
}
```

## Полная справочная документация API

### Стандартные эндпоинты (совместимые с OpenAI)

| Эндпоинт                   | Метод | Описание                      |
| -------------------------- | ----- | ----------------------------- |
| `/v1/models`               | GET   | Показать доступные модели     |
| `/v1/chat/completions`     | POST  | Чат-завершение                |
| `/v1/completions`          | POST  | Завершение текста             |
| `/v1/embeddings`           | POST  | Генерация эмбеддингов         |
| `/v1/audio/speech`         | POST  | Текст в речь                  |
| `/v1/audio/transcriptions` | POST  | Речь в текст (Speech-to-text) |
| `/v1/images/generations`   | POST  | Генерация изображений         |

### Дополнительные эндпоинты

| Эндпоинт            | Метод | Описание                     |
| ------------------- | ----- | ---------------------------- |
| `/readyz`           | GET   | Проверка готовности          |
| `/healthz`          | GET   | Проверка состояния           |
| `/version`          | GET   | Получить версию LocalAI      |
| `/v1/rerank`        | POST  | Перерангировка документов    |
| `/models/available` | GET   | Показать модели галереи      |
| `/models/apply`     | POST  | Установить модель из галереи |
| `/swagger/`         | GET   | Документация Swagger UI      |
| `/metrics`          | GET   | Метрики Prometheus           |

#### Получить версию

```bash
curl https://your-http-pub.clorecloud.net/version
```

Ответ:

```json
{"version": "v2.26.0"}
```

#### Документация Swagger

Откройте в браузере для интерактивной документации API:

```
https://your-http-pub.clorecloud.net/swagger/
```

## Ускорение с помощью GPU

### CUDA-бэкенд

```yaml
# В конфиге модели
parameters:
  gpu_layers: 35  # Количество слоёв на GPU
  f16: true       # Использовать FP16
```

### Полная выгрузка на GPU

```yaml
parameters:
  gpu_layers: 99  # Все слои на GPU
  main_gpu: 0     # Идентификатор основного GPU
```

## Несколько моделей

LocalAI может обслуживать несколько моделей одновременно:

```
models/
├── llama-3.1-8b.yaml
├── llama-3.1-8b.gguf
├── mistral-7b.yaml
├── mistral-7b.gguf
├── whisper.yaml
└── whisper-base.bin
```

Доступ к каждой по имени модели в вызовах API.

## Настройка производительности

### Для скорости

```yaml
parameters:
  threads: 8
  gpu_layers: 99
  batch_size: 512
  use_mmap: true
  use_mlock: true
```

### Для экономии памяти

```yaml
parameters:
  gpu_layers: 20  # Частичная выгрузка
  context_size: 2048  # Меньший контекст
  batch_size: 256
```

## Бенчмарки

| Модель          | GPU      | Токенов/с |
| --------------- | -------- | --------- |
| Llama 3.1 8B Q4 | RTX 3090 | \~100     |
| Mistral 7B Q4   | RTX 3090 | \~110     |
| Llama 3.1 8B Q4 | RTX 4090 | \~140     |
| Mixtral 8x7B Q4 | A100     | \~60      |

*Бенчмарки обновлены в январе 2026.*

## Устранение неполадок

### HTTP 502 на http\_pub URL

LocalAI запускается дольше, чем другие сервисы. Подождите **5–10 минут** и попробуйте снова:

```bash
# Проверить готовность
curl https://your-http-pub.clorecloud.net/readyz

# Проверить состояние
curl https://your-http-pub.clorecloud.net/healthz
```

### Модель не загружается

* Проверьте путь к файлу в YAML
* Проверьте совместимость формата GGUF
* Проверьте доступный объем VRAM

### Медленные ответы

* Увеличьте `gpu_layers`
* Включите `use_mmap`
* Уменьшите `context_size`

### Недостаточно памяти

* Уменьшите `gpu_layers`
* Используйте меньшую квантизацию (Q4 вместо Q8)
* Уменьшите размер батча

### Проблемы с генерацией изображений

{% hint style="warning" %}
Stable Diffusion может иметь проблемы совместимости с CUDA на некоторых конфигурациях GPU. Если вы сталкиваетесь с ошибками CUDA при генерации изображений, рассмотрите возможность использования выделенной модели Stable Diffusion вместо этого.
{% endhint %}

## Оценка стоимости

Типичные расценки на маркетплейсе CLORE.AI:

| GPU      | VRAM  | Цена/день  | Подходит для       |
| -------- | ----- | ---------- | ------------------ |
| RTX 3060 | 12GB  | $0.15–0.30 | Модели 7B          |
| RTX 3090 | 24 ГБ | $0.30–1.00 | Модели 13B         |
| RTX 4090 | 24 ГБ | $0.50–2.00 | Быстрая инференция |
| A100     | 40GB  | $1.50–3.00 | Большие модели     |

*Цены в USD/день. Тарифы зависят от провайдера — проверьте* [*CLORE.AI Marketplace*](https://clore.ai/marketplace) *для текущих тарифов.*

## Дальнейшие шаги

* [vLLM инференция](/guides/guides_v2-ru/yazykovye-modeli/vllm.md) - Повышенная пропускная способность
* [Руководство по Ollama](/guides/guides_v2-ru/yazykovye-modeli/ollama.md) - Проще в настройке
* [RAG с LangChain](/guides/guides_v2-ru/prodvinutye/api-integration.md) - Создавайте приложения


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.clore.ai/guides/guides_v2-ru/yazykovye-modeli/localai-openai-compatible.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
