Модели и провайдеры

Creo работает с двумя типами провайдеров.

Любой endpoint, поддерживающий OpenAI Chat Completions API. Укажите base_url и API-ключ:

1{
2    "deepseek": {
3        "provider": "openai",
4        "model": "deepseek-chat",
5        "api_key": "sk-...",
6        "base_url": "https://api.deepseek.com/v1"
7    }
8}

Пустой base_url означает официальный OpenAI (https://api.openai.com/v1).

Поддерживаемые провайдеры: OpenAI, DeepSeek, GLM, vLLM, Together, Fireworks — всё, что совместимо с Chat Completions API.

Локальный сервер Ollama. Без облачных ключей, полностью приватно:

1{
2    "local": {
3        "provider": "ollama",
4        "model": "qwen2.5-coder",
5        "base_url": "http://localhost:11434"
6    }
7}

Ollama-специфичные параметры: top_k, repeat_penalty — передаются в поле params.

В конфиге можно настроить сколько угодно моделей и переключаться между ними командой /model или через агента в чате.

 1{
 2    "agent": {
 3        "models": {
 4            "gpt4o": {
 5                "provider": "openai",
 6                "model": "gpt-4o",
 7                "api_key": "sk-..."
 8            },
 9            "deepseek": {
10                "provider": "openai",
11                "model": "deepseek-chat",
12                "api_key": "sk-...",
13                "base_url": "https://api.deepseek.com/v1"
14            },
15            "local": {
16                "provider": "ollama",
17                "model": "qwen2.5-coder"
18            }
19        },
20        "current": "gpt4o",
21        "mini": "local"
22    }
23}

Creo использует две модели для разных задач:

Модель Назначение Поле конфига
current Интерактивные сессии с пользователем agent.current
mini Фоновые задачи: автоименование сессий, dreaming-ревизия, компактизация контекста agent.mini

Используйте мощную модель для кодинга и дешёвую — для рутины. Например: GPT-4o для работы и GPT-4o-mini для фоновых задач. Или локальную Ollama для интерактива (бесплатно) и облачную модель для фоновых задач, требующих качества.

Переключение current через /model не влияет на mini. Каждая модель настраивается независимо: свои параметры, провайдер, API-ключ.

Все параметры опциональны. Если поле не указано — провайдер использует значение по умолчанию.

Параметр Диапазон Описание
temperature 0 — 2 Контроль случайности. Меньше — детерминированнее
top_p 0 — 1 Nucleus sampling
top_k ≥ 0 Top-K sampling (Ollama)
frequency_penalty −2 — 2 Штраф за частые токены (OpenAI)
presence_penalty −2 — 2 Штраф за присутствующие токены (OpenAI)
repeat_penalty ≥ 0 Штраф за повторение (Ollama)
1{
2    "params": {
3        "temperature": 0.2,
4        "top_p": 0.95
5    }
6}
Сценарий temperature top_p frequency_penalty presence_penalty
Кодинг 0.2 0.95 0 0
Архитектура с нуля 0.5 0.9 0.1 0.1
Тесты и документация 0.7 0.9 0 0
Рефакторинг / перевод 0.05 0.85 0 0

Для Ollama вместо frequency_penalty/presence_penalty используйте repeat_penalty (обычно 1.1) и при необходимости top_k.

Поле context_length переопределяет значение, получаемое от API провайдера. Полезно, когда провайдер не отдаёт корректный размер контекста или нужно задать лимит вручную:

1{
2    "model": "deepseek-chat",
3    "context_length": 64000
4}

model_bindings привязывает модель к директории. Первый матч выигрывает:

 1{
 2    "agent": {
 3        "current": "cheap",
 4        "mini": "cheap",
 5        "model_bindings": [
 6            {
 7                "cwd": "/home/user/projects/work/*",
 8                "model": "powerful",
 9                "mini": "powerful"
10            }
11        ]
12    }
13}

Паттерны поддерживают glob (*, ?). Суффикс /* — для поддиректорий.

Мини-модель автоматически генерирует краткое описание сессии по транскрипту. Обновляется каждые 20 диалоговых сообщений. Ручное переименование через /rename — автоматическое никогда не перезапишет.

Попросите в чате: «Поменяй текущую модель на default» или «Установи locale в en». Агент использует инструмент update_config:

  • Чтение: возвращает конфиг в JSON. API-ключи маскируются как *** — агент видит, что ключ задан, но не может прочитать значение.
  • Запись: устанавливает значение по точечному пути (current, models.default.api_key, tui.theme). Требует подтверждения.
  • Добавление/удаление моделей: через действия add_model и delete_model.

Изменения вступают в силу после перезапуска Creo (кроме темы — она применяется сразу).