Храните prompts как код и продуктовую конфигурацию
Хороший prompt бесполезен, если живёт в чьей-то голове и правится на глаз. Production-prompt должен иметь владельца, версию, совместимую модель, dataset, release gate и rollback. Правка текста в дашборде без связи с кодом убивает воспроизводимость.
На практике это обычная структура репозитория: инструкции, схемы, примеры и evals рядом с кодом.
prompts/
support/
system.ts
output-schema.ts
examples.yaml
evals/
faq.jsonl
refunds.jsonl
escalation.jsonl
export const SUPPORT_PROMPT = {
id: "support-v17",
checkedAt: "2026-07-31",
compatibleModels: ["pinned-provider-snapshot"],
retrievalContract: "support-kb-v8",
toolRegistry: "support-tools-v4",
evalBaseline: "support-suite-2026-07-29"
};Два свойства такой раскладки стоит держать в голове осознанно.
- Cache-friendly. Стабильные инструкции, примеры и определения tools идут в повторяемом prefix, а переменные данные - позже. Так работает prompt caching.
- Rollback-friendly. Версия prompt, snapshot модели и версия retrieval пишутся в trace, и старую комбинацию можно вернуть целиком.
И одна свежая деталь, которую легко пропустить.
Актуальная деталь OpenAI. На дату проверки документация сообщает: reusable prompt objects начали выводить из употребления 3 июня 2026 года, а endpoint v1/prompts запланирован к отключению 30 ноября 2026 года. Для новой разработки OpenAI рекомендует версионируемые code-managed helpers. Перед внедрением перепроверьте timeline на странице deprecations.