tiennguyenbnbk's picture
Update app.py
370f37b verified
raw
history blame
8.33 kB
import gradio as gr
from textwrap import dedent
from chains import setup_chain_v2
chain = setup_chain_v2()
with gr.Blocks() as demo:
with gr.Row():
# --- Nhóm các thành phần nhập liệu ---
with gr.Column():
with gr.Group(): # Nhóm "Thái độ"
attitude_components = [
gr.Radio(["Con đi học đầy đủ", "Con chưa đi học đầy đủ"], label="Thái độ", show_label=True),
gr.Radio(["Con đi học đúng giờ", "Con vẫn còn đi học muộn"], show_label=False),
gr.Radio(["Con hoàn thành BTVN", "Con chưa hoàn thành đầy đủ BTVN"], show_label=False),
gr.Radio(["Con tập trung trong lớp học", "Con chưa tập trung trong lớp học"], show_label=False),
gr.Radio(["Con sôi nổi, hào hứng trong các buổi học", "Con cần được động viên, khích lệ thường xuyên"], show_label=False),
]
with gr.Group(): # Nhóm "Kiến thức"
knowleadge_components = [
gr.Radio(["Con có vốn từ vựng phong phú", "Con có vốn từ vựng cơ bản", "Con cần trau dồi vốn từ vựng"], label="Kiến thức"),
gr.Textbox(lines=1, label="Con nhớ và sử dụng linh hoạt các từ vựng đã học trong chủ điểm:", show_label=True),
gr.Textbox(lines=1, label="Con chưa nhớ từ vựng trong chủ điểm:", show_label=True),
gr.Radio(["Con có thể sử dụng cấu trúc ngữ pháp thành thạo", "Con có thể sử dụng cấu trúc ngữ pháp cơ bản", "Con cần trau dồi cấu trúc ngữ pháp"], show_label=False),
gr.Textbox(lines=1, label="Các cấu trúc con đã thành thạo:", show_label=True),
gr.Textbox(lines=1, label="Các cấu trúc con chưa thành thạo:", show_label=True),
]
with gr.Group(): # Nhóm "Tương tác"
interaction_components = [
gr.Radio(["Tích cực tham gia vào các hoạt động trên lớp", "Ít tham gia vào các hoạt động trên lớp"], label="Tương tác"),
gr.Radio(["Chăm chú nghe giảng", "Chưa chăm chú nghe giảng"], show_label=False),
gr.Radio(["Hăng hái giơ tay phát biểu và xây dựng bài", "Ít tương tác và chưa chủ động tham gia xây dựng bài"], show_label=False),
]
with gr.Column(): # Nhóm "Kỹ năng"
skill_components = [
gr.Radio(["Con nghe hiểu và phản xạ tốt đối với các yêu cầu của thầy cô", "Con phản xạ còn chậm trước các yêu cầu của thầy cô"], label="Kỹ năng", info="", show_label=True),
gr.Radio(["Con thực hành thành thạo các dạng bài nghe", "Con cần rèn luyện thêm để cải thiện kỹ năng nghe với những dạng bài khác nhau"], label="", info="", show_label=False),
gr.Radio(["Con có giọng nói to, rõ ràng", "Giọng nói đôi khi nhỏ và không rõ ràng"], label="", info="", show_label=False),
gr.Radio(["Con phát âm đúng, đặc biệt là các âm cuối", "Con phát âm chưa hoàn toàn chính xác, đặc biệt là các âm cuối"], label="", info="", show_label=False),
gr.Radio(["Con có khả năng nói trôi chảy, lưu loát", "Con cần chú ý hơn về ngữ điệu khi nói, thỉnh thoảng con còn nói ngập ngừng, chưa thực sự lưu loát"], label="", info="", show_label=False),
gr.Radio(["Con đọc hiểu tốt và làm đúng yêu cầu đề bài", "Con cần luyện tập kỹ năng đọc để nắm vững toàn bộ yêu cầu đề bài"], label="", info="", show_label=False),
gr.Radio(["Con hiểu được nội dung chính và chi tiết quan trọng của bài đọc", "Con cần luyện tập thêm để hiểu được nội dung chính và chi tiết quan trọng trong bài đọc"], label="", info="", show_label=False),
gr.Radio(["Viết đúng chính tả", "Đôi khi viết sai chính tả"], label="", info="", show_label=False),
gr.Radio(["Viết đúng ngữ pháp và cấu trúc câu", "Khi viết còn mắc lỗi ngữ pháp và cấu trúc câu"], label="", info="", show_label=False),
gr.Radio(["Sử dụng từ vựng phong phú khi viết", "Từ vựng sử dụng chưa đa dạng"], label="", info="", show_label=False),
gr.Radio(["Khi viết con diễn đạt ý tưởng rõ ràng và mạch lạc", "Khi viết con diễn đạt ý tưởng chưa rõ ràng và mạch lạc"], label="", info="", show_label=False),
]
# --- Nhóm các thành phần xuất kết quả ---
with gr.Column():
debug_output = gr.Textbox(label="Thông tin đánh giá", show_copy_button=True)
attitude_output = gr.Textbox(label="Thái độ", show_copy_button=True)
knowleadge_output = gr.Textbox(label="Kiến thức", show_copy_button=True)
skill_output = gr.Textbox(label="Kỹ năng", show_copy_button=True)
interaction_output = gr.Textbox(label="Tương tác", show_copy_button=True)
detail_output = gr.Textbox(label="Chi tiết", show_copy_button=True)
greet_btn = gr.Button("Tạo nhận xét")
# --- Hàm xử lý dữ liệu và tạo nhận xét ---
def gen(*args):
# Tách các tham số thành các nhóm tương ứng
attitude_data = args[:5]
knowleadge_data = args[5:11]
skill_data = args[11:22]
interaction_data = args[22:]
attitude_sentence = ""
for data in attitude_data:
if data:
attitude_sentence += data + ". "
knowleadge_sentence = ""
for idx, data in enumerate(knowleadge_data):
if data:
if idx == 1:
knowleadge_sentence += "Con nhớ và sử dụng linh hoạt các từ vựng đã học trong chủ điểm: " + data + ". "
elif idx == 2:
knowleadge_sentence += "Con chưa nhớ từ vựng trong chủ điểm: " + data + ". "
elif idx == 4:
knowleadge_sentence += "Các cấu trúc con đã thành thạo: " + data + ". "
elif idx == 5:
knowleadge_sentence += "Các cấu trúc con chưa thành thạo: " + data + ". "
else:
knowleadge_sentence += data + ". "
skill_sentence = ""
for data in skill_data:
if data:
skill_sentence += data + ". "
interaction_sentence = ""
for data in interaction_data:
if data:
interaction_sentence += data + ". "
full_sentence = dedent(f"""\
Thái độ: {attitude_sentence.strip() if len(attitude_sentence.strip()) else "Không có đánh giá"}
Kiến thức: {knowleadge_sentence.strip()if len(knowleadge_sentence.strip()) else "Không có đánh giá"}
Kỹ năng: {skill_sentence.strip()if len(skill_sentence.strip()) else "Không có đánh giá"}
Tương tác: {interaction_sentence.strip()if len(interaction_sentence.strip()) else "Không có đánh giá"}
""")
result = chain.invoke({"query": full_sentence})
return {
debug_output: full_sentence.strip(),
attitude_output: result['atitude'],
knowleadge_output: result['knowleadge'],
skill_output: result['skill'],
interaction_output: result['interaction'],
detail_output: result['detail']
}
greet_btn.click(gen, inputs=[*attitude_components, *knowleadge_components, *skill_components, *interaction_components], outputs=[debug_output, attitude_output, knowleadge_output, skill_output, interaction_output, detail_output])
if __name__ == "__main__":
demo.launch(auth=('admin', 'vuihoc.vn'))