Детальный PROMPT для генерации JSON-датасета для fine-tuning моделей анализа таблиц маршрутизации Cisco
РОЛЬ И ЗАДАЧА
Ты — эксперт по генерации синтетических обучающих данных для fine-tuning компактных LLM (7B-14B параметров). Твоя задача — генерировать высококачественные JSON-примеры для обучения модели анализу таблиц маршрутизации Cisco (`show ip route`).
СТРУКТУРА КАЖДОГО ПРИМЕРА
Каждый пример должен строго соответствовать формату:
json
{
"messages": [
{
"role": "system",
"content": "You are a network routing expert. Analyze the routing table, detect issues, and provide step-by-step reasoning. Use the format: ...step-by-step analysis......concise answer..."
},
{
"role": "user",
"content": "Routing table:\n\n\nQuestion: "
},
{
"role": "assistant",
"content": "\n1. [First observation]\n2. [Second observation]\n...\n[N]. [Final observation]\n\n\n[Clear, actionable conclusion with severity level: CRITICAL/WARNING/INFO]\n"
}
]
}
КАТЕГОРИИ ОШИБОК ДЛЯ ГЕНЕРАЦИИ
Генерируй примеры, равномерно распределяя по следующим категориям (минимум 3-5 примеров на каждую):
1. Маршрутные петли (Routing Loops)
- Два или более маршрута к одной сети с одинаковыми AD и метриками через разные next-hop
- Пример: `S 10.1.1.0/24 [1/0] via 192.168.1.1` и `S 10.1.1.0/24 [1/0] via 192.168.2.1`
- Сценарии: ECMP без корректной конфигурации, перекрестные статические маршруты
2. Ошибки суммаризации (Summarization Errors)
- Over-summarization: Слишком широкая маска, включающая несуществующие сети
- Under-summarization: Отсутствие суммаризации для последовательных сетей (/24 > /22)
- Overlapping summaries: Пересекающиеся суммарные маршруты с разными next-hop
3. AD-конфликты (Administrative Distance Conflicts)
- Одна сеть изучается через несколько протоколов с разными AD
- Статика (AD=1) перебивает динамические протоколы (OSPF AD=110, BGP AD=20/200)
- Неправильный выбор активного маршрута
4. Проблемы с next-hop
- Next-hop недостижим (нет ARP-записи)
- Next-hop находится в несуществующей сети
- Маршрут помечен как `invalid` или `unreachable`
5. Проблемы балансировки нагрузки (Load Balancing Issues)
- Несинхронное обновление маршрутов (разное время в таблице)
- Неравные метрики для путей, которые должны быть равными
- Асимметричный routing при ECMP
6. Перекрывающиеся сети (Overlapping Networks)
- Одна сеть полностью вложена в другую с разными next-hop
- Connected маршруты внутри статической/динамической суммаризации
7. Здоровые таблицы (Healthy Tables)
- Нет ошибок
- Правильная суммаризация
- Корректная балансировка
- Рабочие next-hop
ТРЕБОВАНИЯ К ГЕНЕРАЦИИ
A. Разнообразие синтаксиса
Используй реальные форматы вывода `show ip route`:
- Статические: `S 10.1.1.0/24 [1/0] via 192.168.1.1`
- OSPF: `O 10.1.1.0/24 [110/2] via 10.0.0.2, 00:01:23, GigabitEthernet0/0`
- Connected: `C 192.168.1.0/24 is directly connected, GigabitEthernet0/0`
- BGP: `B 10.1.0.0/16 [20/0] via 192.168.1.1`
- EIGRP: `D 10.1.1.0/24 [90/30720] via 10.0.0.2`
B. Структура рассуждений (Reasoning)
Рассуждения должны содержать:
1. Наблюдение: Что видно в таблице
2. Анализ: Почему это проблема или не проблема
3. Контекст: Как это влияет на сеть
4. Рекомендация: Что нужно сделать
C. Вариативность сложности
- Простые: Одна явная ошибка (легко обнаружить)
- Средние: 2-3 связанные ошибки
- Сложные: Комбинация ошибок, требующая глубокого анализа (например, петля + AD-конфликт + проблемы суммаризации)
D. Сбалансированность датасета
- 60% — примеры с ошибками (распределены по категориям)
- 25% — здоровые таблицы (для обучения нормальному поведению)
- 15% — пограничные случаи (предупреждения, не критические проблемы)
?? ТЕХНИКИ УЛУЧШЕНИЯ ОБУЧЕНИЯ
1. Chain-of-Thought (CoT)
Всегда требуй пошаговое рассуждение перед ответом. Это критически важно для компактных моделей.
2. Конкретные вопросы
Вопросы должны быть конкретными, а не общими:
- "Does this routing table contain a routing loop?"
- "Identify any summarization errors in this table."
- "Analyze this routing table."
3. Маркеры важности
В ответе указывай уровень серьезности:
- `CRITICAL`: Петли, недостижимые next-hop
- `WARNING`: AD-конфликты, проблемы суммаризации
- `INFO`: Рекомендации по оптимизации
4. Аугментация данных
Генерируй вариации одного сценария:
- Меняй IP-адреса
- Меняй маски подсетей
- Меняй метрики и AD
- Добавляй/убирай временные метки
5. Детализация
Для каждой ошибки включай:
- Тип ошибки
- Конкретные строки из таблицы
- Причину проблемы
- Шаги по исправлению
- Ожидаемый результат после исправления
ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ
Формат вывода:
- Чистый JSON (без комментариев, без Markdown-обертки)
- Каждый пример в отдельной строке (JSONL)
- Кодировка: UTF-8
- Максимальная длина сообщения: не более 2048 токенов
Распределение длин:
- Короткие таблицы (3-5 маршрутов): 30%
- Средние таблицы (6-10 маршрутов): 50%
- Длинные таблицы (11-15 маршрутов): 20%
Валидность:
- Все маршруты должны быть синтаксически корректными
- IP-адреса должны быть в правильном формате
- Маски подсетей должны быть действительными
- Метрики должны быть числами
ПРИМЕРЫ ВОПРОСОВ (для разнообразия)
1. "Does this routing table contain a routing loop?"
2. "Identify any summarization errors in this routing table."
3. "Analyze this routing table for Administrative Distance conflicts."
4. "Does this routing table have any unreachable next-hop addresses?"
5. "Identify any load balancing issues in this routing table."
6. "Are there any overlapping networks in this routing table?"
7. "Does this routing table have any routing inconsistencies?"
8. "Identify all potential issues in this routing table and classify them by severity."
9. "Is this routing table optimized for performance and redundancy?"
10. "What routing issues could cause network instability in this configuration?"
ПАРАМЕТРЫ ГЕНЕРАЦИИ
Для генерации используй следующие настройки:
- Температура: 0.7-0.9 (для разнообразия)
- Top-p: 0.9
- Количество примеров: 100-500 для начального датасета
- Пропорции: 80% с ошибками, 20% здоровые
Дополнительные инструкции:
- Никогда не генерируй одинаковые примеры
- Каждый пример должен быть уникальным
- Используй разные сетевые топологии
- Включай реальные сценарии из практики
- Добавляй комментарии в reasoning о том, КАК именно обнаружена ошибка
- Указывай в answer конкретные действия по исправлению
ВАЛИДАЦИЯ ГЕНЕРИРУЕМЫХ ПРИМЕРОВ
Перед выдачей проверь каждый пример на:
1. Синтаксическую корректность JSON
2. Наличие всех обязательных полей
3. Правильность формата маршрутов
4. Логическую непротиворечивость (если указана петля, действительно есть петля)
5. Соответствие формату reasoning/answer
6. Отсутствие дубликатов с предыдущими примерами
ФОРМАТ ВЫВОДА
Генерируй примеры в формате JSONL (каждый пример — отдельная строка):
jsonl
{"messages": [{"role": "system", "content": "..."}, {"role": "user", "content": "..."}, {"role": "assistant", "content": "..."}]}
{"messages": [{"role": "system", "content": "..."}, {"role": "user", "content": "..."}, {"role": "assistant", "content": "..."}]}
Начни генерацию с категории [УКАЖИ КАТЕГОРИЮ] и создай [УКАЖИ КОЛИЧЕСТВО] примеров.
----------------------------------------------------------------------------------------------------------------------------------------------------
Полный список категорий, которые можно задавать при генерации, с указанием подкатегорий и приоритетности для обучения:
Отличный вопрос! Вот полный список категорий, которые можно задавать при генерации, с указанием подкатегорий и приоритетности для обучения:
ПОЛНЫЙ СПИСОК КАТЕГОРИЙ ДЛЯ ГЕНЕРАЦИИ
КРИТИЧЕСКИЕ ОШИБКИ (CRITICAL) - 30% датасета
1. ROUTING_LOOPS (Петли маршрутизации)
- `ECMP_LOOP`: Равные маршруты через разные next-hop
- `CROSS_LOOP`: Перекрестные статические маршруты (A>B, B>A)
- `REDISTRIBUTION_LOOP`: Петли при редистрибуции между протоколами
- `DEFAULT_LOOP`: Петли с default route
2. UNREACHABLE_NEXTHOP (Недостижимый next-hop)
- `INVALID_NEXTHOP`: Next-hop не существует в таблице
- `NO_ARP`: Нет ARP-записи для next-hop
- `INTERFACE_DOWN`: Интерфейс к next-hop в состоянии down
- `RECURSIVE_LOOP`: Рекурсивный маршрут, указывающий сам на себя
3. BLACKHOLE_ROUTES (Маршруты в черную дыру)
- `SUMMARY_BLACKHOLE`: Суммарный маршрут, отправляющий трафик в никуда
- `STATIC_BLACKHOLE`: Статический маршрут с `null0`
- `METRIC_BLACKHOLE`: Маршрут с бесконечной метрикой
СЕРЬЕЗНЫЕ ПРОБЛЕМЫ (WARNING) - 35% датасета
4. AD_CONFLICTS (Конфликты административной дистанции)
- `PROTOCOL_OVERRIDE`: Статика перебивает OSPF/BGP
- `BACKUP_OVERRIDE`: Backup-маршрут становится активным
- `FLOATING_FAILURE`: Плавающий статический маршрут с неправильной AD
- `BGP_EBGP_IBGP`: Конфликт между eBGP и iBGP
5. SUMMARIZATION_ERRORS (Ошибки суммаризации)
- `OVER_SUMMARIZATION`: Слишком широкая маска
- `UNDER_SUMMARIZATION`: Отсутствие суммаризации
- `OVERLAPPING_SUMMARY`: Пересекающиеся суммарные маршруты
- `DISCONTIGUOUS_SUMMARY`: Несмежные сети в одной суммаризации
- `HOLE_IN_SUMMARY`: "Дырка" в суммарном маршруте
6. LOAD_BALANCING_ISSUES (Проблемы балансировки)
- `ASYMMETRIC_ECMP`: Несимметричные ECMP-пути
- `STALE_ECMP`: Устаревшие ECMP-пути
- `UNEQUAL_COST`: Неравные метрики для ECMP
- `CEF_MISMATCH`: Несоответствие CEF и routing table
НЕКРИТИЧЕСКИЕ ПРОБЛЕМЫ (INFO) - 20% датасета
7. ROUTING_INEFFICIENCIES (Неэффективность маршрутизации)
- `TABLE_SIZE`: Слишком большая таблица
- `SUBNET_WASTE`: Неэффективное использование адресного пространства
- `REDUNDANCY_LACK`: Отсутствие резервирования
- `CONVERGENCE_SLOW`: Медленная конвергенция
8. METRIC_ANOMALIES (Аномалии метрик)
- `METRIC_SKEW`: Сильное отклонение метрик
- `METRIC_FLAPPING`: Меняющиеся метрики
- `INCONSISTENT_METRIC`: Несогласованные метрики между протоколами
9. DISCONTIGUOUS_NETWORKS (Разрозненные сети)
- `VLSM_ERROR`: Ошибки в VLSM
- `SUBNET_OVERLAP`: Перекрывающиеся подсети
- `DISCONTIGUOUS_SUBNET`: Несмежные подсети
СПЕЦИАЛЬНЫЕ СЦЕНАРИИ - 15% датасета
10. HEALTHY_TABLES (Здоровые таблицы)
- `OPTIMAL_SUMMARY`: Оптимальная суммаризация
- `ECMP_BALANCED`: Сбалансированная ECMP
- `REDUNDANT_DESIGN`: Корректное резервирование
- `PROTOCOL_HIERARCHY`: Правильная иерархия протоколов
11. EDGE_CASES (Пограничные случаи)
- `FLOATING_STATIC`: Плавающий статический маршрут
- `DEFAULT_ROUTE_VARIANTS`: Различные варианты default route
- `NULL_ROUTE`: Маршрут в null0 для предотвращения петель
- `RECURSIVE_STATIC`: Рекурсивный статический маршрут
12. PROTOCOL_SPECIFIC (Специфичные для протоколов)
- `OSPF_AREA_ISSUES`: Проблемы с OSPF областями
- `BGP_AS_PATH`: Проблемы с AS-path
- `EIGRP_K_VALUE`: Неправильные K-значения
- `RIP_HOP_COUNT`: Превышение hop count
КАК ЗАДАВАТЬ КАТЕГОРИИ В PROMPTE
Вариант 1: Одна категория
Сгенерируй 20 примеров для категории ROUTING_LOOPS, подкатегория ECMP_LOOP.
Вариант 2: Несколько категорий
Сгенерируй 50 примеров, распределяя по категориям:
- ROUTING_LOOPS: 15 примеров
- AD_CONFLICTS: 15 примеров
- SUMMARIZATION_ERRORS: 10 примеров
- HEALTHY_TABLES: 10 примеров
Вариант 3: Все категории
Сгенерируй 100 примеров, покрывая все критические (CRITICAL) и серьезные (WARNING) категории из списка, с фокусом на практические сценарии.
Вариант 4: Смешанные сценарии
Сгенерируй 30 примеров с комбинациями ошибок:
- Routing loop + summarization error
- AD conflict + unreachable next-hop
- Load balancing issue + overlapping networks
РЕКОМЕНДУЕМЫЕ ПРОПОРЦИИ ДЛЯ ДАТАСЕТА
| Категория | Процент | Важность |
|-----------|---------|----------|
| ROUTING_LOOPS | 15% | Критическая |
| UNREACHABLE_NEXTHOP | 10% | Критическая |
| AD_CONFLICTS | 15% | Высокая |
| SUMMARIZATION_ERRORS | 15% | Высокая |
| LOAD_BALANCING_ISSUES | 10% | Средняя |
| BLACKHOLE_ROUTES | 5% | Средняя |
| ROUTING_INEFFICIENCIES | 10% | Низкая |
| HEALTHY_TABLES | 15% | Базовая |
| EDGE_CASES | 5% | Дополнительная |
ПРИМЕРЫ КОНКРЕТНЫХ ЗАПРОСОВ
Для начала обучения:
Сгенерируй 50 примеров для fine-tuning модели анализа таблиц маршрутизации,
распределяя по категориям:
- 15 ROUTING_LOOPS (ECMP_LOOP)
- 15 AD_CONFLICTS (PROTOCOL_OVERRIDE)
- 10 SUMMARIZATION_ERRORS (OVER_SUMMARIZATION)
- 10 HEALTHY_TABLES (OPTIMAL_SUMMARY)
Для глубокого покрытия:
Сгенерируй 200 примеров, покрывая ВСЕ категории из списка,
с фокусом на практические сценарии из реальных сетей.
Особое внимание удели комбинациям ошибок:
- AD_CONFLICTS + SUMMARIZATION_ERRORS
- ROUTING_LOOPS + LOAD_BALANCING_ISSUES
- UNREACHABLE_NEXTHOP + BLACKHOLE_ROUTES
Для специфического сценария:
Сгенерируй 25 примеров для категории SUMMARIZATION_ERRORS,
включая все подкатегории: OVER_SUMMARIZATION, UNDER_SUMMARIZATION,
OVERLAPPING_SUMMARY, HOLE_IN_SUMMARY. Каждый пример должен содержать
детальный анализ и рекомендации по исправлению.
Этот список покрывает все возможные сценарии ошибок в таблицах маршрутизации и позволяет создавать сбалансированный датасет для эффективного обучения компактных моделей. Какую категорию или комбинацию хотите использовать для генерации?
(c) by Valery Shmelev (Deutsche: Valery Shmeleff)
https://oflameron.com
https://ai-fine-tuning.blogspot.com/
http://webcode.shmeleff.com/page0005.htm