0Pricing
AI Agents · Ders

DB'niz için SQL Asistanı

Modele bir şema verin, SQL yazmasına izin verin, bunu yalıtılmış bir DB üzerinde çalıştırın ve sonuçları açıklayın.

DB'niz için SQL Asistanı, CoddyKit'te ücretsiz bir AI Agents dersidir. Bu, 4 dersinin 4. 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 Agents öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Agents kursu toplamda 4 dersten oluşur.

Bu dersin bazı bölümleri henüz çevrilmemiş olup İngilizce olarak gösterilmektedir.

Proje Hedefi

Doğal dildeki soruları SQL'e dönüştüren, bunları korumalı bir veritabanında çalıştıran ve sonuçları açıklayan bir ajan oluşturun.

"Veritabanımla konuş" ajanlarının temel kullanım alanı.

Mimari

  1. Kullanıcı: "Bu ay kaç aktif kullanıcı var?"
  2. Ajan şemayı öğrenmek için list_tables ve describe_table çağrılarını yapar
  3. Ajan, oluşturulan sorguyla run_sql çağrısını yapar
  4. Ajan sonucu doğal dille açıklar

Step 1: Schema Tools

import psycopg

conn = psycopg.connect(DATABASE_URL)

def list_tables():
    with conn.cursor() as cur:
        cur.execute("SELECT table_name FROM information_schema.tables WHERE table_schema='public'")
        return [r[0] for r in cur.fetchall()]

def describe_table(name):
    with conn.cursor() as cur:
        cur.execute('''
            SELECT column_name, data_type FROM information_schema.columns
            WHERE table_name = %s
        ''', (name,))
        return cur.fetchall()

2. Adım: SAFE run_sql Aracı

Ajanın yapabileceklerini kısıtlamalısınız — salt okunur erişim, sorgu zaman aşımı, satır sınırı:

import re

def run_sql(query: str, limit: int = 100):
    q = query.strip().rstrip(';').lower()
    if not q.startswith('select'):
        return {'error': 'Only SELECT statements are allowed.'}
    if any(bad in q for bad in [' drop ', ' delete ', ' update ', ' insert ', ' alter ', ' truncate ']):
        return {'error': 'Statement contains a disallowed keyword.'}
    with conn.cursor() as cur:
        cur.execute(f'SET statement_timeout = 5000')   # 5 seconds
        cur.execute(f'SELECT * FROM ({query}) sub LIMIT {limit}')
        cols = [c.name for c in cur.description]
        rows = cur.fetchall()
        return {'columns': cols, 'rows': rows}

Tool Definitions

tools = [
    {'type': 'function', 'function': {'name': 'list_tables', 'description': 'List tables in the database', 'parameters': {'type': 'object', 'properties': {}}}},
    {'type': 'function', 'function': {'name': 'describe_table', 'description': 'Get columns of a table', 'parameters': {'type': 'object', 'properties': {'name': {'type': 'string'}}, 'required': ['name']}}},
    {'type': 'function', 'function': {'name': 'run_sql', 'description': 'Execute a SELECT query (read-only, max 100 rows, 5s timeout)', 'parameters': {'type': 'object', 'properties': {'query': {'type': 'string'}}, 'required': ['query']}}}
]
import json
print(json.dumps(tools, indent=2))

System Prompt

system = '''
You are a SQL analyst assistant for a Postgres database.
First use list_tables and describe_table to learn the schema.
Then write a single SELECT query to answer the user.
Never modify data.
After receiving results, explain them in plain language.
'''
print(system.strip())

Sistem İstemine Şemayı Aktarma

Daha iyi gecikme süreleri için şemayı başlangıçta bir kez getirip sistem istemine ekleyin — araçlar arası gidiş gelişleri azaltır:

schema = ''
for t in list_tables():
    cols = describe_table(t)
    schema += f'{t}: {cols}\n'
system = system + f'\nSchema:\n{schema}'

Salt Okunur Veritabanı Kullanıcısı

Kod kontrolleri olsa bile yalnızca analitik şema üzerinde izinleri bulunan salt okunur bir veritabanı kullanıcısı da oluşturun. Katmanlı savunma uygulayın.

PII Maskeleme

Bazı sütunlar (e-posta, telefon) asla sızmamalıdır. Sonuçları döndürmeden önce bunları maskeleyin:

PII_COLS = {'email', 'phone'}
for row in rows:
    for i, col in enumerate(cols):
        if col in PII_COLS:
            row[i] = '[REDACTED]'

Sorgu Maliyeti Tahmini

Sorgu maliyetini tahmin etmek için EXPLAIN kullanın; maliyeti eşik değerini aşan sorguları reddedin (büyük tablolarda yanlışlıkla tüm tablo taramalarının yapılmasını önler).

Örnek Konuşma

Kullanıcı: "Geçen ayki harcamaya göre en iyi 5 müşteri"

Ajan:

  1. list_tables -> [users, orders, ...]
  2. describe_table(orders) -> [id, user_id, total, created_at]
  3. run_sql("SELECT user_id, SUM(total) ...")
  4. Döndürür: "Alice ($1240), Bob ($910), ..."

Çıktı Grafikleri

Daha zengin bir kullanıcı deneyimi için sütunları ve satırları alıp bir grafik görüntüsü URL'si döndüren bir render_chart aracı ekleyin. Ajan bunu bir sorgudan sonra çağırabilir.

Hataları Zarifçe İşleme

SQL hataları yaygındır. PostgreSQL hata mesajını olduğu gibi döndürün — model, hata gösterildiğinde kendi bozuk SQL'ini düzeltme konusunda oldukça başarılıdır.

Her Sorguyu Denetleme

Kullanıcıyı, doğal dildeki soruyu, oluşturulan SQL'i ve sonuç sayısını günlüğe kaydedin. Veritabanı erişim ajanlarında denetimler vazgeçilmezdir.

Neden SELECT ile Sınırlamalı?

Ajanı yalnızca SELECT ifadelerini çalıştıracak şekilde neden sabit olarak kısıtlamalısınız?

Özet

SQL ajanları hemen değer sağlar. Bunları dikkatle oluşturun — salt okunur kullanıcı, ifade zaman aşımı, satır sınırı, sorgu türü izin listesi ve denetim günlüğü.

Sıkça Sorulan Sorular

“DB'niz için SQL Asistanı” dersi ücretsiz mi?

Evet — “DB'niz için SQL Asistanı” 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 Agents kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Agents kursu toplamda 4 dersten oluşur.

“DB'niz için SQL Asistanı” dersinde ne öğreneceğim?

Modele bir şema verin, SQL yazmasına izin verin, bunu yalıtılmış bir DB üzerinde çalıştırın ve sonuçları açıklayın. AI Agents 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 Agents öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AI Agents, 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 4. dersidir.

“DB'niz için SQL Asistanı” 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 Agents dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AI Agents 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. Belgeleriniz Üzerinde Soru-Cevap Botu
  2. Kod Açıklayan Bir Aracı
  3. Web'de Gezen Araştırma Aracısı
  4. DB'niz için SQL Asistanı
← AI Agents Sayfasına Dön