Công nghệ - 22/12/2025 16:56:06
Ở những năm 2000, khi viết một câu lệnh SQL Stored Procedure dài 500 dòng là niềm tự hào của một backend developer. Chúng ta tối ưu từng cái index, nâng niu từng câu JOIN. Nhưng gần đây, tôi nhận ra một sự thật phũ phàng: Ông sếp lưỡi không lông của tôi không quan tâm đến SQL của bạn đẹp thế nào. Hắn chỉ quan tâm đến Dữ Liệu.
Hắn muốn hỏi: "Doanh thu tháng này so với cùng kỳ năm ngoái thế nào?"và ếch muốn chờ tôi export report, quần quật mất 3 ngày 3 đêm.
Đó là lý do Text-to-SQL Agent ra đời. Và nếu bạn nghĩ đây là sân chơi riêng của Python, thì hãy để tôi, một coder chỉ biết tới .NET lại muốn chứng minh rằng: .NET vẫn là "chân ái" cho hệ thống của chúng tôi.
Nhiều bạn sẽ hỏi: "Chỉ cần ném schema vào ChatGPT là nó viết được SQL mà?"
Đúng, nhưng chưa đủ. Để tối ưu hệ thống dữ liệu lớn, và tránh tình trạng rất dễ gặp ảo giác. Nó có thể bịa ra tên bảng, sai cú pháp SQL, mà bạn có thể mất vài tiếng để review và debug hoặc nguy hiểm hơn là tạo ra các truy vấn "quét sạch" database của bạn.
Và chốt lại một AI Agent viết bằng .NET sẽ hoạt động như một "kỹ sư ảo" với quy trình suy nghĩ (Chain of Thought):
Python có LangChain, và phía .net chúng ta có Semantic Kernel (SK). Đây là SDK mã nguồn mở của Microsoft giúp tích hợp LLM vào code C# một cách mượt mà như cách chúng ta dùng Dependency Injection vậy.
Tại sao tôi chọn stack này, dưới đây là một vài key-point:
Để xây dựng một Agent "thông minh" và an toàn, tôi đề xuất kiến trúc sau dựa trên các nghiên cứu từ Microsoft Learn và kinh nghiệm thực tế:
Bước 1: RAG cho Metadata của thông tin bảng
Chúng ta sẽ không ném cả 100 bảng vào Prompt (tốn token và gây nhiễu), hãy liệt kê danh sách bảng, sau đó dùng Vector Search để tìm ra 5-10 bảng liên quan nhất đến câu hỏi của người dùng.
Bước 2: The "Planner" (Bộ não của Agent)
Sử dụng Function Calling trong Semantic Kernel. Chúng ta định nghĩa các hàm như GetTableSchema, ExecuteQuery (read-only), CorrectSyntax. Agent sẽ tự biết khi nào cần gọi hàm nào.
Một tip nhỏ tôi hay dùng để chuẩn hóa câu prompt bằng cách cung cấp cho Agent một vài ví dụ mẫu (kỹ thuật Few-shot prompting) về cách database của bạn được tổ chức. Ví dụ: "Bảng 'Orders' liên kết với 'Users' qua 'CustomerId', không phải 'UserId'".
Bước 3: Vòng lặp sửa lỗi (The Feedback Loop)
Đây là điểm ăn tiền. Nếu SQL sinh ra bị lỗi runtime, Agent sẽ bắt lỗi đó (exception), đọc thông báo lỗi, và viết lại câu lệnh mới. Đây là tư duy của một Senior Dev được codify vào AI.
Đây là điểm ăn tiền. Nếu SQL sinh ra bị lỗi runtime, Agent sẽ bắt lỗi đó (exception), đọc thông báo lỗi, và viết lại câu lệnh mới. Đây là tư duy của một Senior Dev được codify vào AI.
Nếu bạn là người làm hệ thống lão luyện, bạn sẽ không bao giờ tin tưởng hoàn toàn vào đầu vào từ người dùng hay đầu ra của AI.
Đây là phần 'thịt' của vấn đề. Dưới đây là cách tôi dựng khung sườn cho một SQL Agent sử dụng .NET 8 và Semantic Kernel. Chú ý cách chúng ta dùng Description attribute để 'dạy' AI hiểu về code của mình.
1. Định nghĩa "Tools" cho Agent
Đây là nơi chúng ta biến các hàm C# thành công cụ mà AI có thể gọi.
2. Cấu hình "Brain" cho Agent
Đây là đoạn code kết nối Azure OpenAI và kích hoạt chế độ tự động suy luận (Auto Function Calling).
AI sẽ tự động:
Một số lưu ý:
Công nghệ không chờ đợi ai. Việc xây dựng Text-to-SQL Agent không chỉ là tạo ra một tính năng "cool ngầu", mà là trao quyền dữ liệu (Data Democratization).
Là .NET Developer, bạn đang nắm trong tay những công cụ mạnh mẽ nhất (C#, Azure OpenAI, Semantic Kernel). Đừng để rào cản ngôn ngữ lập trình khiến bạn nghĩ rằng AI chỉ dành cho Python. Hãy bắt đầu ngay hôm nay!
Dành cho các bạn muốn đào sâu vào kiến trúc, các tài liệu này của Microsoft giải thích rất kỹ:
Hãy để lại Comment bên dưới để chúng ta cùng thảo luận về những thách thức khi triển khai thực tế nhé! 👇
♻️ Repost nếu bạn thấy bài viết này hữu ích cho cộng đồng nhé.
#DotNet #AI #SemanticKernel #TextToSQL #ArtificialIntelligence #SoftwareArchitecture #Microsoft #AzureOpenAI #Coding #TechLead
Công nghệ - 19/08/2025 21:13:07
Tìm hiểu cách xây dựng hệ thống phát hiện ngôn ngữ ký hiệu theo thời gian thực bằng AI, sử dụng DETR để tăng cường khả năng tiếp cận và đổi mới. Kết nối lời nói và cử chỉ.
Công nghệ - 18/08/2025 13:38:25
Tối ưu hóa các hệ thống RAG bằng cách tận dụng siêu dữ liệu để truy xuất thông tin chính xác và nhanh chóng hơn, giải quyết các thách thức về dữ liệu dư thừa hoặc lỗi thời với công cụ LangExtract nguồn mở. Khám phá cách LangExtract sử dụng các mô hình ngôn ngữ tiên tiến để trích xuất và cấu trúc siêu dữ liệu, tạo ra một quy trình truy xuất hợp lý và hiệu quả.
Công nghệ - 01/08/2025 07:00:00
Gỡ lỗi LLM rất quan trọng vì quy trình làm việc của chúng phức tạp và liên quan đến nhiều phần như chuỗi, lời nhắc, API, công cụ, trình truy xuất, v.v.
Công nghệ - 19/06/2025 03:05:09
Code xong chạy được là chưa đủ – phải biết khi nào nó "chết" nữa chứ 😅
Bạn đang triển khai ứng dụng trên Kubernetes, Docker hay môi trường production nào? Và bạn từng "toát mồ hôi" vì service chết mà không ai báo?
Công nghệ - 16/07/2025 13:41:17
Công nghệ - 27/06/2025 03:15:44
Công nghệ - 11/12/2025 15:05:29
[Góc chuyện nghề] bán account game để đi học nghệ - bạn dám không?
Làm nghề 20 năm, gặp nhiều sinh viên, nhưng chiều qua tôi khá bất ngờ với một cậu em tên Quang. Em Quang muốn theo nghề BA và mong muốn lương 20 triệu sau khi làm việc 1.5 năm tới 2 năm trong nghề.
Công nghệ - 22/09/2025 08:59:20
Dừng ngay việc dùng DateTime.Now trong APIs, đó là ổ lỗi tiềm ẩn trong hệ thống của bạn
⏱️ Tôi từng nghĩ DateTime.Now là một thứ vô hại, đơn giản và tiện lợi, cho đến khi gặp những vấn đề về múi giờ. Những lỗi "tưởng chừng nhỏ" này lại chính là nguồn cơn của sự thất vọng và tốn kém thời gian cho nhiều đội ngũ phát triển.
Công nghệ - 14/03/2025 04:30:32