ผู้ช่วย SQL สำหรับ DB ของคุณ
มอบโครงร่างให้โมเดล ให้โมเดลเขียน SQL เรียกใช้กับ DB ในสภาพแวดล้อมแยก และอธิบายผลลัพธ์
ผู้ช่วย SQL สำหรับ DB ของคุณ เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ
เป้าหมายโครงการ
สร้างเอเจนต์ที่เปลี่ยนคำถามภาษาธรรมชาติเป็น SQL รันกับฐานข้อมูลแบบแซนด์บ็อกซ์ และอธิบายผลลัพธ์
เอเจนต์แบบ “พูดคุยกับฐานข้อมูลของฉัน” ซึ่งเป็นงานพื้นฐานที่ใช้บ่อย
สถาปัตยกรรม
- ผู้ใช้: “เดือนนี้มีผู้ใช้ที่ใช้งานอยู่กี่คน”
- เอเจนต์เรียก list_tables และ describe_table เพื่อเรียนรู้สคีมา
- เอเจนต์เรียก run_sql พร้อมคำค้นที่สร้างขึ้น
- เอเจนต์อธิบายผลลัพธ์ด้วยภาษาธรรมชาติ
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: เครื่องมือ run_sql ที่ SAFE
คุณต้องจำกัดสิ่งที่เอเจนต์ทำได้ — อ่านอย่างเดียว หมดเวลาของคำค้น และจำกัดจำนวนแถว:
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 = ''
for t in list_tables():
cols = describe_table(t)
schema += f'{t}: {cols}\n'
system = system + f'\nSchema:\n{schema}'ผู้ใช้ฐานข้อมูลแบบอ่านอย่างเดียว
แม้จะมีการตรวจสอบโค้ดแล้ว ก็ควรสร้างผู้ใช้ฐานข้อมูลแบบอ่านอย่างเดียวที่มีสิทธิ์เฉพาะในสคีมาสำหรับการวิเคราะห์ด้วย เป็นการป้องกันหลายชั้น
การปกปิด PII
คอลัมน์บางรายการ (email, phone) ไม่ควรรั่วไหลออกไปโดยเด็ดขาด ให้ปกปิดคอลัมน์เหล่านี้ในผลลัพธ์ก่อนส่งคืน:
PII_COLS = {'email', 'phone'}
for row in rows:
for i, col in enumerate(cols):
if col in PII_COLS:
row[i] = '[REDACTED]'การประเมินค่าใช้จ่ายของคำค้น
ใช้ EXPLAIN เพื่อประเมินค่าใช้จ่ายของคำค้น ปฏิเสธคำค้นที่มีค่าใช้จ่ายสูงกว่าเกณฑ์ (ป้องกันการสแกนทั้งตารางโดยไม่ตั้งใจในตารางขนาดใหญ่)
ตัวอย่างการสนทนา
ผู้ใช้: “ลูกค้า 5 อันดับแรกตามยอดใช้จ่ายของเดือนที่แล้ว”
เอเจนต์:
- list_tables -> [users, orders, ...]
- describe_table(orders) -> [id, user_id, total, created_at]
- run_sql(“SELECT user_id, SUM(total) ...”)
- ส่งคืน: “Alice ($1240), Bob ($910), ...”
แผนภูมิผลลัพธ์
เพื่อประสบการณ์ผู้ใช้ที่ดียิ่งขึ้น ให้เพิ่มเครื่องมือ render_chart ซึ่งรับคอลัมน์และแถว แล้วส่งคืน URL ของภาพแผนภูมิ เอเจนต์สามารถเรียกใช้หลังจากค้นข้อมูลได้
ล้มเหลวอย่างเหมาะสม
ข้อผิดพลาดของ SQL เกิดขึ้นบ่อย ให้ส่งข้อความข้อผิดพลาดจาก Postgres กลับไปแบบตรงตัว — โมเดลเก่งมากในการแก้ SQL ที่ผิดของตนเองเมื่อเห็นข้อผิดพลาด
ตรวจสอบทุกคำค้น
บันทึกผู้ใช้ คำถามภาษาธรรมชาติ SQL ที่สร้างขึ้น และจำนวนผลลัพธ์ การตรวจสอบเป็นสิ่งที่ขาดไม่ได้สำหรับเอเจนต์ที่เข้าถึงฐานข้อมูล
เหตุใดจึงจำกัดไว้ที่ SELECT
เหตุใดจึงกำหนดตายตัวให้เอเจนต์เรียกใช้ได้เฉพาะคำสั่ง SELECT
สรุป
เอเจนต์ SQL มีประโยชน์ได้ทันที ควรสร้างอย่างรอบคอบ — ผู้ใช้แบบอ่านอย่างเดียว หมดเวลาของคำสั่ง จำกัดจำนวนแถว รายการอนุญาตประเภทคำค้น และบันทึกการตรวจสอบ
เรียนรู้ AI Agents ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 60
- บทเรียน
- 239
คำถามที่พบบ่อย
บทเรียน “ผู้ช่วย SQL สำหรับ DB ของคุณ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ผู้ช่วย SQL สำหรับ DB ของคุณ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ผู้ช่วย SQL สำหรับ DB ของคุณ”
มอบโครงร่างให้โมเดล ให้โมเดลเขียน SQL เรียกใช้กับ DB ในสภาพแวดล้อมแยก และอธิบายผลลัพธ์ คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “ผู้ช่วย SQL สำหรับ DB ของคุณ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม
ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- บอตถามตอบบนเอกสารของคุณ
- เอเจนต์อธิบายโค้ด
- เอเจนต์วิจัยผ่านเว็บ
- ผู้ช่วย SQL สำหรับ DB ของคุณ