import pandas as pd import gradio as gr def check_csv(file): if file is None: return "請上傳檔案!" try: df = pd.read_csv(file.name, encoding="utf-8-sig") df.columns = [col.strip() for col in df.columns] required_columns = {"Question", "Context", "Answer"} actual_columns = set(df.columns) if actual_columns != required_columns: return f"欄位錯誤:應包含欄位 {required_columns},實際為 {actual_columns}" if df.shape[0] == 0: return "檔案中沒有資料列!" invalid_rows = df[df["Question"].notnull() & (df["Answer"].isnull() | df["Context"].isnull())] if len(invalid_rows) > 0: missing_questions = "\n".join(f"- 問題:{q}" for q in invalid_rows["Question"].tolist()) return f"發現 {len(invalid_rows)} 筆資料中 Answer 或 Context 為空:\n{missing_questions}" return "檔案格式正確,資料內容完整" except Exception as e: return f"發生錯誤:{str(e)}" demo = gr.Interface( fn=check_csv, inputs=gr.File(label="上傳 CSV 檔案"), outputs=gr.Textbox(label="檢查結果"), title="繳交檔案 (Evaluation_Dataset.csv) 檢查工具", description="請上傳一個包含`Question`, `Context`, `Answer`欄位的 CSV 檔案,以檢查您的檔案格式是否正確。", flagging_mode="never" ) demo.launch()