AI प्रॉम्प्ट इंजीनियरिंग · पाठ

प्रॉम्प्ट के लिए संस्करण नियंत्रण

प्रॉम्प्ट के लिए Git-शैली संस्करणन, अर्थगत संस्करणन और परिवर्तन-सूची प्रबंधन।

पाठ 2, कुल 4 में से13 चरण

प्रॉम्प्ट के लिए संस्करण नियंत्रण, CoddyKit पर AI प्रॉम्प्ट इंजीनियरिंग का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह AI प्रॉम्प्ट इंजीनियरिंग सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। AI प्रॉम्प्ट इंजीनियरिंग पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

प्रॉम्प्ट का संस्करण नियंत्रण क्यों?

प्रॉम्प्ट लगातार विकसित होते रहते हैं—शब्दों में छोटा-सा बदलाव भी मॉडल के व्यवहार को नाटकीय रूप से बदल सकता है। संस्करण नियंत्रण के बिना टीमें यह पता खो देती हैं कि क्या, कब और क्यों बदला। प्रॉम्प्ट कोड की तरह रखने से इतिहास, वापस लौटाना, सहयोग और उत्तरदायित्व निर्धारण संभव होता है।

Git-आधारित प्रॉम्प्ट संस्करण निर्धारण

प्रॉम्प्ट फ़ाइलों को Git में रखना सबसे सरल संस्करण निर्धारण रणनीति है। प्रत्येक प्रॉम्प्ट एक सादा-पाठ फ़ाइल होता है; Git commit हर बदलाव को दर्ज करते हैं। शाखाएँ प्रयोगों को दर्शाती हैं और टैग उत्पादन रिलीज़ को चिह्नित करते हैं।

# 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

प्रॉम्प्ट के लिए अर्थपूर्ण संस्करण निर्धारण

प्रॉम्प्ट के अर्थ के अनुसार अनुकूलित अर्थपूर्ण संस्करण निर्धारण (MAJOR.MINOR.PATCH) अपनाएँ:

  • PATCH (1.0.0 → 1.0.1): टाइपो सुधार, रिक्त स्थान में बदलाव — आउटपुट अपरिवर्तित
  • MINOR (1.0.0 → 1.1.0): नया वैकल्पिक चर, बेहतर शब्द-चयन — पिछले संस्करण के साथ संगत
  • MAJOR (1.0.0 → 2.0.0): नया आवश्यक चर, बदला हुआ आउटपुट प्रारूप, पीछे की संगतता तोड़ने वाला व्यवहार परिवर्तन
# 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

परिवर्तन-सूची का प्रारूप

प्रत्येक प्रॉम्प्ट संस्करण में एक सुव्यवस्थित परिवर्तन-सूची होनी चाहिए, ताकि टीमें समझ सकें कि क्या और क्यों बदला। प्रॉम्प्ट के लिए अनुकूलित परिवर्तन-सूची प्रारूप अपनाएँ।

# 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

उत्पादन रिलीज़ को टैग करना

Git टैग उत्पादन में लगाए गए सटीक commit को चिह्नित करते हैं। टैग के साथ रिलीज़ नोट रखने के लिए एनोटेटेड टैग का उपयोग करें। इससे किसी भी समय कौन-सा प्रॉम्प्ट सक्रिय था, इसे ठीक-ठीक फिर से बनाना आसान हो जाता है।

# 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

वापस लौटाने की प्रक्रियाएँ

जब किसी नए प्रॉम्प्ट संस्करण से गुणवत्ता में गिरावट आती है, तो पिछले संस्करण पर जल्दी लौटना आवश्यक है। दो रणनीतियाँ हैं: कोड को वापस लौटाना (पुराने आर्टिफैक्ट को फिर से परिनियोजित करना) और रजिस्ट्री को वापस लौटाना (फिर से परिनियोजन किए बिना is_active फ़्लैग बदलना)।

# 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

प्रॉम्प्ट अंतर देखने के उपकरण

प्रॉम्प्ट में हुए बदलावों की समीक्षा के लिए विशेष अंतर-दर्शन उपकरणों की आवश्यकता होती है। सादा git diff पाठ के लिए काम करता है, लेकिन अर्थ-आधारित अंतर-दर्शन उपकरण चरों और निर्देशों में संरचनात्मक बदलावों को स्पष्ट रूप से दिखाते हैं।

# 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)

प्रॉम्प्ट प्रयोगों के लिए शाखा रणनीति

प्रॉम्प्ट विकास के लिए सॉफ़्टवेयर शाखा-प्रथाओं को अपनाएँ:

  • main — केवल उत्पादन के लिए तैयार प्रॉम्प्ट
  • experiment/<name> — विकासाधीन A/B परीक्षण रूपांतर
  • hotfix/<issue> — उत्पादन की आपातकालीन सुधार-शाखा
  • release/<version> — रिलीज़ उम्मीदवार का मंचन

