Tích hợp các mô hình AI lớn như DeepSeek vào hệ thống tin nhắn tức thời

Với sự nổi lên của DeepSeek, ngày càng nhiều doanh nghiệp cũng bắt đầu triển khai và huấn luyện các mô hình AI lớn của riêng mình, điều này giúp cho các kiến thức và kinh nghiệm chuyên môn mà doanh nghiệp đã tích lũy được có thể được sử dụng hiệu quả hơn. Một số khách hàng đã phản ánh về nhu cầu như sau: khách hàng đã triển khai riêng các mô hình AI lớn và hệ thống tin nhắn nội bộ riêng, họ mong muốn có thể trò chuyện trực tiếp với mô hình AI lớn trong giao diện trò chuyện, giống như trò chuyện với đồng nghiệp, điều này sẽ nâng cao hiệu suất công việc đáng kể. Vì vậy, chúng tôi quyết định tích hợp các mô hình AI lớn như DeepSeek vào OrayTalk để đáp ứng nhu cầu này.

Vậy làm thế nào để thực hiện cụ thể?

1. Triển khai Giao diện người dùng trên Client

Đầu tiên, ứng dụng OrayTalk đã thêm giao diện người dùng mới để trò chuyện với mô hình AI lớn:

Trong danh sách bạn bè, có một mục "Trợ lý AI", nhấn vào đó, bạn có thể trò chuyện với mô hình AI lớn.

Thứ hai, ứng dụng OrayTalk cũng cung cấp khả năng xem lại lịch sử trò chuyện với AI:

Khi nhấn vào các câu hỏi trong lịch sử trò chuyện, một cửa sổ mới sẽ mở ra để hiển thị câu trả lời cho câu hỏi đó.

2. Triển khai Cơ sở dữ liệu

Trong cơ sở dữ liệu, bảng AIChatRecord được thêm vào để lưu trữ lịch sử trò chuyện với AI.

Tạo bảng AIChatRecord như sau:

CREATE TABLE [dbo].AIChatRecord(
    [GUID] [nvarchar](50) NOT NULL,
    [UserID] [nvarchar](50) NOT NULL,
    [LoaiMoiHinh] [int] NOT NULL,
    [CauHoi] [nvarchar](max) NOT NULL,
    [DinhKem] [nvarchar](1000) NOT NULL, 
    [CauTraLoi] [nvarchar](max) NOT NULL, 
    [KetQuaXuLy] [int] NOT NULL, 
    [ThongBaoLoi] [nvarchar](max) NOT NULL, 
    [ThoiGianTao] [datetime] NOT NULL, 
    CONSTRAINT [PK_AIChatRecord] PRIMARY KEY CLUSTERED ( 
        [GUID] ASC 
    )

Một số trường quan trọng trong bảng AIChatRecord có ý nghĩa như sau:

(1) LoaiMoiHinh: Dùng để ghi lại loại mô hình lớn được sử dụng, chẳng hạn như DeepSeek, Tongyi Qianwen, Wenxin Yiyen, v.v.

(2) CauHoi: Ghi lại câu hỏi được đặt ra.

(3) DinhKem: Biểu thị URL của tệp đính kèm liên quan đến câu hỏi, chẳng hạn như URL của hình ảnh hoặc tệp.

(4) KetQuaXuLy: Biểu thị kết quả xử lý câu hỏi. 0 có nghĩa là thành công, các giá trị khác biểu thị các loại lỗi khác nhau, chẳng hạn như hết thời gian chờ, lỗi khi gọi API, v.v.

(5) ThongBaoLoi: Nếu có lỗi, trường ThongBaoLoi ghi lại thông tin lỗi cụ thể.

(6) CauTraLoi: Câu trả lời của AI cho câu hỏi. Chỉ khi KetQuaXuLy là 0, giá trị này mới có hiệu lực.

3. Kết nối phía Server với các mô hình AI lớn

Phía server của OrayTalk đã được triển khai để kết nối với các mô hình lớn được triển khai riêng (như DeepSeek, Tongyi Qianwen, v.v.).

Việc sử dụng C# để gọi API của DeepSeek khá đơn giản, ví dụ như sau:

class MoHinhAIKetNoi
{
    private readonly string _khoaBaoMat;
    private readonly HttpClient _httpClient;
    
    // Hàm khởi tạo, truyền khóa API của bạn
    public MoHinhAIKetNoi(string khoaBaoMat)
    {
        _khoaBaoMat = khoaBaoMat;
        _httpClient = new HttpClient();
        
        // Đặt URL cơ sở (điều chỉnh theo tài liệu API DeepSeek)
        _httpClient.BaseAddress = new Uri("https://api.deepseek.com/v1/");
        
        // Đặt tiêu đề ủy quyền
        _httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {_khoaBaoMat}");
    }
    
    // Phương thức bất đồng bộ để gửi yêu cầu trò chuyện
    public async Task<string> GuiYeuCauTroChAsync(string prompt)
    {
        try
        {
            // Xây dựng nội dung yêu cầu
            var noiDungYeuCau = new
            {
                model = "deepseek-chat", // Điều chỉnh tên mô hình theo tài liệu API
                messages = new[]
                {
                    new
                    {
                        role = "user",
                        content = prompt
                    }
                },
                temperature = 0.7,
                max_tokens = 1000
            };
            
            // Chuẩn hóa thành JSON
            var json = JsonSerializer.Serialize(noiDungYeuCau);
            var content = new StringContent(json, Encoding.UTF8, "application/json");
            
            // Gửi yêu cầu POST
            var phanHoi = await _httpClient.PostAsync("chat/completions", content);
            
            // Đảm bảo yêu cầu thành công
            phanHoi.EnsureSuccessStatusCode();
            
            // Đọc và trả về nội dung phản hồi
            var noiDungPhanHoi = await phanHoi.Content.ReadAsStringAsync();
            return noiDungPhanHoi;
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Lỗi khi gọi API DeepSeek: {ex.Message}");
            throw;
        }
    }
}

Logic nghiệp vụ chính phía server như sau:

(1) Khi server nhận được câu hỏi AI từ client, nó sẽ chèn một bản ghi vào DB, giá trị của trường KetQuaXuLy của bản ghi này là "đang xử lý", sau đó gửi câu hỏi này đến mô hình AI lớn thông qua MoHinhAIKetNoi ở trên và chờ phản hồi.

(2) Khi server nhận được phản hồi từ mô hình AI lớn (hoặc hết thời gian chờ, hoặc có lỗi), nó sẽ cập nhật các trường như KetQuaXuLy, CauTraLoi của bản ghi tương ứng trong DB. Sau đó, nó sẽ gửi phản hồi của AI đến client.

(3) Xử lý các trường hợp đặc biệt: ví dụ, khi đang chờ phản hồi từ mô hình AI lớn, nếu client mất kết nối.

Vậy là công việc tích hợp các mô hình AI lớn như DeepSeek vào OrayTalk đã hoàn thành, những bạn quan tâm vui để lại bình luận để trao đổi thêm!

Thẻ: DeepSeek AI InstantMessaging OrayTalk csharp

Đăng vào ngày 30 tháng 5 lúc 02:06