Chơi đùa với AI Miễn phí: Dựng Chatbot với Semantic Kernel và GitHub Models (Không cần Azure OpenAI!)
Lê Lân
0
Hướng Dẫn Sử Dụng Semantic Kernel Kết Hợp Với GitHub Models Để Xây Dựng Ứng Dụng AI Miễn Phí
Mở Đầu
Semantic Kernel đang trở thành một công cụ đắc lực giúp các nhà lập trình dễ dàng tiếp cận và xây dựng các ứng dụng trí tuệ nhân tạo (AI) với sự hỗ trợ của các mô hình ngôn ngữ lớn (LLMs) và mô hình nhỏ (SLMs).
Trong bối cảnh ngày càng nhiều người muốn phát triển các ứng dụng AI sáng tạo mà không muốn phụ thuộc vào các dịch vụ đám mây tốn kém như Azure OpenAI, việc tận dụng GitHub Models kết hợp với Semantic Kernel trở thành một giải pháp đầy tiềm năng. Bài viết này giới thiệu tổng quan về Semantic Kernel, cách sử dụng GitHub Models mà không cần qua Azure OpenAI, và hướng dẫn xây dựng một chatbot đơn giản bằng C# sử dụng Semantic Kernel cùng các mô hình AI từ GitHub.
Tổng Quan Về Semantic Kernel Và GitHub Models
Semantic Kernel Là Gì?
Semantic Kernel là một framework nhẹ giúp các nhà phát triển dễ dàng:
Tích hợp các LLMs và cloud services vào ứng dụng
Định nghĩa các workflow thông minh và có thể tái sử dụng
Áp dụng reasoning (lý luận) trên các đầu ra của LLMs để tạo ra các quy trình AI phức tạp
GitHub Models Là Gì?
GitHub Models cung cấp một thư viện các mô hình AI có thể dùng để phát triển ứng dụng GenAI.
Đặc biệt, bạn có thể truy cập các mô hình này thông qua cá nhân hóa token (PAT) do GitHub cung cấp mà không cần đăng ký hoặc trả phí cho Azure OpenAI.
Giải pháp này giúp tiết kiệm chi phí và cho phép thử nghiệm nhanh các mô hình AI.
Sử dụng GitHub Models cùng Semantic Kernel giúp bạn xây dựng ứng dụng AI mà không cần phải tạo tài khoản dịch vụ cloud phức tạp và tốn kém.
Cách Cài Đặt Semantic Kernel Và Tạo Ứng Dụng Cơ Bản
Tạo Dự Án Console C# Sử Dụng dotnet CLI
Mở terminal và tạo dự án console:
dotnet new console --name SemanticKernelGitHubModels
Chọn mô hình bạn muốn, ví dụ như OpenAI GPT-4.1 (mới ra mắt).
Nhấn vào model và chọn Use this model.
Dưới phần tạo token cá nhân, bấm Get developer key để lấy token miễn phí của GitHub Models thay vì dùng Azure AI.
Thiết Lập Personal Access Token
Chọn tạo New fine-grained personal access token.
Đặt tên token.
Ở phần Permissions, set quyền truy cập Models sang Read-only.
Nhấn Generate Token.
Hãy sao chép token này ngay vì bạn sẽ không thể xem lại sau khi rời khỏi trang.
Xây Dựng Chat Bot Sử Dụng Semantic Kernel Với GitHub Models
Lưu Token Vào User Secrets
Trong thư mục dự án, chạy lệnh để khởi tạo User Secrets:
dotnet user-secrets init
Sau đó lưu token:
dotnet user-secrets set"GH_PAT""<your-PAT-token>"
Mã Nguồn Chat Bot Cơ Bản
// Sử dụng User Secrets để đọc cấu hình
var config = new ConfigurationBuilder()
.AddUserSecrets<Program>()
.Build();
// Cấu hình model và endpoint
var modelId = "gpt-4.1";
var uri = "https://models.inference.ai.azure.com";
var githubPAT = config["GH_PAT"];
// Tạo client OpenAI cho GitHub Models
var client = new OpenAIClient(
new ApiKeyCredential(githubPAT),
new OpenAIClientOptions { Endpoint = new Uri(uri) }
);
// Khởi tạo Kernel và thêm dịch vụ chat completion
var builder = Kernel.CreateBuilder();
builder.AddOpenAIChatCompletion(modelId, client);
Kernel kernel = builder.Build();
var chat = kernel.GetRequiredService<IChatCompletionService>();
// Tạo lịch sử trò chuyện
var history = new ChatHistory();
history.AddSystemMessage("You are a useful gym chatbot. You will limit your answers to purely gym-related topics. Any other topics, or you don't know an answer, say 'I'm sorry, I can't help with that!'");
// Vòng lặp hỏi và trả lời
while (true)
{
Console.Write("Q: ");
var userQ = Console.ReadLine();
if (string.IsNullOrEmpty(userQ)) { break; }
history.AddUserMessage(userQ);
var sb = new StringBuilder();
var result = chat.GetStreamingChatMessageContentsAsync(history);
Console.Write("AI: ");
awaitforeach (var item in result)
{
sb.Append(item);
Console.Write(item.Content);
}
Console.WriteLine();
history.AddAssistantMessage(sb.ToString());
}
Giải Thích Mã Nguồn
Đoạn Mã
Mô Tả
AddUserSecrets<Program>()
Đọc dữ liệu bảo mật đã cài đặt (token PAT)
modelId
&
uri
Xác định mô hình và endpoint GitHub Models
OpenAIClient
Tạo client giao tiếp với GitHub Models thông qua PAT
Khởi tạo
Kernel
và thêm dịch vụ chat
Chuẩn bị môi trường để dễ dàng truy cập dịch vụ chat AI
ChatHistory
Lưu lịch sử hội thoại để duy trì ngữ cảnh cho bot
Vòng lặp nhập liệu
Nhận câu hỏi từ người dùng, gọi LLM trả lời và in ra từng phần
Mô hình chat được hướng dẫn chỉ trả lời các câu hỏi liên quan đến gym, giúp kiểm soát đầu ra và tránh cung cấp thông tin ngoài phạm vi như câu hỏi về ý nghĩa cuộc sống.
Chạy Và Kiểm Tra Chat Bot
Chạy ứng dụng bằng:
dotnet run
Hãy thử hỏi câu hỏi như:
"Tôi muốn tăng cơ chân, nên tập bài nào?"
Chatbot sẽ trả lời dựa trên kiến thức về gym.
Thử hỏi ngoài phạm vi, ví dụ: "Ý nghĩa cuộc sống là gì?" Chatbot sẽ trả lời:
"I'm sorry, I can't help with that!"
Lưu ý: Kết quả dựa trên mô hình probabilistic, bạn nên kiểm chứng lại thông tin trước khi áp dụng.
Kết Luận
Semantic Kernel kết hợp với GitHub Models đem đến một giải pháp hiệu quả và miễn phí để xây dựng các ứng dụng AI sử dụng các mô hình ngôn ngữ hiện đại mà không cần phụ thuộc vào Azure OpenAI hoặc các dịch vụ trả phí khác. Qua hướng dẫn này, bạn đã có thể:
Tạo dự án C# cơ bản sử dụng Semantic Kernel
Tạo và quản lý token PAT cho GitHub Models
Xây dựng chatbot tương tác thông minh, có khả năng quản lý ngữ cảnh hội thoại
Chạy thử và kiểm nghiệm chatbot trực tiếp trên console
Nếu bạn quan tâm tới phát triển GenAI, hãy thử áp dụng cách này để rút ngắn thời gian và tiết kiệm chi phí phát triển.
Chúc bạn thành công và vui vẻ với dự án AI của mình!