0Pricing
AI Prompt Engineering · Ders

İstemler İçin Sürüm Denetimi

İstemler için Git tarzı sürümleme, anlamsal sürümleme ve değişiklik günlüğü yönetimi.

İstemler İçin Sürüm Denetimi, CoddyKit'te ücretsiz bir AI Prompt Engineering dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Prompt Engineering öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Prompt Engineering kursu toplamda 4 dersten oluşur.

İstemlerde Neden Sürüm Denetimi Kullanılır?

İstemler sürekli gelişir; sözcüklerdeki küçük bir değişiklik bile model davranışını büyük ölçüde değiştirebilir. Sürüm denetimi olmadığında ekipler neyin, ne zaman ve neden değiştiğini izleyemez. İstemleri kod gibi ele almak geçmişi, geri almayı, iş birliğini ve değişiklik sorumluluğunun izlenmesini mümkün kılar.

Git Tabanlı İstem Sürümleme

İstem dosyalarını Git'te depolamak en basit sürümleme stratejisidir. Her istem düz metin dosyasıdır; Git commit'leri her değişikliği kaydeder. Dallar denemeleri temsil eder, etiketler ise üretim sürümlerini işaretler.

# Initialize a prompt repo
git init prompt-library
cd prompt-library
mkdir -p prompts/summarize-article

# First version
cat > prompts/summarize-article/prompt.txt << 'PROMPT'
Summarize the article in {num_sentences} sentences.

Article:
{article_text}
PROMPT

git add prompts/summarize-article/prompt.txt
git commit -m 'feat(summarize-article): initial prompt v1.0.0'
git tag v1.0.0

# Experiment on a branch
git checkout -b experiment/add-focus-area
# ... edit prompt ...
git commit -m 'feat(summarize-article): add focus_area variable'
git tag v1.1.0-rc1

İstemler için Anlamsal Sürümleme

İstem anlamına uyarlanmış anlamsal sürümlemeyi (MAJOR.MINOR.PATCH) benimseyin:

  • PATCH (1.0.0 → 1.0.1): yazım hatası düzeltmesi, boşluk değişikliği — çıktı değişmez
  • MINOR (1.0.0 → 1.1.0): yeni isteğe bağlı değişken, iyileştirilmiş ifade — geriye dönük uyumludur
  • MAJOR (1.0.0 → 2.0.0): yeni zorunlu değişken, değiştirilmiş çıktı biçimi, geriye dönük uyumluluğu bozan davranış değişikliği
# semver.py — helper to validate version bumps
import re

def parse_semver(v):
    m = re.match(r'^(\d+)\.(\d+)\.(\d+)$', v)
    if not m:
        raise ValueError(f'Invalid semver: {v}')
    return tuple(int(x) for x in m.groups())

def classify_bump(old, new):
    o = parse_semver(old)
    n = parse_semver(new)
    if n[0] > o[0]:
        return 'MAJOR'
    elif n[1] > o[1]:
        return 'MINOR'
    elif n[2] > o[2]:
        return 'PATCH'
    else:
        raise ValueError('New version must be greater than old')

print(classify_bump('1.0.0', '1.1.0'))  # MINOR
print(classify_bump('1.1.0', '2.0.0'))  # MAJOR
print(classify_bump('2.0.0', '2.0.1'))  # PATCH

Değişiklik Günlüğü Biçimi

Her istem sürümünde, ekiplerin neyin ve neden değiştiğini anlamasını sağlayan yapılandırılmış bir değişiklik günlüğü bulunmalıdır. İstemlere uyarlanmış standart Değişiklik Günlüğü biçimini izleyin.

# CHANGELOG.md for prompts/summarize-article/

## [2.0.0] - 2024-08-10
### Breaking Changes
- Renamed variable 'text' to 'article_text' (update all call sites)
- Output now always includes a headline sentence before the summary

### Changed
- Improved instruction specificity to reduce hallucination rate by ~12%

## [1.1.0] - 2024-07-01
### Added
- New optional variable 'focus_area' to direct summary emphasis
- Fallback instruction when 'focus_area' is not provided

### Changed
- Reworded opening instruction for clarity

## [1.0.0] - 2024-06-01
### Added
- Initial prompt: basic summarization with 'num_sentences' control

Üretim Sürümlerini Etiketleme

Git etiketleri, üretime dağıtılan tam commit'i işaretler. Sürüm notlarını etiketin yanında depolamak için açıklamalı etiketler kullanın. Böylece herhangi bir andaki etkin istemi tam olarak yeniden oluşturmak kolaylaşır.

# Annotated git tag with release notes
git tag -a v2.0.0 -m 'Release 2.0.0

