एआई का उपयोग करके एसक्यूएल क्वेरी बनाना | मूल, AI द्वारा अनुवादित

Home 2025.07

डेटाबेस स्कीमा (PostgreSQL):

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    username VARCHAR(50) UNIQUE NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    password_hash VARCHAR(255) NOT NULL,
    first_name VARCHAR(100),
    last_name VARCHAR(100),
    date_of_birth DATE,
    gender VARCHAR(10),
    phone_number VARCHAR(20),
    address TEXT,
    city VARCHAR(100),
    state VARCHAR(100),
    country VARCHAR(100),
    zip_code VARCHAR(20),
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP WITH TIME ZONE,
    last_login TIMESTAMP WITH TIME ZONE,
    is_active BOOLEAN DEFAULT TRUE,
    role VARCHAR(50),
    profile_picture_url VARCHAR(255),
    bio TEXT,
    failed_login_attempts INTEGER DEFAULT 0,
    account_balance NUMERIC(10, 2) DEFAULT 0.00
);

ऊपर पोस्टग्रेस डेटाबेस है, नीचे टेबल डिफिनिशन है। यहां प्राकृतिक भाषा क्वेरी निर्देश हैं।

मुझे कुछ उपयोगकर्ताओं की आवश्यकता है जिनका पहला नाम एंडी है, जो पिछले महीने के आसपास बनाया गया था, और जो 2025 तक 20 वर्ष के हैं, और जिनका अंतिम लॉगिन पिछले सप्ताह के समान है, मुझे ऐसे उपयोगकर्ताओं के लिए SQL प्रदान करें


उत्पन्न SQL क्वेरी:

SELECT *
FROM users
WHERE first_name ILIKE 'andy'
  AND CAST(created_at AS DATE) BETWEEN
      (CURRENT_DATE - INTERVAL '1 MONTH' - INTERVAL '1 DAY')
      AND
      (CURRENT_DATE - INTERVAL '1 MONTH' + INTERVAL '1 DAY')
  AND EXTRACT(YEAR FROM AGE(date_of_birth)) = 20
  AND last_login >= CURRENT_TIMESTAMP - INTERVAL '7 DAYS';

नीचे एक PostgreSQL टेबल डिफिनिशन है conversations टेबल जो एक AI सिस्टम जैसे Grok के साथ उपयोगकर्ता इंटरैक्शन को स्टोर करने के लिए उपयोग किया जा सकता है। टेबल उपयोगकर्ता को ट्रैक करने के लिए डिज़ाइन किया गया है, जिसमें शामिल हैं, संवाद सामग्री, टाइमस्टैम्प और संबंधित मेटाडेटा।

CREATE TABLE conversations (
    id SERIAL PRIMARY KEY,
    user_id INTEGER NOT NULL,
    title VARCHAR(255),
    conversation_type VARCHAR(50) DEFAULT 'chat',
    started_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
    ended_at TIMESTAMP WITH TIME ZONE,
    status VARCHAR(50) DEFAULT 'active',
    message_count INTEGER DEFAULT 0,
    last_message_at TIMESTAMP WITH TIME ZONE,
    is_archived BOOLEAN DEFAULT FALSE,
    ai_model_version VARCHAR(100),
    total_tokens_used INTEGER DEFAULT 0,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP WITH TIME ZONE,
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);

स्पष्टीकरण:

इस टेबल को लचीला बनाया गया है और इसे विशिष्ट आवश्यकताओं के आधार पर बढ़ाया जा सकता है, जैसे कि एक अलग messages टेबल में व्यक्तिगत संदेशों को स्टोर करना या संवेदना विश्लेषण या संवाद टैग्स के लिए फ़ील्ड जोड़ना। मुझे बताएं अगर आपको एक संबंधित टेबल (उदाहरण के लिए, संदेशों के लिए) या इस टेबल के साथ इंटरैक्ट करने के लिए एक क्वेरी की आवश्यकता है!


एक फ्रंटएंड सक्षम करने के लिए जहां उपयोगकर्ता प्राकृतिक भाषा का उपयोग करके अपने संवादों को क्वेरी कर सकते हैं (उदाहरण के लिए, “मेरे पिछले 5 संवाद दें” या “जिनके शीर्षक में शब्द ‘java’ है”), आपको सुनिश्चित करना होगा कि SQL क्वेरी परिणामों को स्वचालित रूप से उपयोगकर्ता के संवादों तक सीमित करती है। इसमें उपयोगकर्ता की पहचान (उदाहरण के लिए, user_id) को क्वेरी में शामिल करना और प्राकृतिक भाषा को SQL शर्तों में अनुवाद करना शामिल है। नीचे conversations टेबल के लिए प्रॉम्प्ट्स और संबंधित SQL क्वेरी हैं, सुनिश्चित करते हुए कि उपयोगकर्ता केवल अपने डेटा तक पहुंच सकते हैं।

