ژنراتور ساده SQL با استفاده از AWS Bedrock

استفاده از عوامل AWS Bedrock برای تبدیل پرس و جوهای کاربر به عبارات SQL شامل استفاده از مدل های زبان بزرگ Bedrock (LLM) و طراحی سیستمی است که طرحواره، درخواست کاربر و فرآیند تولید SQL را یکپارچه می کند. در زیر یک راهنمای گام به گام برای دستیابی به این امر آورده شده است:
1-مشکل را تعریف کنید
هدف شما این است که یک درخواست کاربر (به زبان طبیعی) را به یک دستور SQL بر اساس یک جدول از پیش تعریف شده تبدیل کنید. به عنوان مثال:
- پرس و جو کاربر: “نام همه کارمندان بخش فروش را بیابید.”
- طرح واره جدول:
{
"table_name": "employees",
"columns": [
{"name": "id", "type": "INTEGER"},
{"name": "name", "type": "VARCHAR"},
{"name": "department", "type": "VARCHAR"},
{"name": "salary", "type": "FLOAT"}
]
}
SELECT name FROM employees WHERE department = 'Sales';
2. AWS Bedrock را راه اندازی کنید
AWS Bedrock به شما امکان می دهد بدون مدیریت زیرساخت به مدل های پایه دسترسی داشته باشید و از آنها استفاده کنید. در اینجا نحوه ادامه کار آمده است:
- Bedrock را در حساب AWS خود فعال کنید.
- یک مدل فونداسیون انتخاب کنید از گزینه های موجود Bedrock (به عنوان مثال، Anthropic، Cohere، یا دیگران).
- به Bedrock SDK دسترسی پیدا کنید از طریق AWS CLI، SDK یا کنسول.
3. محیط را آماده کنید
-
SDK های مورد نیاز را نصب کنید: AWS SDK را برای پایتون نصب کنید (
boto3
) برای تعامل با خدمات AWS:
pip install boto3
-
نقش های IAM را تنظیم کنید: مطمئن شوید که نقش شما دارای مجوز برای Bedrock است:
bedrock:InvokeModel
bedrock:ListModels
bedrock:ListFoundationModels
4. Input Schema را تعریف کنید
طرح ورودی شما شامل موارد زیر است:
- پرس و جو زبان طبیعی: یک پیام متنی ارائه شده توسط کاربر.
- طرح واره جدول: JSON طرحواره پایگاه داده را توصیف می کند.
ورودی نمونه برای LLM:
{
"query": "Find the names of all employees in the Sales department.",
"schema": {
"table_name": "employees",
"columns": [
{"name": "id", "type": "INTEGER"},
{"name": "name", "type": "VARCHAR"},
{"name": "department", "type": "VARCHAR"},
{"name": "salary", "type": "FLOAT"}
]
}
}
5. از Bedrock برای تولید SQL استفاده کنید
در اینجا نحوه ارسال پرس و جو و طرحواره به Bedrock آمده است:
مثال کد پایتون:
import boto3
import json
# Initialize Bedrock client
bedrock_client = boto3.client('bedrock', region_name='us-east-1')
# Input schema and user query
input_data = {
"query": "Find the names of all employees in the Sales department.",
"schema": {
"table_name": "employees",
"columns": [
{"name": "id", "type": "INTEGER"},
{"name": "name", "type": "VARCHAR"},
{"name": "department", "type": "VARCHAR"},
{"name": "salary", "type": "FLOAT"}
]
}
}
# Prepare prompt for the LLM
prompt = f"""
Generate an SQL query based on the following table schema and user request:
Table Schema:
{json.dumps(input_data['schema'], indent=2)}
User Query:
{input_data['query']}
SQL Query:
"""
# Invoke the Bedrock model
response = bedrock_client.invoke_model(
modelId='your-chosen-model-id', # Replace with the specific model ID from Bedrock
body=json.dumps({"prompt": prompt}),
contentType='application/json',
accept='application/json'
)
# Extract the SQL query
model_output = json.loads(response['body'])
sql_query = model_output['completions'][0]['data']['text']
print("Generated SQL Query:")
print(sql_query)
6. اعتبارسنجی و آزمایش
-
عامل را تست کنید:
- پرس و جوهای مختلف کاربر را ارائه دهید و SQL تولید شده را تأیید کنید.
-
قوانین اعتبار سنجی را اضافه کنید:
- اطمینان حاصل کنید که SQL تولید شده با طرح شما هماهنگ است و از تزریق SQL محافظت می کند.
7. (اختیاری) به عنوان یک API مستقر شود
می توانید راه حل را به عنوان یک API با استفاده از AWS Lambda و API Gateway مستقر کنید:
- یک تابع Lambda برای مدیریت ورودی و فراخوانی مدل Bedrock ایجاد کنید.
- از API Gateway برای نمایش تابع به عنوان نقطه پایانی HTTP استفاده کنید.
8. با یادگیری چند شات تقویت کنید
برای بهبود دقت:
- چند مثال (اعلام با خروجی های مورد انتظار SQL) در اعلان Bedrock ارائه دهید.
- نظراتی را در توضیح قوانین اضافه کنید.
اعلان مثال:
Generate an SQL query based on the schema and request.
Example 1:
Table Schema:
{
"table_name": "employees",
"columns": [
{"name": "id", "type": "INTEGER"},
{"name": "name", "type": "VARCHAR"},
{"name": "department", "type": "VARCHAR"},
{"name": "salary", "type": "FLOAT"}
]
}
User Query: Find employees in the Sales department.
SQL Query: SELECT * FROM employees WHERE department="Sales";
Example 2:
Table Schema:
{...}
Now generate an SQL query for this schema and request:
9. نظارت و تکرار
- ورود به سیستم: ثبت همه پرس و جوها و تولید SQL برای اشکال زدایی و تجزیه و تحلیل.
- تنظیم دقیق: دستورات را بر اساس عملکرد مدل تنظیم کنید.
این فرآیند به شما امکان می دهد یک سیستم قوی و مقیاس پذیر برای تبدیل پرس و جوهای کاربر به دستورات SQL با استفاده از عوامل AWS Bedrock ایجاد کنید.