thanglekdi's picture
test deepseek
5c2060f
raw
history blame
2.22 kB
import gradio as gr
import call_api
# Hàm format và respond giữ nguyên như trước
def format_reply(raw_reply: str) -> str:
lines = raw_reply.splitlines()
out_lines = []
for line in lines:
line = line.strip()
if not line:
continue
if line.startswith("Bước"):
out_lines.append(f"**{line}**")
else:
out_lines.append(line)
return "\n\n".join(out_lines)
def respond(
message, history, system_message, max_tokens, temperature, top_p,
file_upload=None, image_upload=None
):
raw = call_api.call_deepseek(
message, history, system_message, max_tokens, temperature, top_p,
file_upload=file_upload, image_upload=image_upload
)
return format_reply(raw)
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_out = gr.Markdown(
latex_delimiters=[
{"left": "$$", "right": "$$", "display": True},
{"left": "$", "right": "$", "display": False},
]
) # 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")
# Inputs tuỳ chọn
file_up = gr.File(label="Tải lên file (tuỳ chọn)", file_count="single", optional=True)
img_up = gr.Image(type="pil", label="Tải lên ảnh (tuỳ chọn)", optional=True)
# Sự kiện submit
txt.submit(
fn=respond,
inputs=[txt, chatbot, sys_msg, max_t, temp, top_p, file_up, img_up],
outputs=[chatbot, markdown_out]
)
# Chạy app
demo.launch()