Breaking: renamed variable text -> article_text
Improved: reduced hallucination rate by 12%
Author: alice@company.com
Reviewed-by: bob@company.com'

# Push tags to remote
git push origin --tags

# List all tags with dates
git tag -l --sort=version:refname -n9
# v1.0.0  Initial prompt
# v1.1.0  Add focus_area variable
# v2.0.0  Release 2.0.0 — Breaking: renamed variable ...

# View exact prompt at a tag
git show v1.1.0:prompts/summarize-article/prompt.txt

Geri Alma Yordamları

Yeni bir istem sürümü kalite gerilemesine neden olduğunda geri alma işlemi hızlı olmalıdır. İki strateji vardır: kod üzerinden geri alma (eski yapıtı yeniden dağıtma) ve kayıt defteri üzerinden geri alma (yeniden dağıtım yapmadan is_active bayrağını değiştirme).

# Strategy 1: Registry rollback (fastest — no redeploy needed)
def rollback_prompt(registry, prompt_id, target_version):
    print(f'Rolling back {prompt_id} to {target_version}...')
    registry.activate_version(prompt_id, target_version)
    print(f'Rollback complete. {prompt_id} now serving {target_version}')

# Strategy 2: Git-based rollback with audit trail
# Create a revert commit (do NOT force-push, keep history clean)
git revert HEAD --no-commit   # stage the revert
git commit -m 'revert(summarize-article): roll back to v1.1.0 due to quality regression'
git tag v2.0.1-hotfix

# Then trigger re-deployment of the reverted artifact
# This preserves full history — nobody loses track of what happened

İstem Farkı Araçları

İstem değişikliklerini incelemek için özel fark araçları gerekir. Düz metin için git diff yeterlidir; ancak anlamsal fark araçları, değişkenlerdeki ve yönergelerdeki yapısal değişiklikleri öne çıkarır.

# prompt_diff.py — highlight variable changes between versions
import re

def extract_variables(template):
    return set(re.findall(r'\{(\w+)\}', template))

def diff_prompts(old_template, new_template):
    old_vars = extract_variables(old_template)
    new_vars = extract_variables(new_template)
    added = new_vars - old_vars
    removed = old_vars - new_vars
    kept = old_vars & new_vars

    print('Variables added:', added or 'none')
    print('Variables removed:', removed or 'none')
    print('Variables kept:', kept)

    old_lines = set(old_template.splitlines())
    new_lines = set(new_template.splitlines())
    print('New lines:', new_lines - old_lines)
    print('Removed lines:', old_lines - new_lines)

old = 'Summarize in {num_sentences} sentences.\n\n{text}'
new = 'Summarize in {num_sentences} sentences focused on {focus_area}.\n\n{article_text}'
diff_prompts(old, new)

İstem Denemeleri için Dal Stratejisi

İstem geliştirme için yazılım dallandırma kurallarını kullanın:

  • main — yalnızca üretime hazır istemler
  • experiment/<name> — geliştirilmekte olan A/B denemesi varyantları
  • hotfix/<issue> — acil üretim düzeltmeleri
  • release/<version> — sürüm adayı hazırlama

İstem değişikliklerini main ile birleştirmeden önce, tıpkı uygulama kodunda olduğu gibi kod incelemesi (Birleştirme İsteği) yapılmasını zorunlu kılın.

# Typical prompt development workflow

# 1. Create experiment branch
git checkout -b experiment/tone-formal

# 2. Edit and test prompt locally
python test_prompt.py --prompt prompts/summarize-article/prompt.txt \
                      --eval-set evals/summarize-100.jsonl

# 3. Open PR with eval results in description
gh pr create --title 'experiment: formal tone improves ROUGE by 8%' \
             --body 'Eval results attached. ROUGE-L: 0.61 -> 0.66'

# 4. After approval, merge and tag
git checkout main && git merge experiment/tone-formal
git tag v1.2.0 && git push origin main --tags

Otomatik Sürüm Doğrulama CI'ı

İstem değişiklikleri için bir CI işlem hattı şunları otomatik olarak doğrulamalıdır: anlamsal sürüm artışı doğrudur, değişiklik günlüğü güncellenmiştir, şablondaki tüm değişkenler belgelenmiştir ve eval puanı gerilememiştir.

# .github/workflows/prompt-ci.yml
# name: Prompt Validation
# on: [pull_request]
# jobs:
#   validate:
#     runs-on: ubuntu-latest
#     steps:
#       - uses: actions/checkout@v4
#       - name: Check semver bump
#         run: python scripts/check_semver.py
#       - name: Validate template syntax
#         run: python scripts/validate_templates.py
#       - name: Run eval suite
#         run: python scripts/run_evals.py --threshold 0.95

