quoc-khanh's picture
Update app.py
2bd39e5 verified
raw
history blame
2.68 kB
import os
import gradio as gr
import json
from tqdm import tqdm
from langchain_community.vectorstores import FAISS
from langchain_google_genai import GoogleGenerativeAIEmbeddings
import google.generativeai as genai
from helpers import (
list_docx_files, get_splits, get_json_splits_only, get_answer
)
os.environ["USER_AGENT"] = "gradio-hf-space"
if "GOOGLE_API_KEY" not in os.environ:
os.environ["GOOGLE_API_KEY"] = "AIzaSyDJ4vIKuIBIPNHATLxnoHlagXWbsAz-vRs"
key = "AIzaSyDJ4vIKuIBIPNHATLxnoHlagXWbsAz-vRs"
###
# Cấu hình API key cho Google GenAI
genai.configure(api_key=key)
### loop cho tất cả các file tài liệu và cộng lại thành final_all_split (nhét vào 1 database)
folder_path = 'syllabus_nct_word_format/'
docx_files = list_docx_files(folder_path)
all_splits = [] # Khởi tạo danh sách lưu kết quả
for i, file_path in enumerate(tqdm(docx_files, desc="Đang xử lý", unit="file")):
output_json_path = f"output_{i}.json"
splits = get_splits(file_path, output_json_path)
all_splits += splits
# output_json_path = "output_{i}.json"
# splits = get_splits(docx_files, output_json_path)
# all_splits += splits
FAQ_path = 'syllabus_nct_word_format/FAQ.json'
FAQ_splits = get_json_splits_only(FAQ_path)
all_splits += FAQ_splits
# web_path = 'https'
# web_splits = await get_urls_splits(url='https://nct.neu.edu.vn/')
# all_splits += web_splits
# Lưu vào vectorstore với nhúng từ GenAI (Cần chỉ định model)
embedding = GoogleGenerativeAIEmbeddings(model="models/text-embedding-004")
vectorstore = FAISS.from_documents(documents=all_splits, embedding=embedding)
###
institutions = ['Tất cả'] + ['Trường Công Nghệ']
categories = ['Tất cả'] + ['Đề án', 'Chương trình đào tạo']
with gr.Blocks() as demo:
with gr.Row():
category1 = gr.Dropdown(choices = institutions, label="Trường", value = 'Tất cả')
category2 = gr.Dropdown(choices = categories, label="Bạn quan tâm tới", value = 'Tất cả')
chat_interface = gr.ChatInterface(get_answer,
textbox=gr.Textbox(placeholder="Đặt câu hỏi tại đây",
container=False,
autoscroll=True,
scale=7),
type="messages",
# textbox=prompt,
# additional_inputs=[category1, category2]
)
if __name__ == "__main__":
demo.launch(share=True)