ollama-code

Prompt System v2

Шаблонные промпты, оптимизированные для разных размеров моделей

Обзор

Система промптов v2 использует шаблоны, оптимизированные для разных размеров моделей. Это позволяет:

Архитектура

┌─────────────────────────────────────────────────────────────────┐
│                    Prompt System v2                              │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  ┌─────────────────┐     ┌─────────────────────────────────┐   │
│  │ getCoreSystemPrompt │──▶│ getCoreSystemPromptV2         │   │
│  │ (legacy API)        │   │ (template-based)              │   │
│  └─────────────────┘     └────────────┬────────────────────┘   │
│                                       │                         │
│                          ┌────────────▼────────────────────┐   │
│                          │    getSystemPromptTemplate      │   │
│                          │    (выбор по размеру модели)    │   │
│                          └────────────┬────────────────────┘   │
│                                       │                         │
│  ┌─────────────────────────────────────┼─────────────────────┐ │
│  │                                     │                     │ │
│  │  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐         │ │
│  │  │  8b.md  │ │ 14b.md  │ │ 32b.md  │ │ 70b.md  │         │ │
│  │  │ small   │ │ medium  │ │ large   │ │ xlarge  │         │ │
│  │  │ <=10B   │ │ <=30B   │ │ <=60B   │ │ >60B    │         │ │
│  │  └─────────┘ └─────────┘ └─────────┘ └─────────┘         │ │
│  │                                                          │ │
│  │  templates/                                              │ │
│  └──────────────────────────────────────────────────────────┘ │
│                                                              │
└─────────────────────────────────────────────────────────────────┘

Шаблоны по размеру модели

Small (8b) — <= 10B параметров

Модели:

Характеристики:

Размер: ~500 токенов

Medium (14b) — <= 30B параметров

Модели:

Характеристики:

Размер: ~800 токенов

Large (32b) — <= 60B параметров

Модели:

Характеристики:

Размер: ~1200 токенов

XLarge (70b) — > 60B параметров

Модели:

Характеристики:

Размер: ~1500 токенов

Структура шаблона

# Role
Ты — Ollama Code, CLI-агент для разработки.

# Rules
## [CRITICAL]
- ✅ Обязательные правила

## [RECOMMENDED]
- ⚡ Рекомендуемые правила

## [OPTIONAL]
- 💾 Опциональные правила

# Tools
| Инструмент | Назначение | Алиасы |

# Workflow
1. План → 2. Реализация → 3. Проверка → 4. Отчёт

# Output Format
Форматирование ответов

# Security
Правила безопасности

# Environment


# Sandbox


# Git Repository


# Examples
Примеры использования



# Final Reminder
Напоминание о ключевых принципах

Плейсхолдеры

Плейсхолдер Описание Динамический
`` Информация об окружении (Node.js, platform, cwd)
`` Контекст обучения на ошибках
`` Инструкции для моделей без native tools
`` Информация о sandbox
`` Git правила если в репозитории

API

getCoreSystemPrompt

import { getCoreSystemPrompt } from '@ollama-code/ollama-code-core';

// Автоматический выбор шаблона по модели
const prompt = getCoreSystemPrompt(userMemory, 'qwen2.5-coder:14b');

Прямое использование шаблонов

import {
  getSystemPromptTemplate,
  fillTemplatePlaceholders,
  getSizeTier,
} from '@ollama-code/ollama-code-core';

// Получить размерный tier
const tier = getSizeTier('llama3.1:70b'); // 'xlarge'

// Загрузить шаблон
const template = getSystemPromptTemplate('llama3.1:70b');

// Заполнить плейсхолдеры
const prompt = fillTemplatePlaceholders(template, {
  ENVIRONMENT_INFO: '...',
  TOOL_LEARNING: '...',
});

Определение размера модели

import { extractModelSize, getSizeTier } from '@ollama-code/ollama-code-core';

