تصور کنید وارد یک پنل مدیریتی میشوید، فقط یک جمله ساده تایپ میکنید:
«نمایش مشتریانی که بیش از ۵ خرید داشتهاند»
و بدون اینکه حتی یک خط SQL بنویسید، جدول دقیق با تمام اطلاعات جلو روی شما ظاهر میشود.
نه نیاز به دانش دیتابیس دارید، نه وقت گذاشتن برای نوشتن کوئریهای پیچیده.
این آینده نیست. این حال حاضر توسعه نرمافزار با هوش مصنوعیست.
با ظهور مدلهای زبانی قدرتمند مثل GPT-4، تعامل با دادهها وارد مرحلهای جدید شده است. حال میتوانیم با زبان طبیعی، مثل حرف زدن با یک همکار، از دیتابیس اطلاعات بگیریم.
مرحله اول: دریافت ساختار دیتابیس
برای اینکه GPT-4 بتواند کوئری دقیق تولید کند، ابتدا باید ساختار جدولها و ستونها را بشناسد. با استفاده از EF Core، میتوان لیستی از جدولها و فیلدها را استخراج کرد و به مدل ارسال کرد.
public async Task<string> GetAllTableSchemas()
{
// دریافت اطلاعات جدولها از دیتابیس
}
مرحله دوم: تبدیل زبان طبیعی به SQL
در این مرحله، جملهای مانند "نمایش مشتریانی که بیش از ۵ خرید داشتهاند" به GPT-4 ارسال میشود. مدل با توجه به ساختار دیتابیس، کوئری SQL مناسب تولید میکند.
public async Task<string> GenerateSQLQuery(string userPrompt)
{
var prompt = $"Given the following database schema: {schema}, write a SELECT SQL query for: {userPrompt}";
var response = await openAiClient.GetCompletionAsync(prompt);
return response.Text;
}
مرحله سوم: اجرای کوئری و نمایش نتیجه
کوئری تولیدشده روی دیتابیس اجرا میشود و نتیجه به کاربر نمایش داده میشود. این بخش میتواند بهصورت جدول، نمودار یا حتی فایل خروجی طراحی شود.
public async Task<DataTable> ExecuteQuery(string sql)
{
using var connection = new NpgsqlConnection(connectionString);
var command = new NpgsqlCommand(sql, connection);
var reader = await command.ExecuteReaderAsync();
// تبدیل نتیجه به DataTable
}
⚠️ نکتهای که باید در نظر بگیرید این است که فقط کوئریهای SELECT مجاز هستند تا از تغییر یا حذف دادهها جلوگیری شود.
برای دیدن نمونه عملی این پروژه، مقاله اصلی در DZone را ببینید.
___________
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#نگار_قاسمی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
________