File size: 2,358 Bytes
8b05818
36808f0
8b05818
d3b0506
fabd5db
 
 
8b05818
a23742f
 
fabd5db
 
 
 
 
da4b631
aae9b1e
fabd5db
 
 
 
 
 
 
 
 
f145afe
d892b50
 
a96208c
fabd5db
 
 
 
 
 
 
c51caae
fabd5db
 
c51caae
fabd5db
8b05818
fabd5db
 
 
 
 
 
 
 
 
 
 
bb74b53
c51caae
fabd5db
 
c51caae
47dd435
d892b50
 
f145afe
fabd5db
c51caae
a06334d
c51caae
fabd5db
 
8b05818
 
fabd5db
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import gradio as gr
import logging, langdetect
from huggingface_hub import InferenceClient
from textblob import TextBlob

# Khởi tạo client HF và translator
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")

logging.basicConfig(level=logging.INFO)

def respond(
    message,
    history: list[tuple[str, str]],
    system_message="""
    You are a professional speaking AI assistant.
    You can help solving the problems.
    You can only speak English with correct spelling, punctuation and grammar.
    """,
    max_tokens=2048,
    temperature=0.0,
    top_p=0.9,
):
    # Tạo list tin nhắn bắt đầu từ hệ thống
    messages = [{"role": "system", "content": system_message}]
    
    # Dịch câu hỏi của người dùng từ tiếng Việt sang tiếng Anh
    message_blob = TextBlob(message)
    logging.info(f"User message blob directory: {dir(message_blob)}")
    
    message_en = str(message_blob.translate(to='en'))
    
    # Thêm các tin nhắn lịch sử vào messages
    for val in history:
        if val[0]:  # Tin nhắn của người dùng
            messages.append({"role": "user", "content": val[0]})
        if val[1]:  # Tin nhắn của trợ lý
            messages.append({"role": "assistant", "content": val[1]})

    # Thêm câu hỏi của người dùng vào cuối lịch sử
    messages.append({"role": "user", "content": message_en})

    response = ""

    # Gửi yêu cầu tới mô hình và nhận kết quả
    try:
        for chunk in client.chat_completion(
            model="HuggingFaceH4/zephyr-7b-beta",
            messages=messages,
            max_tokens=max_tokens,
            temperature=temperature,
            top_p=top_p,
            stream=True
        ):
            # Tiến hành nhận phản hồi từ mô hình
            response += chunk.choices[0].delta.content

    except Exception as e:
        return f"Error: {str(e)}"

    response_blob = TextBlob(response)
    logging.info(f"Bot message blob directory: {dir(response_blob)}")
    
    response_vi = str(response_blob.translate(to='vi'))
    logging.info(f"Successfully generated text: {response}")
    
    return response if langdetect.detect(response) == 'vi' else response_vi

# Gradio UI
demo = gr.ChatInterface(fn=respond, theme="soft")

if __name__ == "__main__":
    demo.launch()