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

प्रॉम्प्ट रजिस्ट्री का आर्किटेक्चर

प्रॉम्प्ट को मेटाडेटा और टैग वाले संस्करणित आर्टिफैक्ट के रूप में संग्रहीत करना।

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

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

Prompt Registry क्यों?

रजिस्ट्री के बिना प्रॉम्प्ट कोड, कॉन्फ़िगरेशन फ़ाइलों और डेवलपर की स्मृति में बिखरे रहते हैं। प्रॉम्प्ट रजिस्ट्री एक केंद्रीकृत संग्रह है, जो प्रत्येक प्रॉम्प्ट को सॉफ़्टवेयर कोड की तरह संस्करणित और ट्रैक किए जा सकने वाले आर्टिफैक्ट के रूप में रखता है।

इसके लाभों में पुनरुत्पादनीयता, ऑडिट-योग्यता, वापस लौटाने की क्षमता और टीम का सहयोग शामिल हैं।

मुख्य प्रॉम्प्ट आर्टिफैक्ट फ़ील्ड

प्रत्येक प्रॉम्प्ट आर्टिफैक्ट में ये फ़ील्ड होने चाहिए:

  • prompt_id — विशिष्ट स्थिर पहचानकर्ता (जैसे summarize-article)
  • version — अर्थपूर्ण संस्करण स्ट्रिंग (जैसे 2.1.0)
  • template — {variable} प्लेसहोल्डर वाला वास्तविक प्रॉम्प्ट पाठ
  • metadata — लेखक, टैग, लक्षित मॉडल, created_at और विवरण

डेटाबेस स्कीमा डिज़ाइन

प्रॉम्प्ट रजिस्ट्री के लिए संबंधपरक स्कीमा प्रॉम्प्ट और उनके संस्करण इतिहास को अलग-अलग तालिकाओं में रखता है, जिससे तेज़ खोज और ऑडिट संभव होते हैं।

-- prompts table: one row per unique prompt identity
CREATE TABLE prompts (
  prompt_id   VARCHAR(100) PRIMARY KEY,
  description TEXT,
  created_at  TIMESTAMP DEFAULT NOW()
);

-- prompt_versions table: one row per versioned artifact
CREATE TABLE prompt_versions (
  id          SERIAL PRIMARY KEY,
  prompt_id   VARCHAR(100) REFERENCES prompts(prompt_id),
  version     VARCHAR(20)  NOT NULL,
  template    TEXT         NOT NULL,
  author      VARCHAR(100),
  tags        TEXT[],
  model       VARCHAR(50),
  is_active   BOOLEAN DEFAULT FALSE,
  created_at  TIMESTAMP DEFAULT NOW(),
  UNIQUE(prompt_id, version)
);

फ़ाइल-आधारित रजिस्ट्री डिज़ाइन

छोटी टीमों के लिए फ़ाइल-आधारित रजिस्ट्री एक सुव्यवस्थित निर्देशिका संरचना का उपयोग करती है। प्रत्येक प्रॉम्प्ट के लिए एक फ़ोल्डर होता है और प्रत्येक संस्करण उसके अंदर YAML या JSON फ़ाइल के रूप में रखा जाता है।

# Directory structure
prompts/
  summarize-article/
    1.0.0.yaml
    1.1.0.yaml
    latest -> 1.1.0.yaml  # symlink
  classify-sentiment/
    1.0.0.yaml

# Example: summarize-article/1.1.0.yaml
prompt_id: summarize-article
version: '1.1.0'
model: gpt-4o-mini
author: alice@company.com
tags: [summarization, articles, english]
created_at: '2024-06-01T10:00:00Z'
template: |
  Summarize the following article in {num_sentences} sentences.
  Focus on: {focus_area}.

  Article:
  {article_text}

Python PromptRegistry क्लास

एक सरल Python क्लास डेटाबेस तक पहुँच को समेटती है और साफ़-सुथरी विधियाँ उपलब्ध कराती है: register(), get_active() और list_versions()।

import psycopg2
import json
from datetime import datetime

class PromptRegistry:
    def __init__(self, dsn):
        self.conn = psycopg2.connect(dsn)

    def register(self, prompt_id, version, template, author, tags, model):
        with self.conn.cursor() as cur:
            # Ensure prompt identity exists
            cur.execute(
                'INSERT INTO prompts (prompt_id) VALUES (%s) ON CONFLICT DO NOTHING',
                (prompt_id,)
            )
            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()
        print(f'Registered {prompt_id}@{version}')

    def get_active(self, prompt_id):
        with self.conn.cursor() as cur:
            cur.execute(
                'SELECT template, version FROM prompt_versions '
                'WHERE prompt_id=%s AND is_active=TRUE LIMIT 1',
                (prompt_id,)
            )
            row = cur.fetchone()
        if not row:
            raise ValueError(f'No active version for {prompt_id}')
        return {'template': row[0], 'version': row[1]}