# scripts/validate_templates.py
import glob, json, sys

errors = []
for f in glob.glob('prompts/**/*.yaml', recursive=True):
    with open(f) as fh:
        data = fh.read()
    if '{' not in data:
        errors.append(f'{f}: no variables found (may be intentional — double check)')

if errors:
    print('Warnings:', errors)
print('Template validation complete')

Etiketli Sürümlerin Değişmezliği

Temel bir ilke şudur: etiketli sürümler değişmezdir. v2.0.0 etiketlendikten sonra şablonu hiçbir zaman değiştirilmemelidir. Düzeltmeler yeni sürümlere (v2.0.1) eklenir. Bu, yeniden üretilebilirliği garanti eder; bir etiket üzerinden tam üretim durumunu her zaman yeniden oluşturabilirsiniz.

# Enforce immutability in the registry
def register(self, prompt_id, version, template, ...):
    with self.conn.cursor() as cur:
        # Check if version already exists
        cur.execute(
            'SELECT id FROM prompt_versions '
            'WHERE prompt_id=%s AND version=%s',
            (prompt_id, version)
        )
        if cur.fetchone():
            raise ValueError(
                f'Version {version} of {prompt_id} already exists. '
                'Versions are immutable. Create a new version instead.'
            )
        # Proceed with insertion
        cur.execute(
            'INSERT INTO prompt_versions '
            '(prompt_id, version, template, author, tags, model) '
            'VALUES (%s, %s, %s, %s, %s, %s)',
            (prompt_id, version, template, author, tags, model)
        )
    self.conn.commit()

İstemleri Değerlendirme Sonuçlarına Bağlama

Her istem sürümü, ekiplerin sürümler arasındaki kaliteyi karşılaştırabilmesi için değerlendirme sonuçlarına bağlanmalıdır. Değerlendirme üstverilerini istem yapıtının yanında depolayın.

# Attach eval results to a prompt version
ALTER TABLE prompt_versions ADD COLUMN eval_results JSONB;

# Python: record eval scores
def attach_eval_results(self, prompt_id, version, results):
    with self.conn.cursor() as cur:
        cur.execute(
            'UPDATE prompt_versions SET eval_results=%s '
            'WHERE prompt_id=%s AND version=%s',
            (json.dumps(results), prompt_id, version)
        )
    self.conn.commit()

# Example eval results structure
eval_results = {
    'dataset': 'cnn-dailymail-100',
    'date_run': '2024-08-10',
    'metrics': {
        'rouge_l': 0.66,
        'bertscore_f1': 0.89,
        'human_quality_avg': 4.2
    },
    'sample_size': 100,
    'runner': 'alice@company.com'
}
registry.attach_eval_results('summarize-article', '1.2.0', eval_results)

Kısa Yoklama

Bir istemin MAJOR sürümünü ne zaman artırmalısınız?

Sürüm Denetimi Özeti

İstem sürüm denetimi, istemlere özgü uyarlamalarla yazılım sürüm denetimini yansıtır:

  • Anlamsal sürümleme: PATCH/MINOR/MAJOR değişikliğin etkisini belirtir
  • Git etiketleme: üretim sürümleri için değişmez, açıklamalı etiketler
  • Değişiklik günlükleri: denetlenebilirlik için sürüm başına yapılandırılmış geçmiş
  • Geri alma: kayıt defteri bayrağını değiştirme (hızlı) veya git revert (denetim kaydı içeren)
  • CI doğrulaması: otomatik anlamsal sürüm denetimleri, şablon doğrulaması ve değerlendirme gerilemesi korumaları
  • Değişmezlik: etiketli sürümler hiçbir zaman değişmez; düzeltmeler her zaman yeni sürümler oluşturur

Sıkça Sorulan Sorular

“İstemler İçin Sürüm Denetimi” dersi ücretsiz mi?

Evet — “İstemler İçin Sürüm Denetimi” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Prompt Engineering kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Prompt Engineering kursu toplamda 4 dersten oluşur.

“İstemler İçin Sürüm Denetimi” dersinde ne öğreneceğim?

İstemler için Git tarzı sürümleme, anlamsal sürümleme ve değişiklik günlüğü yönetimi. AI Prompt Engineering ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

AI Prompt Engineering öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AI Prompt Engineering, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“İstemler İçin Sürüm Denetimi” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu AI Prompt Engineering dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AI Prompt Engineering dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. İstem Kayıt Defteri Mimarisi
  2. İstemler İçin Sürüm Denetimi
  3. Dağıtım ve Geri Alma Stratejileri
  4. Üretimde İstem Performansını İzleme
← AI Prompt Engineering Sayfasına Dön