Шаблонные промпты, оптимизированные для разных размеров моделей
Система промптов 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/ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
Модели:
Характеристики:
Размер: ~500 токенов
Модели:
Характеристики:
Размер: ~800 токенов
Модели:
Характеристики:
Размер: ~1200 токенов
Модели:
Характеристики:
Размер: ~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 правила если в репозитории | ✅ |
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 |
Путь к кастомному промпту | - |
# Использовать 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
// Шаблон 8b - компактный
const prompt = getCoreSystemPrompt(undefined, 'qwen2.5-coder:7b');
// ~500 токенов
// Содержит только критические правила
// Шаблон 14b - стандартный
const prompt = getCoreSystemPrompt(undefined, 'qwen2.5-coder:14b');
// ~800 токенов
// Включает таблицы инструментов и workflow
// Шаблон 32b - расширенный
const prompt = getCoreSystemPrompt(undefined, 'qwen3-coder:30b');
// ~1200 токенов
// Полный workflow, security, примеры
// Шаблон 70b - полный
const prompt = getCoreSystemPrompt(undefined, 'llama3.1:70b');
// ~1500 токенов
// Вся документация, все примеры
По умолчанию v2 включена. Никаких изменений в коде не требуется:
// Старый код продолжает работать
const prompt = getCoreSystemPrompt(userMemory, model);
// Теперь использует шаблоны v2
# Временно отключить v2
OLLAMA_CODE_USE_TEMPLATES=false ollama-code
# Или в коде
process.env.OLLAMA_CODE_USE_TEMPLATES = 'false';
| Характеристика | v1 (Legacy) | v2 (Templates) |
|---|---|---|
| Размер промпта | ~2000 токенов | 500-1500 (по модели) |
| Приоритеты правил | Нет | [CRITICAL], [RECOMMENDED], [OPTIONAL] |
| Адаптация к модели | Нет | Автоматическая |
| Примеры | 5+ развёрнутых | 1-3 компактных |
| Формат | Свободный | Иерархический |
| Кэширование | Нет | Есть |
small (8b)medium (14b)large (32b)xlarge (70b)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