RAG_SEG / app.py
ohaiyo123's picture
Update app.py
cf1b44c verified
import gradio as gr
from huggingface_hub import InferenceClient
from rag_local_code import create_db_from_text # hàm bạn đã viết
# --- Zephyr model API client ---
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
# --- Hàm chat ---
def respond(message, history: list[tuple[str, str]], system_message, max_tokens, temperature, top_p):
messages = [{"role": "system", "content": system_message}]
for user_msg, bot_msg in history:
if user_msg:
messages.append({"role": "user", "content": user_msg})
if bot_msg:
messages.append({"role": "assistant", "content": bot_msg})
messages.append({"role": "user", "content": message})
response = ""
for message in client.chat_completion(
messages,
max_tokens=max_tokens,
stream=True,
temperature=temperature,
top_p=top_p,
):
token = message.choices[0].delta.content
response += token
yield response
# --- Hàm build FAISS từ text nhập ---
def build_knowledge_base(context_text):
create_db_from_text(context_text)
return "✅ Đã lưu vào FAISS vector database!"
# --- Giao diện tổng ---
with gr.Blocks() as demo:
gr.Markdown("# 🚀 Hệ thống RAG: Chat & Nạp Kiến Thức")
with gr.Tab("💬 Chat với AI"):
gr.ChatInterface(
respond,
additional_inputs=[
gr.Textbox(value="Bạn là một trợ lý thân thiện.", label="System message"),
gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (nucleus sampling)"),
],
)
with gr.Tab("📚 Nạp Kiến Thức"):
gr.Markdown("### Nhập văn bản để tạo vector FAISS")
context_input = gr.Textbox(label="Văn bản kiến thức", lines=10, placeholder="Dán nội dung...")
confirm_output = gr.Textbox(label="Trạng thái", interactive=False)
build_btn = gr.Button("Tạo FAISS")
build_btn.click(fn=build_knowledge_base, inputs=context_input, outputs=confirm_output)
if __name__ == "__main__":
demo.launch()