मुख्य विचार

प्राकृतिक भाषा प्रॉम्प्ट्स और SQL क्वेरी

प्रॉम्प्ट 1: “मेरे पिछले 5 संवाद दें”

पार्स किए गए आवश्यकताएं:

SQL क्वेरी:

SELECT *
FROM conversations
WHERE user_id = :authenticated_user_id
ORDER BY started_at DESC
LIMIT 5;

प्रॉम्प्ट 2: “जिनके शीर्षक में शब्द ‘about java’ है”

पार्स किए गए आवश्यकताएं:

SQL क्वेरी:

SELECT *
FROM conversations
WHERE user_id = :authenticated_user_id
  AND title ILIKE '%java%';

फ्रंटएंड के लिए कार्यान्वयन नोट्स

  1. उपयोगकर्ता प्रमाणीकरण:
    • फ्रंटएंड को स्वचालित रूप से उपयोगकर्ता के ID (उदाहरण के लिए, एक JWT टोकन या सत्र से) को बैकएंड API को भेजना चाहिए।
    • बैकएंड को user_id को वैलिडेट करना चाहिए और इसे WHERE क्लॉज में उपयोग करना चाहिए ताकि परिणामों को फ़िल्टर किया जा सके।
  2. प्राकृतिक भाषा प्रसंस्करण:
    • एक सरल नियम-आधारित पार्सर या एक AI मॉडल (जैसे Grok) का उपयोग करें ताकि प्राकृतिक भाषा क्वेरी को समझा जा सके और निकाला जा सके:
      • इरादा: संवादों की सूची बनाएं।
      • फ़िल्टर: कीवर्ड (उदाहरण के लिए, “java”), सॉर्टिंग (उदाहरण के लिए, “पिछले”) या सीमाएँ (उदाहरण के लिए, “5”)।
    • उदाहरण के लिए, “पिछले 5” को ORDER BY started_at DESC LIMIT 5 में मैप करें और “शीर्षक में शब्द ‘java’ है” को title ILIKE '%java%' में मैप करें।
  3. API डिज़ाइन:
    • एक एंडपॉइंट बनाएं (उदाहरण के लिए, /api/conversations) जो स्वीकार करता है:
      • user_id: प्रमाणित सत्र से।
      • query: प्राकृतिक भाषा इनपुट या संरचित पैरामीटर (उदाहरण के लिए, { filter: "title contains java" })।
    • बैकएंड क्वेरी को SQL में अनुवाद करता है, सुनिश्चित करते हुए कि user_id हमेशा WHERE क्लॉज में शामिल है।
  4. सुरक्षा:
    • उपयोगकर्ताओं को SQL को सीधे इनपुट करने या user_id फ़िल्टर को बदलने की अनुमति नहीं दें।
    • SQL इंजेक्शन को रोकने के लिए पैरामीटराइज़्ड क्वेरी का उपयोग करें (उदाहरण के लिए, :authenticated_user_id)।
    • ILIKE खोजों में खराब पैटर्न से बचने के लिए इनपुट्स को वैलिडेट करें।
  5. फ्रंटएंड डिस्प्ले:
    • फ़ील्ड जैसे id, title, started_at, last_message_at, और status को वापस करें ताकि एक संवाद सूची प्रदर्शित की जा सके।
    • UI में सॉर्टिंग या फ़िल्टरिंग विकल्प प्रदान करें (उदाहरण के लिए, ड्रॉपडाउन “पिछले” या टेक्स्ट इनपुट शीर्षक खोज के लिए)।

उदाहरण वर्कफ़्लो

  1. उपयोगकर्ता लॉग इन करता है, और फ्रंटएंड उनके user_id को प्राप्त करता है (उदाहरण के लिए, 123)।
  2. उपयोगकर्ता एक खोज बार में “मेरे पिछले 5 संवाद दें” टाइप करता है।
  3. फ्रंटएंड बैकएंड को एक अनुरोध भेजता है: /api/conversations?user_id=123&query=पिछले 5
  4. बैकएंड क्वेरी को पार्स करता है, SQL उत्पन्न करता है:
    SELECT *
    FROM conversations
    WHERE user_id = 123
    ORDER BY started_at DESC
    LIMIT 5;
    
  5. बैकएंड परिणामों को JSON के रूप में वापस करता है, और फ्रंटएंड संवादों को प्रदर्शित करता है।

अतिरिक्त नोट्स

मुझे बताएं अगर आपको फ्रंटएंड कोड, बैकएंड API सेटअप, या अतिरिक्त क्वेरी उदाहरणों की आवश्यकता है!


Back Donate