Ein SQL-Assistent für Ihre Datenbank
Geben Sie dem Modell ein Schema, lassen Sie es SQL schreiben, führen Sie den Code in einer isolierten Datenbank aus und lassen Sie die Ergebnisse erklären.
Ein SQL-Assistent für Ihre Datenbank ist eine kostenlose AI Agents-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des AI Agents-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.
Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.
Projektziel
Erstellen Sie einen Agent, der natürlichsprachliche Fragen in SQL umwandelt, sie gegen eine abgeschottete Datenbank ausführt und die Ergebnisse erklärt.
Der klassische „Mit meiner Datenbank sprechen“-Agent.
Architektur
- Benutzer: „Wie viele aktive Benutzer gibt es diesen Monat?“
- Der Agent ruft list_tables und describe_table auf, um das Schema zu ermitteln
- Der Agent ruft run_sql mit der generierten Abfrage auf
- Der Agent erklärt das Ergebnis in natürlicher Sprache
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()Schritt 2: Ein SICHERES run_sql-Tool
Sie müssen die Möglichkeiten des Agents einschränken – nur Lesezugriff, Abfrage-Timeout und Zeilenlimit:
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())
Schema im System-Prompt übergeben
Für eine bessere Latenz rufen Sie das Schema einmal beim Start ab und fügen Sie es in den System-Prompt ein – dadurch sparen Sie Tool-Roundtrips:
schema = ''
for t in list_tables():
cols = describe_table(t)
schema += f'{t}: {cols}\n'
system = system + f'\nSchema:\n{schema}'Schreibgeschützter Datenbankbenutzer
Erstellen Sie zusätzlich zu den Code-Prüfungen einen schreibgeschützten DB-Benutzer mit Berechtigungen ausschließlich für das Analyseschema. Defense in Depth.
PII-Maskierung
Einige Spalten (E-Mail, Telefonnummer) dürfen niemals nach außen gelangen. Maskieren Sie sie in den Ergebnissen, bevor Sie diese zurückgeben:
PII_COLS = {'email', 'phone'}
for row in rows:
for i, col in enumerate(cols):
if col in PII_COLS:
row[i] = '[REDACTED]'Abfragekosten schätzen
Verwenden Sie EXPLAIN, um die Abfragekosten zu schätzen, und lehnen Sie Abfragen mit Kosten über dem Schwellenwert ab (verhindert versehentliche vollständige Tabellenscans bei sehr großen Tabellen).
Beispielgespräch
Benutzer: „Top 5 Kunden nach Ausgaben im letzten Monat“
Agent:
- list_tables → [users, orders, ...]
- describe_table(orders) → [id, user_id, total, created_at]
- run_sql(„SELECT user_id, SUM(total) ...“)
- Gibt zurück: „Alice ($1240), Bob ($910), ...“
Diagramme ausgeben
Für eine bessere Benutzererfahrung fügen Sie ein render_chart-Tool hinzu, das Spalten und Zeilen entgegennimmt und eine URL zu einem Diagrammbild zurückgibt. Der Agent kann es nach einer Abfrage aufrufen.
Fehler elegant behandeln
SQL-Fehler sind häufig. Geben Sie die Postgres-Fehlermeldung unverändert zurück – das Modell kann fehlerhaftes SQL hervorragend selbst korrigieren, wenn es die Fehlermeldung sieht.
Jede Abfrage protokollieren
Protokollieren Sie den Benutzer, die natürlichsprachliche Frage, das generierte SQL und die Anzahl der Ergebnisse. Audit-Protokolle sind bei Agents mit Datenbankzugriff unverzichtbar.
Warum auf SELECT beschränken?
Warum sollte der Agent fest auf die Ausführung von SELECT-Anweisungen beschränkt werden?
Zusammenfassung
SQL-Agents sind sofort wertvoll. Entwickeln Sie sie sorgfältig – schreibgeschützter Benutzer, Anweisungs-Timeout, Zeilenlimit, Whitelist für Abfragetypen und Audit-Log.
Häufig gestellte Fragen
Ist die Lektion „Ein SQL-Assistent für Ihre Datenbank“ kostenlos?
Ja — der vollständige Text von „Ein SQL-Assistent für Ihre Datenbank“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des AI Agents-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Ein SQL-Assistent für Ihre Datenbank“?
Geben Sie dem Modell ein Schema, lassen Sie es SQL schreiben, führen Sie den Code in einer isolierten Datenbank aus und lassen Sie die Ergebnisse erklären. Du übst AI Agents mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um AI Agents zu starten?
Keine Vorkenntnisse erforderlich. AI Agents auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Ein SQL-Assistent für Ihre Datenbank“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser AI Agents-Lektion Code schreiben und ausführen?
Ja. Jede AI Agents-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Ein Q&A-Bot für Ihre Dokumente
- Ein Agent zur Code-Erklärung
- Ein Recherche-Agent zum Web-Browsing
- Ein SQL-Assistent für Ihre Datenbank