मेटाडेटा स्कीमा का गहन अध्ययन

समृद्ध मेटाडेटा रजिस्ट्री को केवल संग्रहण से आगे भी उपयोगी बनाता है। मेटाडेटा के प्रमुख फ़ील्ड:

  • author — जवाबदेही और संपर्क का माध्यम
  • tags — खोजे जा सकने वाले लेबल, जैसे ['production', 'summarization', 'v2']
  • model — लक्षित मॉडल (प्रॉम्प्ट सभी मॉडलों के लिए समान रूप से उपयुक्त नहीं हो सकता)
  • changelog — क्या बदला, इसका मनुष्यों के लिए पठनीय विवरण
  • test_suite — इस प्रॉम्प्ट के मूल्यांकन डेटा-समुच्चय का लिंक
# Extended metadata example
prompt_metadata = {
    'prompt_id': 'extract-key-dates',
    'version': '2.0.0',
    'author': 'bob@company.com',
    'tags': ['extraction', 'dates', 'contracts', 'production'],
    'model': 'gpt-4o',
    'changelog': 'Added support for relative dates (next quarter, end of year)',
    'test_suite': 's3://company-evals/extract-key-dates/v2-testset.jsonl',
    'created_at': '2024-07-15T09:30:00Z',
    'is_active': True
}

चर वाले टेम्पलेट का रेंडरिंग

प्रॉम्प्ट टेम्पलेट प्लेसहोल्डर सिंटैक्स का उपयोग करते हैं। रजिस्ट्री रनटाइम चरों को टेम्पलेट में रखकर अंतिम प्रॉम्प्ट तैयार करती है। Python के str.format_map() का उपयोग सुरक्षित और सरल है।

class PromptRegistry:
    # ... (previous methods)

    def render(self, prompt_id, variables: dict) -> str:
        artifact = self.get_active(prompt_id)
        template = artifact['template']
        try:
            rendered = template.format_map(variables)
        except KeyError as e:
            raise ValueError(f'Missing variable {e} for prompt {prompt_id}')
        return rendered

# Usage
registry = PromptRegistry(dsn='postgresql://...')
prompt = registry.render(
    'summarize-article',
    {
        'num_sentences': 3,
        'focus_area': 'financial impact',
        'article_text': 'Apple reported record revenue of $119B...'
    }
)
print(prompt)
# Output: Summarize the following article in 3 sentences.
# Focus on: financial impact. ...

किसी संस्करण को सक्रिय करना

उत्पादन वातावरण में किसी प्रॉम्प्ट का एक समय में केवल एक संस्करण सक्रिय होना चाहिए। सक्रियण परमाण्विक होना चाहिए: वर्तमान को निष्क्रिय करें और नए को सक्रिय करें—यह सब एक ही लेन-देन में, ताकि बीच में कोई रिक्त अवधि न आए।

def activate_version(self, prompt_id, version):
    with self.conn.cursor() as cur:
        # Deactivate all current versions
        cur.execute(
            'UPDATE prompt_versions SET is_active=FALSE '
            'WHERE prompt_id=%s AND is_active=TRUE',
            (prompt_id,)
        )
        # Activate target version
        cur.execute(
            'UPDATE prompt_versions SET is_active=TRUE '
            'WHERE prompt_id=%s AND version=%s',
            (prompt_id, version)
        )
        if cur.rowcount == 0:
            self.conn.rollback()
            raise ValueError(f'Version {version} not found for {prompt_id}')
    self.conn.commit()
    print(f'Activated {prompt_id}@{version}')

प्रॉम्प्ट की सूची बनाना और खोजना

रजिस्ट्री तभी उपयोगी है जब आप उसकी सामग्री खोज सकें। टैग-आधारित खोज की सुविधा दें और किसी दिए गए प्रॉम्प्ट के सभी संस्करणों की सूची बनाएँ।

def list_versions(self, prompt_id):
    with self.conn.cursor() as cur:
        cur.execute(
            'SELECT version, author, is_active, created_at '
            'FROM prompt_versions WHERE prompt_id=%s '
            'ORDER BY created_at DESC',
            (prompt_id,)
        )
        return cur.fetchall()

def search_by_tag(self, tag):
    with self.conn.cursor() as cur:
        cur.execute(
            'SELECT prompt_id, version, tags FROM prompt_versions '
            'WHERE %s = ANY(tags)',
            (tag,)
        )
        return cur.fetchall()

# Usage
for v in registry.list_versions('summarize-article'):
    print(v)  # ('1.1.0', 'alice', True, datetime(...))

for p in registry.search_by_tag('production'):
    print(p)  # ('summarize-article', '1.1.0', ['production', 'summarization'])

रजिस्ट्री के API एंडपॉइंट