एप्लिकेशन कोड की तरह ही, प्रॉम्प्ट में किए गए बदलावों को main में मिलाने से पहले कोड समीक्षा (पुल अनुरोध) आवश्यक करें।

# 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

स्वचालित संस्करण सत्यापन CI

प्रॉम्प्ट में किए गए बदलावों के लिए CI क्रम को अपने-आप यह सत्यापित करना चाहिए: semver में बढ़ोतरी सही है, परिवर्तन-सूची अपडेट की गई है, टेम्पलेट के सभी चर दर्ज किए गए हैं और eval अंक में गिरावट नहीं आई है।

# .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')

टैग किए गए संस्करणों की अपरिवर्तनीयता

एक मूल सिद्धांत है: टैग किए गए संस्करण अपरिवर्तनीय होते हैं। एक बार v2.0.0 टैग कर दिए जाने के बाद उसका टेम्पलेट कभी नहीं बदलना चाहिए। सुधार नए संस्करणों में किए जाएँ (v2.0.1)। इससे पुनरुत्पादनीयता सुनिश्चित होती है—आप किसी टैग से उत्पादन की सटीक स्थिति हमेशा फिर से बना सकते हैं।

# 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()

प्रॉम्प्ट को मूल्यांकन परिणामों से जोड़ना

प्रत्येक प्रॉम्प्ट संस्करण को अपने मूल्यांकन परिणामों से जोड़ा जाना चाहिए, ताकि टीमें विभिन्न संस्करणों की गुणवत्ता की तुलना कर सकें। मूल्यांकन मेटाडेटा को प्रॉम्प्ट आर्टिफैक्ट के साथ रखें।

# 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)

त्वरित जाँच

प्रॉम्प्ट का MAJOR संस्करण कब बढ़ाना चाहिए?

संस्करण नियंत्रण का सारांश

प्रॉम्प्ट का संस्करण नियंत्रण, प्रॉम्प्ट-विशिष्ट अनुकूलनों के साथ सॉफ़्टवेयर के संस्करण नियंत्रण जैसा ही होता है:

  • अर्थपूर्ण संस्करण निर्धारण: PATCH/MINOR/MAJOR बदलाव के प्रभाव का संकेत देते हैं
  • Git टैगिंग: उत्पादन रिलीज़ के लिए अपरिवर्तनीय, एनोटेटेड टैग
  • परिवर्तन-सूचियाँ: ऑडिट-योग्यता के लिए प्रत्येक संस्करण का सुव्यवस्थित इतिहास
  • वापस लौटाना: रजिस्ट्री फ़्लैग बदलना (तेज़) या git revert (ऑडिट सहित)
  • CI सत्यापन: स्वचालित semver जाँच, टेम्पलेट सत्यापन और मूल्यांकन में गिरावट से सुरक्षा
  • अपरिवर्तनीयता: टैग किए गए संस्करण कभी नहीं बदलते—सुधार हमेशा नए संस्करण बनाते हैं
शुरुआत निःशुल्क

एआई शिक्षक के साथ AI प्रॉम्प्ट इंजीनियरिंग सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
53
पाठ
199

अक्सर पूछे जाने वाले प्रश्न

क्या “प्रॉम्प्ट के लिए संस्करण नियंत्रण” पाठ निःशुल्क है?

हाँ — AI प्रॉम्प्ट इंजीनियरिंग अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “प्रॉम्प्ट के लिए संस्करण नियंत्रण” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। AI प्रॉम्प्ट इंजीनियरिंग पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“प्रॉम्प्ट के लिए संस्करण नियंत्रण” में मैं क्या सीखूँगा?

प्रॉम्प्ट के लिए Git-शैली संस्करणन, अर्थगत संस्करणन और परिवर्तन-सूची प्रबंधन। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ AI प्रॉम्प्ट इंजीनियरिंग का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या AI प्रॉम्प्ट इंजीनियरिंग शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर AI प्रॉम्प्ट इंजीनियरिंग शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“प्रॉम्प्ट के लिए संस्करण नियंत्रण” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस AI प्रॉम्प्ट इंजीनियरिंग पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर AI प्रॉम्प्ट इंजीनियरिंग पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. प्रॉम्प्ट रजिस्ट्री का आर्किटेक्चर
  2. प्रॉम्प्ट के लिए संस्करण नियंत्रण
  3. परिनियोजन और रोलबैक रणनीतियाँ
  4. उत्पादन में प्रॉम्प्ट के प्रदर्शन की निगरानी
← AI प्रॉम्प्ट इंजीनियरिंग पर वापस जाएँ