// Извлечь размер из имени
const size = extractModelSize('qwen2.5-coder:14b'); // 14
const size = extractModelSize('llama3.1:70b'); // 70

// Получить tier
const tier = getSizeTier('mistral:7b'); // 'medium'

Переменные окружения

Переменная Описание По умолчанию
OLLAMA_CODE_USE_TEMPLATES Использовать шаблоны v2 true
OLLAMA_CODE_SYSTEM_MD Путь к кастомному промпту -

Отключение шаблонов v2

# Использовать legacy промпт
OLLAMA_CODE_USE_TEMPLATES=false ollama-code

# Использовать кастомный промпт
OLLAMA_CODE_SYSTEM_MD=~/.ollama-code/custom-system.md ollama-code

Создание кастомного шаблона

Файл шаблона

# Role
Ты — Custom Ollama Code агент.

# Rules
## [CRITICAL]
- Мои критические правила
- Особенности проекта

# Tools
Доступные инструменты

# Workflow
Процесс работы



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

OLLAMA_CODE_SYSTEM_MD=/path/to/my-template.md ollama-code

Примеры

Маленькая модель (7b)

// Шаблон 8b - компактный
const prompt = getCoreSystemPrompt(undefined, 'qwen2.5-coder:7b');

// ~500 токенов
// Содержит только критические правила

Средняя модель (14b)

// Шаблон 14b - стандартный
const prompt = getCoreSystemPrompt(undefined, 'qwen2.5-coder:14b');

// ~800 токенов
// Включает таблицы инструментов и workflow

Большая модель (32b)

// Шаблон 32b - расширенный
const prompt = getCoreSystemPrompt(undefined, 'qwen3-coder:30b');

// ~1200 токенов
// Полный workflow, security, примеры

Очень большая модель (70b)

// Шаблон 70b - полный
const prompt = getCoreSystemPrompt(undefined, 'llama3.1:70b');

// ~1500 токенов
// Вся документация, все примеры

Миграция с v1

Автоматическая миграция

По умолчанию v2 включена. Никаких изменений в коде не требуется:

// Старый код продолжает работать
const prompt = getCoreSystemPrompt(userMemory, model);
// Теперь использует шаблоны v2

Откат на v1

# Временно отключить v2
OLLAMA_CODE_USE_TEMPLATES=false ollama-code

# Или в коде
process.env.OLLAMA_CODE_USE_TEMPLATES = 'false';

Сравнение v1 vs v2

Характеристика v1 (Legacy) v2 (Templates)
Размер промпта ~2000 токенов 500-1500 (по модели)
Приоритеты правил Нет [CRITICAL], [RECOMMENDED], [OPTIONAL]
Адаптация к модели Нет Автоматическая
Примеры 5+ развёрнутых 1-3 компактных
Формат Свободный Иерархический
Кэширование Нет Есть

Рекомендации

Выбор шаблона

  1. <= 10B: Используйте small (8b)
  2. <= 30B: Используйте medium (14b)
  3. <= 60B: Используйте large (32b)
  4. > 60B: Используйте xlarge (70b)

Кастомизация

  1. Скопируйте подходящий шаблон
  2. Добавьте проект-специфичные правила
  3. Настройте через OLLAMA_CODE_SYSTEM_MD

Тестирование

// Проверить размер промпта
const prompt = getCoreSystemPrompt(undefined, model);
console.log(`Prompt size: ${prompt.length} chars`);

Структура файлов

packages/core/src/
├── core/
│   ├── prompts.ts          # Основной API (v1 + v2)
│   └── promptsV2.ts        # Реализация v2
└── prompts/
    ├── index.ts            # Экспорт
    └── templates/
        ├── index.ts        # Загрузка шаблонов
        ├── system-8b.md    # Small models
        ├── system-14b.md   # Medium models
        ├── system-32b.md   # Large models
        └── system-70b.md   # XLarge models

Связанная документация