Tìm kiếm bài viết

Hướng dẫn tạo Livechat trả lời bằng AI Grok của X

04.03.2025

5.0/5 (1 Reviews)

Hướng dẫn kỹ thuật tạo Livechat AI bằng HTML, CSS, JavaScript và PHP Dưới đây là hướng dẫn từng bước để xây dựng một ứng dụng livechat AI đơn giản. Chúng ta sẽ có giao diện frontend (HTML, CSS, JS) và backend (PHP) xử lý tin nhắn.

    Hướng dẫn kỹ thuật tạo Livechat AI bằng HTML, CSS, JavaScript và PHP

    Dưới đây là hướng dẫn từng bước để xây dựng một ứng dụng livechat AI đơn giản. Chúng ta sẽ có giao diện frontend (HTML, CSS, JS) và backend (PHP) xử lý tin nhắn.

    Yêu cầu

    • Môi trường: Web server như XAMPP hoặc WAMP.

    • Công cụ: Trình soạn thảo mã (VS Code, Sublime Text, v.v.).

    • Kiến thức: Cơ bản về HTML, CSS, JavaScript, và PHP.

    Cấu trúc thư mục

    /livechat-ai
      ├── index.html        # Giao diện chính
      ├── style.css         # File định dạng giao diện
      ├── script.js         # Xử lý logic phía client
      └── backend.php       # Xử lý phản hồi AI

    Bước 1: Tạo giao diện (index.html)

    File này là khung HTML cho giao diện chat. Nó bao gồm header, khu vực hiển thị tin nhắn, và ô nhập liệu.

    <!DOCTYPE html>
    <html lang="vi">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Livechat AI</title>
        <link rel="stylesheet" href="style.css">
    </head>
    <body>
        <div class="chat-container">
            <div class="chat-header">
                <h2>AI Chatbot</h2>
            </div>
            <div class="chat-body" id="chatBody">
                <div class="message ai-message">Chào bạn! Tôi là AI Chatbot, sẵn sàng giúp bạn.</div>
            </div>
            <div class="chat-footer">
                <input type="text" id="userInput" placeholder="Nhập tin nhắn...">
                <button onclick="sendMessage()">Gửi</button>
            </div>
        </div>
        <script src="script.js"></script>
    </body>
    </html>

    Giải thích:

    • .chat-container: Khung chính của chat.

    • .chat-header: Tiêu đề.

    • .chat-body: Khu vực hiển thị tin nhắn, có tin nhắn chào mặc định.

    • .chat-footer: Ô nhập tin nhắn và nút gửi.

    Hình ảnh minh họa:

    • Ảnh 1: Giao diện ban đầu với dòng chữ "Chào bạn! Tôi là AI Chatbot, sẵn sàng giúp bạn" trong khung chat. (Tưởng tượng một hộp thoại trắng với header xanh dương, phần thân xám nhạt, và ô nhập liệu bên dưới.)

    Bước 2: Định dạng giao diện (style.css)

    CSS giúp giao diện trông đẹp và thân thiện hơn.

    body {
        font-family: Arial, sans-serif;
        display: flex;
        justify-content: center;
        align-items: center;
        height: 100vh;
        margin: 0;
        background-color: #f0f0f0;
    }
    
    .chat-container {
        width: 400px;
        height: 500px;
        background: white;
        border-radius: 10px;
        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
        display: flex;
        flex-direction: column;
    }
    
    .chat-header {
        background: #007bff;
        color: white;
        padding: 10px;
        text-align: center;
        border-top-left-radius: 10px;
        border-top-right-radius: 10px;
    }
    
    .chat-body {
        flex: 1;
        padding: 15px;
        overflow-y: auto;
        background: #f9f9f9;
    }
    
    .chat-footer {
        padding: 10px;
        display: flex;
        gap: 10px;
        border-top: 1px solid #ddd;
    }
    
    #userInput {
        flex: 1;
        padding: 8px;
        border: 1px solid #ccc;
        border-radius: 5px;
        outline: none;
    }
    
    #userInput:focus {
        border-color: #007bff;
    }
    
    button {
        padding: 8px 15px;
        background: #007bff;
        color: white;
        border: none;
        border-radius: 5px;
        cursor: pointer;
        transition: background 0.3s;
    }
    
    button:hover {
        background: #0056b3;
    }
    
    .message {
        margin: 10px 0;
        padding: 10px;
        border-radius: 5px;
        max-width: 80%;
        word-wrap: break-word;
    }
    
    .user-message {
        background: #007bff;
        color: white;
        align-self: flex-end;
        margin-left: auto;
    }
    
    .ai-message {
        background: #e0e0e0;
        color: #333;
        align-self: flex-start;
    }

    Giải thích:

    • Tin nhắn người dùng (user-message) hiển thị bên phải, màu xanh.
    • Tin nhắn AI (ai-message) hiển thị bên trái, màu xám.
    • Thanh cuộn xuất hiện khi tin nhắn vượt quá chiều cao .chat-body.

    Hình ảnh minh họa:

    • Ảnh 2: Giao diện với tin nhắn chào mặc định bên trái (xám) và ô nhập liệu bên dưới. (Hình dung một khung chat với tin nhắn xám nhạt lệch trái, ô nhập liệu có viền xanh khi focus.)

    Bước 3: Xử lý logic frontend (script.js)

    JavaScript xử lý việc gửi tin nhắn, nhận phản hồi, và hiển thị chúng.

    function sendMessage() {
        const input = document.getElementById("userInput");
        const message = input.value.trim();
        if (!message) return;
    
        // Hiển thị tin nhắn người dùng
        displayMessage(message, "user-message");
        input.value = "";
    
        // Gửi yêu cầu đến backend PHP
        fetch("backend.php", {
            method: "POST",
            headers: {
                "Content-Type": "application/x-www-form-urlencoded",
            },
            body: "message=" + encodeURIComponent(message),
        })
        .then(response => response.text())
        .then(data => {
            // Hiển thị phản hồi từ Grok
            displayMessage(data, "ai-message");
        })
        .catch(error => {
            console.error("Lỗi:", error);
            displayMessage("Có lỗi xảy ra!", "ai-message");
        });
    }
    
    function displayMessage(text, className) {
        const chatBody = document.getElementById("chatBody");
        const messageDiv = document.createElement("div");
        messageDiv.className = "message " + className;
        messageDiv.textContent = text;
        chatBody.appendChild(messageDiv);
        chatBody.scrollTop = chatBody.scrollHeight;
    }
    
    document.getElementById("userInput").addEventListener("keypress", function(e) {
        if (e.key === "Enter") {
            sendMessage();
        }
    });

    Giải thích:

    • sendMessage(): Gửi tin nhắn đến backend.php qua Fetch API.
    • displayMessage(): Thêm tin nhắn vào khung chat và cuộn xuống cuối.
    • Sự kiện keypress: Cho phép gửi tin nhắn bằng phím Enter.

    Hình ảnh minh họa:

    • Ảnh 3: Giao diện sau khi người dùng gửi tin nhắn "Xin chào" (xanh, bên phải) và AI trả lời "Chào bạn!" (xám, bên trái).

    Bước 4: Xử lý backend (backend.php)

    PHP nhận tin nhắn và trả về phản hồi AI đơn giản.

    <?php
    header("Content-Type: text/plain");
    
    // Nhận tin nhắn từ người dùng
    if (isset($_POST['message'])) {
        $userMessage = trim($_POST['message']);
        
        // Thay bằng API Key của bạn
        $apiKey = "YOUR_GROK_API_KEY_HERE"; // Lấy từ console.x.ai
        $url = "https://api.x.ai/v1/chat/completions"; // Địa chỉ Grok API
    
        // Dữ liệu gửi đến Grok API
        $data = [
            "model" => "grok-beta", // Hoặc "grok-2" nếu bạn có quyền truy cập
            "messages" => [
                ["role" => "system", "content" => "Bạn là một trợ lý hữu ích."],
                ["role" => "user", "content" => $userMessage]
            ],
            "max_tokens" => 100,
            "temperature" => 0.7
        ];
    
        // Khởi tạo cURL
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            "Authorization: Bearer $apiKey",
            "Content-Type: application/json"
        ]);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    
        // Thực thi và nhận phản hồi
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
    
        // Xử lý phản hồi
        if ($httpCode == 200) {
            $result = json_decode($response, true);
            $aiResponse = $result['choices'][0]['message']['content'];
            echo $aiResponse;
        } else {
            echo "Lỗi khi gọi Grok API: " . $response;
        }
    } else {
        echo "Không nhận được tin nhắn!";
    }
    ?>

    Giải thích:

    • API Key: Thay "YOUR_GROK_API_KEY_HERE" bằng API Key bạn lấy từ console.x.ai.
    • URL: https://api.x.ai/v1/chat/completions là endpoint chính của Grok API (tương thích với định dạng OpenAI).
    • Model: Sử dụng "grok-beta" hoặc phiên bản mới hơn như "grok-2" nếu có.
    • Dữ liệu: Tin nhắn được gửi dưới dạng JSON với vai trò systemuser.

    Hình ảnh minh họa:

    • Ảnh 2: Sơ đồ luồng dữ liệu: Người dùng -> JS -> PHP -> Grok API -> PHP -> JS -> Hiển thị.

    Cách chạy

    1. Cài đặt: Đặt thư mục livechat-ai vào htdocs (XAMPP) hoặc thư mục server.
    2. Cấu hình: Cập nhật $apiKey trong backend.php.
    3. Khởi động: Bật Apache trong XAMPP.
    4. Truy cập: Vào http://localhost/livechat-ai/index.html.

    Kết quả

    • Gửi “Xin chào” -> Grok trả lời dựa trên API (ví dụ: “Chào bạn! Tôi là Grok, rất vui gặp bạn.”).
    • Gửi câu hỏi phức tạp -> Grok xử lý và trả về phản hồi thông minh.

    Hình ảnh minh họa:

    • Ảnh 3: Giao diện với tin nhắn “Xin chào” (xanh, bên phải) và phản hồi từ Grok (xám, bên trái).

    Mở rộng

    • Xử lý lỗi: Thêm kiểm tra lỗi chi tiết hơn trong PHP (401, 429, v.v.).
    • Streaming: Grok hỗ trợ streaming ("stream": true), bạn có thể cập nhật code để nhận phản hồi theo thời gian thực.
    • Tích hợp SDK: Sử dụng Grok Python SDK thay vì PHP nếu bạn muốn mở rộng backend.

    Lấy API Key của Grok

    Để sử dụng Grok API, bạn cần có tài khoản xAI và tạo API Key. Dưới đây là hướng dẫn chi tiết:

    1. Truy cập xAI Developer Portal:
      • Vào trang console.x.ai.
      • Đăng ký tài khoản nếu chưa có, hoặc đăng nhập bằng tài khoản X hiện có.
    2. Tạo API Key:
      • Sau khi đăng nhập, nhấp vào tên người dùng của bạn ở góc trên bên phải.
      • Chọn "API Keys" từ menu thả xuống.
      • Nhấn nút "Create API Key".
      • Trong cửa sổ hiện ra, đặt tên cho API Key (ví dụ: "LivechatGrok") và chọn quyền truy cập:
        • Chọn "chat:write" để sử dụng Grok cho chatbot.
      • Nhấn "Save" để lưu. API Key sẽ xuất hiện trong danh sách.
    3. Sao chép API Key:
      • Nhấp vào nút "Copy" bên cạnh API Key vừa tạo.
      • Lưu API Key ở nơi an toàn (ví dụ: file .env hoặc biến môi trường), vì nó sẽ không hiển thị lại sau khi bạn rời trang.

    Lưu ý:

    • Hiện tại (tính đến 04/03/2025), xAI đang chạy chương trình Public Beta đến cuối 2024, cung cấp $25 tín dụng miễn phí mỗi tháng. Sau đó, bạn có thể cần mua tín dụng hoặc chọn gói trả phí.
    • API Key cần được bảo mật, không chia sẻ công khai.

    Hình ảnh minh họa:

    • Ảnh 1: Giao diện console.x.ai với nút "Create API Key" và danh sách API Key đã tạo

     

    CÓ THỂ BẠN QUAN TÂM

    Bài Viết Cùng Chuyên Mục

    XEM THÊM
    thumbnail

    Mã Hóa Hậu Lượng Tử: Lộ Trình Sống Còn Cho Dev 2030

    29.07.2026

    Mã hóa hậu lượng tử (PQC) sắp thay thế RSA/ECC trước Q-Day. Nắm chuẩn NIST FIPS 203/204/205 và cách dev bắt đầu di trú ngay hôm nay. Đọc để không bị bỏ lại

    thumbnail

    Kubernetes bài 6 - Vận hành k8s Day-Two Operations và Quản trị bằng GitOps

    22.05.2026

    Khi cụm Kubernetes của bạn đã được bảo mật cấu hình, tối ưu tài nguyên và thiết lập tự phục hồi, câu hỏi đặt ra là làm sao để duy trì sự ổn định đó trong nhiều năm tiếp theo mà không bị phụ thuộc

    thumbnail

    Kubernetes bài 5 - bảo mật Cloud Native và chuẩn DevSecOps cho K8s

    22.05.2026

    Việc siết chặt an ninh (Hardening) không phải là cấu hình một vài thông số rồi bỏ đó, mà là một tư duy phòng thủ chiều sâu.

    thumbnail

    Kubernetes bài 4 - Tối ưu Resource Auto-Healing và Scale Zero-Downtime

    22.05.2026

    Bài viết này sẽ đi sâu vào các cơ chế ở tầng Kernel giúp hệ thống tự phục hồi, chống lại các đợt tấn công cạn kiệt tài nguyên và cập nhật phiên bản mới mà người dùng không hề hay biết.

    thumbnail

    Kubernetes bài 3 - Bảo mật cấu hình k8s và config Security trên Production

    22.05.2026

    Kubernetes giải quyết bài toán này bằng hai đối tượng chuyên biệt nhưng nếu không hiểu rõ bản chất bảo mật ở tầng dưới, bạn đang tự tay dâng toàn bộ chìa khóa hệ thống cho hacker.

    Mục lục bài viết