Добрият промпт не е изречение. Той е структура. Всеки елемент носи информация, която моделът използва, за да стесни пространството от възможни отговори.
„Ти си senior DevOps инженер с опит в Kubernetes и Debian."
„Имам Apache 2.4 на Debian 12. SSL е конфигуриран. Форумът е XenForo 2.3."
„Напиши Apache rewrite rule, която пренасочва /old-path към /new-path с 301."
„Отговорът да е само конфиг блок. Без обяснения."
„Без deprecated директиви. Без mod_rewrite ако може без него."
„Пример: /old → /new (не /old/ → /new/)"
Zero-Shot Prompting
Директна задача без примери. Работи добре за прости, ясни задачи. Бързо и евтино.
Few-Shot Prompting
Даваш 2-5 примера input→output преди истинската задача. Моделът "хваща" паттерна.
Chain of Thought
Карате модела да мисли на глас стъпка по стъпка. "Let's think step by step" или изрична верига.
Role Prompting
Задаваш идентичност на модела. "Ти си senior security researcher..." променя тона и дълбочината.
Constrained Output
Определяш точния формат на изхода. JSON schema, markdown template, таблица с точни колони.
Self-Consistency
Питаш N пъти с висока temperature, след това гласуваш или синтезираш отговорите. За сложни reasoning задачи.
Decomposition
Разбиваш голяма задача на малки стъпки. Всяка стъпка е отделен промпт. По-надеждно от едно монолитно питане.
ReAct Pattern
Reason + Act. Моделът редува мислене и действие. Използва се с tools/function calling.
Chain of Thought (CoT) е техника, при която принудително карате модела да изведе reasoning-а си преди финалния отговор. Особено полезно при математика, логика, дебъгване и стъпкови процеси.
→ Моделът може да отговори директно "да" или "не" без да покаже логиката. Трудно е да провериш дали е прав.
Разсъди стъпка по стъпка: капацитет, разпределение, резерв. След това дай заключение.
→ Виждаш смятането. Можеш да хванеш грешки в логиката.
ТРИГЕРИ ЗА CoT
// Универсален тригер "Let's think step by step." // По-директен "Разсъди на глас преди да дадеш отговор." // За дебъгване "Провери всяка стъпка поотделно. Покажи работата си." // За архитектурни решения "Анализирай плюсовете и минусите на всеки вариант, след което препоръчай един с обосновка." // Forced format CoT "Отговори в следния формат: АНАЛИЗ: [reasoning тук] ЗАКЛЮЧЕНИЕ: [финалният отговор]"
Показваш на модела точно какъв output искаш чрез 2-5 примера преди реалната задача. Ефективно за форматиране, класификация, трансформации и всякакви задачи с ясен pattern.
// Класификация на тикети Класифицирай следните support тикети: Формат: [ТИКЕТ] → [КАТЕГОРИЯ] : [ПРИОРИТЕТ] Категории: hardware, software, network, billing Приоритет: low, medium, high, critical Примери: "Не мога да се свържа с интернет" → network : high "Искам фактура за март" → billing : low "BSOD при стартиране" → hardware : critical "Excel не отваря .xlsx файлове" → software : medium Сега класифицирай: "Принтерът печата само бели листа" "Не мога да вляза в имейла си от 3 часа" "Нужна ми е офис лиценз за нов служител"
ПРАВИЛА ЗА FEW-SHOT
| ПРАВИЛО | ЗАЩО |
|---|---|
| 2-5 примера са достатъчни | Повече примери ≠ по-добър резултат. Токени са пари. |
| Примерите трябва да са разнообразни | Ако всички примери са "positive", моделът ще прекалява с positive. |
| Покривай edge cases в примерите | Ако има граничен случай, покажи го в пример, не само в инструкцията. |
| Форматът на примерите = форматът на изхода | Моделът копира точния формат. Бъди прецизен. |
| Ред на примерите има значение | Последният пример влияе най-много. Слагай "типичния" случай последен. |
// Few-shot за трансформация на данни Конвертирай следните лог редове към JSON: INPUT: "[2024-03-15 14:23:11] ERROR: Connection refused on port 5432" OUTPUT: {"timestamp":"2024-03-15T14:23:11","level":"ERROR","message":"Connection refused","port":5432} INPUT: "[2024-03-15 14:23:45] INFO: Server started on port 8080" OUTPUT: {"timestamp":"2024-03-15T14:23:45","level":"INFO","message":"Server started","port":8080} Сега конвертирай: [2024-03-15 15:01:33] WARN: Disk usage at 87% on /dev/sda1
System prompt-ът е "конституцията" за целия разговор. Задава се веднъж, при всяка заявка е в контекста, но не е видим за потребителя. Там слагаш постоянните правила, роля, ограничения.
Безполезно. Това е default-ът. Нищо не ограничава, нищо не насочва.
# Python - Claude API с добър system prompt import anthropic client = anthropic.Anthropic(api_key="...") SYSTEM = """Ти си N3Xus - строг Linux mentor. Правила: - Само команди, минимум обяснения - Ако въпросът е глупав, кажи го директно - Пишеш само на БГ - Code blocks задължително за всяка команда - Никога не казваш "лесно" или "просто" - Предупреждаваш при destructive операции""" response = client.messages.create( model="claude-sonnet-4-6", max_tokens=1024, system=SYSTEM, messages=[ {"role": "user", "content": "как да изтрия дублирани файлове?"} ] )
# Ollama - system prompt в Modelfile FROM llama3.2 SYSTEM """ Ти си DevOps asistent специализиран в Debian/Ubuntu. Даваш конкретни команди, не теория. Предупреждаваш преди rm, dd и всяка destructive операция. Форматът ти: кратко обяснение → команда → бележка ако трябва. """ PARAMETER temperature 0.3 PARAMETER num_ctx 8192
Задаването на роля не е само "бъди по-добър". Ролята активира специфичен "режим" в модела - различна лексика, различни приоритети, различна дълбочина. Ефектът е измерим.
| РОЛЯ | ПРОМПТ | ЕФЕКТ |
|---|---|---|
| Security Researcher | "Ти си senior pentester с опит в web application security..." | По-задълбочен анализ на attack vectors, CVE awareness |
| Code Reviewer | "Ти си principal engineer правещ code review. Безпощаден към бъгове и security issues." | Критичен поглед, не само "добре е" |
| Teacher | "Обясни като на разработчик с 2 год. опит в Python, но нулев опит с async." | Адаптирано ниво, без излишна простота или сложност |
| Devil's Advocate | "Намери всичко, което може да се счупи в следния план." | Изважда слабости, които normal prompting пропуска |
| Domain Expert | "Ти си DBA с 10 год. опит в MySQL оптимизация на производствени бази." | По-конкретни, по-практични отговори |
Не питай "какво мислиш?" ако искаш JSON. Форматът трябва да е явна инструкция, не предположение.
JSON OUTPUT
Анализирай следния error log и отговори САМО с валиден JSON.
Никакъв текст преди или след JSON блока.
Schema:
{
"severity": "low|medium|high|critical",
"type": string,
"root_cause": string,
"fix": string,
"affects_production": boolean
}
Log: [2024-03-15 03:22:11] FATAL: MySQL connection pool exhausted. Max connections: 100. Active: 100. Waiting: 47.
MARKDOWN СТРУКТУРА
Напиши документация за следната PHP функция.
Структура (задължителна):
## Описание
[какво прави - 1-2 изречения]
## Параметри
| Параметър | Тип | Описание |
...
## Връща
[тип и описание]
## Пример
```php
[работещ пример]
```
## Грешки
[какво може да хвърли и кога]
Функция:
[твоят код]
КОНТРОЛ НА ДЪЛЖИНАТА
// Кратко "Отговори в максимум 3 изречения." "Само командата. Без обяснение." "TL;DR версия - максимум 50 думи." // Дълго и подробно "Подробно обяснение с примери за всяка стъпка." "Включи edge cases и potential pitfalls." "Production-ready код с error handling."
Грешките при промптинг са предвидими. Ето кое не работи и защо.
"Помогни ми с кода."
"Обясни ми тази концепция."
"Направи уебсайт."
Без контекст, без ограничения, без формат. Получаваш generic отговор.
"Мислиш ли, че трябва да..."
Моделите са обучени да са "полезни" - ще потвърдят почти всичко. Питай "какво може да се счупи?" вместо "добре ли е?"
Моделите имат "attention" проблеми с много изисквания. Разбий на части.
"Не пиши дълго."
"Не добавяй коментари."
Негативните инструкции работят по-слабо от позитивните. "Използвай list comprehension" > "не използвай for loops".
| АНТИПАТЕРН | ВМЕСТО ТОВА |
|---|---|
| "Напиши ми скрипт за backup" | "Имам 3 директории на Debian 12. Искам daily backup на /etc, /var/www, /home към /mnt/backup с дата в името. Да пази последните 7 копия. bash скрипт за cron." |
| "Не пиши дълго" | "Максимум 100 думи. Само командите, без обяснения." |
| "Поправи кода" | "Кодът хвърля IndexError на ред 47. Очаквам списък, получавам празен tuple когато API-то не върне резултати. Поправи само error handling-а." |
| "Добре ли е?" | "Намери 3 начина по-добро решение. Намери какво може да се счупи при 1000 concurrent users." |
Copy-paste шаблони за честите задачи. Попълни [квадратните скоби].
CODE REVIEW
ДЕБЪГВАНЕ
ТЕХНИЧЕСКИ ДОКУМЕНТ
АРХИТЕКТУРНО РЕШЕНИЕ
REGEX HELP
PROMPT ОЦЕНКА
Всеки промпт е итерация. Първият е рядко финален. Ако резултатът не е добър - добави контекст, ограничи формата или добави пример. Три корекции са норма.