रजिस्ट्री को REST API के रूप में उपलब्ध कराएँ, ताकि सभी सेवाएँ (बैकएंड, ML क्रम और मूल्यांकन उपकरण) एक ही विश्वसनीय स्रोत साझा करें। मुख्य एंडपॉइंट:

  • POST /prompts/{id}/versions — नया संस्करण पंजीकृत करें
  • GET /prompts/{id}/active — सक्रिय टेम्पलेट प्राप्त करें
  • PUT /prompts/{id}/activate/{version} — किसी संस्करण को सक्रिय करें
  • GET /prompts — मेटाडेटा सहित सभी प्रॉम्प्ट की सूची बनाएँ
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel

app = FastAPI()
registry = PromptRegistry(dsn='postgresql://user:pass@localhost/prompts')

class VersionPayload(BaseModel):
    version: str
    template: str
    author: str
    tags: list
    model: str

@app.post('/prompts/{prompt_id}/versions')
def register_version(prompt_id: str, payload: VersionPayload):
    registry.register(
        prompt_id, payload.version, payload.template,
        payload.author, payload.tags, payload.model
    )
    return {'status': 'registered'}

@app.get('/prompts/{prompt_id}/active')
def get_active(prompt_id: str):
    try:
        return registry.get_active(prompt_id)
    except ValueError as e:
        raise HTTPException(404, str(e))

@app.put('/prompts/{prompt_id}/activate/{version}')
def activate(prompt_id: str, version: str):
    registry.activate_version(prompt_id, version)
    return {'status': 'activated'}

ऑडिट लॉग और परिवर्तन इतिहास

हर सक्रियण, निष्क्रियकरण और पंजीकरण घटना को समय-मुद्रा और कर्ता के साथ लॉग किया जाना चाहिए। यह ऑडिट ट्रेल उत्पादन संबंधी घटनाओं की समस्या-निवारण और अनुपालन आवश्यकताओं को पूरा करने के लिए आवश्यक है।

CREATE TABLE prompt_audit_log (
  id          SERIAL PRIMARY KEY,
  prompt_id   VARCHAR(100),
  version     VARCHAR(20),
  action      VARCHAR(50),  -- 'registered', 'activated', 'deactivated'
  actor       VARCHAR(100), -- user or service that performed the action
  reason      TEXT,
  created_at  TIMESTAMP DEFAULT NOW()
);

-- Trigger to auto-log activations
CREATE OR REPLACE FUNCTION log_activation()
RETURNS TRIGGER AS $func$
BEGIN
  IF NEW.is_active != OLD.is_active THEN
    INSERT INTO prompt_audit_log (prompt_id, version, action)
    VALUES (NEW.prompt_id, NEW.version,
            CASE WHEN NEW.is_active THEN 'activated' ELSE 'deactivated' END);
  END IF;
  RETURN NEW;
END;
$func$ LANGUAGE plpgsql;

CREATE TRIGGER trg_activation
AFTER UPDATE ON prompt_versions
FOR EACH ROW EXECUTE FUNCTION log_activation();

त्वरित जाँच

प्रॉम्प्ट रजिस्ट्री के डेटाबेस स्कीमा में कौन-सा फ़ील्ड यह सुनिश्चित करता है कि किसी भी समय उत्पादन वातावरण में प्रॉम्प्ट का केवल एक संस्करण उपलब्ध कराया जाए?

रजिस्ट्री आर्किटेक्चर का सारांश

प्रॉम्प्ट रजिस्ट्री प्रॉम्प्ट को संस्करणित आर्टिफैक्ट के रूप में रखकर उनका प्रबंधन केंद्रीकृत करती है। डिज़ाइन के प्रमुख निर्णय:

  • पहचान तालिका (prompt_id) को संस्करण तालिका (version, template, metadata) से अलग रखना
  • परमाण्विक अदला-बदली वाला एकल is_active फ़्लैग एक साथ दो सक्रिय संस्करणों की त्रुटियों को रोकता है
  • समृद्ध मेटाडेटा (लेखक, टैग, मॉडल, परिवर्तन-सूची) खोज और ऑडिट में सहायता करता है
  • REST API परत रजिस्ट्री को सभी सेवाओं के लिए उपलब्ध बनाती है
  • ऑडिट लॉग अनुपालन और घटनाओं की समस्या-निवारण में सहायता देता है

फ़ाइल-आधारित रजिस्ट्री छोटी टीमों के लिए उपयोगी हैं; बहु-टीम और उच्च-उपलब्धता वाली उत्पादन प्रणालियों के लिए डेटाबेस-आधारित रजिस्ट्री अधिक पसंद की जाती हैं।

शुरुआत निःशुल्क

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

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

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

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

क्या “प्रॉम्प्ट रजिस्ट्री का आर्किटेक्चर” पाठ निःशुल्क है?

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

“प्रॉम्प्ट रजिस्ट्री का आर्किटेक्चर” में मैं क्या सीखूँगा?

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

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

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

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

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

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

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

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

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