Giới thiệu
Bạn có bao giờ nghĩ đến việc tự tay tạo ra một chatbot thông minh, có khả năng ghi nhớ ngữ cảnh và trả lời theo yêu cầu của người dùng? Với sự kết hợp giữa Supabase và OpenAI, điều này hoàn toàn khả thi trong vòng 30 phút. Bài viết này sẽ hướng dẫn bạn từng bước để xây dựng một chatbot AI hoàn chỉnh, từ việc thiết lập cơ sở dữ liệu cho đến tích hợp API OpenAI và xây dựng giao diện người dùng.
Bước 1: Thiết lập cơ sở dữ liệu với Supabase
Supabase là một nền tảng mã nguồn mở cung cấp cơ sở dữ liệu PostgreSQL đầy đủ tính năng, kèm theo xác thực người dùng và lưu trữ file. Để bắt đầu, bạn cần tạo một dự án mới trên Supabase. Sau khi đăng nhập, hãy chọn “New Project” và đặt tên cho dự án của bạn. Supabase sẽ tự động tạo một cơ sở dữ liệu PostgreSQL cho bạn.
Tiếp theo, bạn cần tạo các bảng cần thiết cho chatbot. Sử dụng SQL Editor trong Supabase, hãy tạo một bảng để lưu trữ các cuộc hội thoại. Ví dụ:
CREATE TABLE conversations (
id SERIAL PRIMARY KEY,
user_id UUID REFERENCES auth.users NOT NULL,
message TEXT NOT NULL,
response TEXT,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);Bảng này sẽ lưu trữ ID của người dùng, nội dung tin nhắn, phản hồi từ chatbot và thời gian tạo. Đừng quên kích hoạt Row Level Security (RLS) để bảo mật dữ liệu.
Bước 2: Tích hợp API OpenAI
Để chatbot có thể trả lời thông minh, bạn cần tích hợp API của OpenAI. Đầu tiên, hãy đăng ký một tài khoản trên OpenAI và lấy API key. Sau đó, trong dự án Supabase của bạn, hãy vào phần “Project Settings” và thêm API key này vào phần “API” dưới dạng biến môi trường.
Tiếp theo, bạn cần tạo một hàm trong Supabase để gọi API OpenAI. Sử dụng SQL Editor, hãy tạo một hàm như sau:
CREATE OR REPLACE FUNCTION get_chatbot_response(message TEXT)
RETURNS TEXT AS $$
DECLARE
response TEXT;
BEGIN
-- Gọi API OpenAI để lấy phản hồi
SELECT * FROM http(
'POST',
'https://api.openai.com/v1/chat/completions',
'{ "model": "gpt-3.5-turbo", "messages": [ { "role": "user", "content": "' || message || '" } ] }',
'application/json',
'Bearer ' || current_setting('services.openai.api_key')
) INTO response;
RETURN response;
END;
$$ LANGUAGE plpgsql;