Spaces:
Running
Running
File size: 2,906 Bytes
8b05818 36808f0 8b05818 635adca fabd5db 8b05818 b1ef4b2 0df8cbf 635adca b1ef4b2 a23742f 635adca fabd5db da4b631 aae9b1e fabd5db 635adca fabd5db c51caae fabd5db c51caae fabd5db 8b05818 fabd5db bb74b53 c51caae fabd5db b1ef4b2 fabd5db 635adca 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 73 74 75 76 77 78 79 80 81 82 |
import gradio as gr
import logging, langdetect
from huggingface_hub import InferenceClient
from transformers import MarianTokenizer, MarianMTModel, pipeline
# Khởi tạo client HF và translator
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
# Gọi API public
vi2en_tokenizer = MarianTokenizer.from_pretrained("Helsinki-NLP/opus-mt-vi-en")
vi2en_model = MarianMTModel.from_pretrained("Helsinki-NLP/opus-mt-vi-en")
en2vi_tokenizer = MarianTokenizer.from_pretrained("Helsinki-NLP/opus-mt-en-vi")
en2vi_model = MarianMTModel.from_pretrained("Helsinki-NLP/opus-mt-en-vi")
translator_vi2en = pipeline("translation", model=vi2en_model, tokenizer=vi2en_tokenizer)
translator_en2vi = pipeline("translation", model=en2vi_model, tokenizer=en2vi_tokenizer)
logging.basicConfig(level=logging.INFO)
def translate_vi2en_fn(text: str) -> str:
return translator_vi2en(text, max_length=512)[0]["translation_text"]
def translate_en2vi_fn(text: str) -> str:
return translator_en2vi(text, max_length=512)[0]["translation_text"]
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_en = translate_vi2en_fn(message)
# 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)}"
logging.info(f"Successfully generated text: {response}")
response_vi = translate_en2vi_fn(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() |