Разработка системы версионирования промптов

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1Все 1566 услуг
Разработка системы версионирования промптов
Средний
~2-3 дня
Часто задаваемые вопросы

Направления AI-разработки

Этапы разработки AI-решения

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1285
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    902
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1121
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    857

Разработка системы версионирования промптов

Версионирование промптов — это Git для LLM инструкций. Когда промпт изменяется, нужно знать: кто изменил, что именно изменилось, как это повлияло на качество, и иметь возможность откатиться к любой предыдущей версии.

Принципы версионирования

Иммутабельность версий: созданная версия никогда не изменяется. Если нужно поправить промпт — создаётся новая версия.

Семантическое версионирование: major.minor.patch:

  • Major: принципиальное изменение инструкции или задачи
  • Minor: улучшение формулировок без изменения задачи
  • Patch: исправление опечаток, незначительные правки

Линковка с результатами: каждая версия связана с метриками на evaluation set.

Git-based версионирование промптов

Для небольших команд часто достаточно хранить промпты в Git:

prompts/
├── customer-support/
│   ├── system-prompt.v1.txt
│   ├── system-prompt.v2.txt
│   └── system-prompt.current -> system-prompt.v2.txt
├── summarization/
│   ├── prompt.v1.yaml
│   └── prompt.v2.yaml
└── prompts.json  # Индекс с метаданными
# prompts/summarization/prompt.v2.yaml
version: "2.0.0"
name: "document-summarizer"
created: "2024-11-15"
author: "ml-team"
changelog: "Added length constraint, improved tone instruction"
model:
  provider: "openai"
  name: "gpt-4o"
  temperature: 0.2
  max_tokens: 500
variables:
  - name: document
    required: true
  - name: max_sentences
    required: false
    default: "3"
content: |
  Summarize the following document in exactly {{max_sentences}} sentences.
  Be concise and focus on the main points.
  Do not add information not present in the document.

  Document:
  {{document}}
metrics:
  rouge_l: 0.47
  human_rating: 4.2
  eval_set: "summarization-benchmark-v3"

Автоматический diff промптов

import difflib

def diff_prompt_versions(v1_content: str, v2_content: str) -> str:
    """Показать diff между версиями промпта"""
    v1_lines = v1_content.splitlines(keepends=True)
    v2_lines = v2_content.splitlines(keepends=True)

    diff = difflib.unified_diff(
        v1_lines, v2_lines,
        fromfile="version_1",
        tofile="version_2",
        lineterm=""
    )
    return "".join(diff)

def analyze_prompt_change(v1: str, v2: str) -> dict:
    """Анализ характера изменений"""
    v1_words = set(v1.lower().split())
    v2_words = set(v2.lower().split())

    added_words = v2_words - v1_words
    removed_words = v1_words - v2_words

    return {
        "length_change": len(v2) - len(v1),
        "added_words": list(added_words)[:10],
        "removed_words": list(removed_words)[:10],
        "similarity": difflib.SequenceMatcher(None, v1, v2).ratio(),
        "change_type": "major" if difflib.SequenceMatcher(None, v1, v2).ratio() < 0.7 else "minor"
    }

Promotion workflow

[Draft] → [In Review] → [Approved] → [Staging] → [Production]
                ↑                         ↓
           Reviewer                  A/B Test (5%)
                                          ↓
                                    Full Rollout / Rollback

Ключевое правило: никакие промпты не идут в production без прохождения evaluation set. Автоматический CI job запускает тесты при каждом изменении промпта и блокирует promotion при регрессии > 3%.