برنامه نویسی

ژنراتور ساده 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 به شما امکان می دهد بدون مدیریت زیرساخت به مدل های پایه دسترسی داشته باشید و از آنها استفاده کنید. در اینجا نحوه ادامه کار آمده است:

  1. Bedrock را در حساب AWS خود فعال کنید.
  2. یک مدل فونداسیون انتخاب کنید از گزینه های موجود Bedrock (به عنوان مثال، Anthropic، Cohere، یا دیگران).
  3. به Bedrock SDK دسترسی پیدا کنید از طریق AWS CLI، SDK یا کنسول.

3. محیط را آماده کنید

  1. SDK های مورد نیاز را نصب کنید: AWS SDK را برای پایتون نصب کنید (boto3) برای تعامل با خدمات AWS:
   pip install boto3
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. نقش های 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. اعتبارسنجی و آزمایش

  1. عامل را تست کنید:

    • پرس و جوهای مختلف کاربر را ارائه دهید و SQL تولید شده را تأیید کنید.
  2. قوانین اعتبار سنجی را اضافه کنید:

    • اطمینان حاصل کنید که SQL تولید شده با طرح شما هماهنگ است و از تزریق SQL محافظت می کند.

7. (اختیاری) به عنوان یک API مستقر شود

می توانید راه حل را به عنوان یک API با استفاده از AWS Lambda و API Gateway مستقر کنید:

  1. یک تابع Lambda برای مدیریت ورودی و فراخوانی مدل Bedrock ایجاد کنید.
  2. از API Gateway برای نمایش تابع به عنوان نقطه پایانی HTTP استفاده کنید.

8. با یادگیری چند شات تقویت کنید

برای بهبود دقت:

  1. چند مثال (اعلام با خروجی های مورد انتظار SQL) در اعلان Bedrock ارائه دهید.
  2. نظراتی را در توضیح قوانین اضافه کنید.

اعلان مثال:

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. نظارت و تکرار

  1. ورود به سیستم: ثبت همه پرس و جوها و تولید SQL برای اشکال زدایی و تجزیه و تحلیل.
  2. تنظیم دقیق: دستورات را بر اساس عملکرد مدل تنظیم کنید.

این فرآیند به شما امکان می دهد یک سیستم قوی و مقیاس پذیر برای تبدیل پرس و جوهای کاربر به دستورات SQL با استفاده از عوامل AWS Bedrock ایجاد کنید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا