Spaces:
Running
Running
File size: 3,062 Bytes
af2c4a4 b10cbb3 68f58b6 b10cbb3 af2c4a4 e7e2827 af2c4a4 e7e2827 102aa00 e7e2827 5c2060f e7e2827 b10cbb3 f1b344d b10cbb3 e7e2827 c263170 d83956b 5c2060f 6d423fe b10cbb3 |
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 |
import gradio as gr
from openai import OpenAI # type: ignore
import os
# chat = gr.ChatInterface(
# call_api.call_deepseek, #chat
# title="Trợ lý Học Tập AI",
# description="Nhập câu hỏi của bạn về Toán, Lý, Hóa, Văn… và nhận giải đáp chi tiết ngay lập tức!",
# additional_inputs=[
# gr.Textbox("Bạn là một chatbot tiếng Việt thân thiện.", label="System message"),
# gr.Slider(1, 2048, value=200, step=1, label="Max new tokens"),
# gr.Slider(0.1, 4.0, value=0.7, step=0.1, label="Temperature"),
# gr.Slider(0.1, 1.0, value=0.95, step=0.05, label="Top-p (nucleus sampling)"),
# gr.Image(label="Attach an image (optional)"), # báo lỗi
# gr.File(label="Upload a file (optional)"), # báo lỗi
# ],
# # examples=[
# # # Mỗi item: [message, system_message, max_tokens, temperature, top_p]
# # ["tích phân của x^2 từ 0 đến 2 là gì? vui lòng lập luận từng bước, và đặt kết quả cuối cùng trong \boxed{}", "bạn là nhà toán học", 100, 0.7, 0.95],
# # ],
# )
deepseek = OpenAI(api_key = os.getenv("DEEPSEEK_API_KEY"), base_url="https://api.deepseek.com")
def call_deepseek_new(
user_prompt,
chat_history
):
history = chat_history or []
history.append({"role": "user", "content": user_prompt})
# Gọi API DeepSeek Chat (OpenAI-compatible, không stream)
response = deepseek.chat.completions.create(
model = "deepseek-chat", # hoặc model bạn đã config
messages = history,
)
# Lấy nội dung assistant trả về
reply = response.choices[0].message.content
# Append vào history
history.append({"role": "assistant", "content": reply})
# Trả về 2 outputs: toàn bộ history và đúng reply để render Markdown
return history, reply
with gr.Blocks() as demo: # Bắt đầu Blocks
# Thành phần hiển thị lịch sử chat
chatbot = gr.Chatbot(type="messages") # hỗ trợ subset Markdown:contentReference[oaicite:3]{index=3}
# Thành phần Markdown để render kết quả đã format (Markdown + LaTeX)
markdown = gr.Markdown(
latex_delimiters=[{"left":"$$","right":"$$","display":True}]
) # cho phép render LaTeX:contentReference[oaicite:4]{index=4}
# Các input controls
with gr.Row():
txt = gr.Textbox(label="Nhập câu hỏi")
sys_msg = gr.Textbox(value="Bạn là một chatbot tiếng Việt thân thiện.", label="System message")
with gr.Row():
max_t = gr.Slider(1, 2048, value=500, step=1, label="Max new tokens")
temp = gr.Slider(0.1, 4.0, value=0.7, step=0.1, label="Temperature")
top_p = gr.Slider(0.1, 1.0, value=0.95, step=0.05, label="Top-p")
# Sự kiện submit
txt.submit(
call_deepseek_new,
inputs=[txt, chatbot],
outputs=[chatbot, markdown],
)
# Chạy app
if __name__ == "__main__":
demo.launch(show_error=True)
|