import json import os import tempfile import gradio as gr from utils import evaluate, report def scoring(tasks: list[dict]): return tasks def process_jsonl_file(jsonl_file_path: str, api_key: str): try: content = open(jsonl_file_path, "r", encoding="utf-8").readlines() json_data = [json.loads(line) for line in content] if api_key is not None and api_key != "": json_data = evaluate(json_data) html_content = report(tasks=json_data) file_name_with_ext = os.path.basename(jsonl_file_path) file_name, _ = os.path.splitext(file_name_with_ext) with tempfile.NamedTemporaryFile( delete=False, prefix=f"{file_name}-report-", suffix=".html", mode="w", encoding="utf-8" ) as temp_file: temp_file.write(html_content) output_file = temp_file.name return output_file except Exception as e: return f"エラーが発生しました: {str(e)}" # Gradioデモ with gr.Blocks() as demo: gr.Markdown("## ELYZA-tasks-100(-TV) セルフ評価ページ") jsonl_input = gr.File(label="JSONLファイルをアップロード") api_key_input = gr.Textbox(label="APIキーを入力", type="password") process_button = gr.Button("実行") output_file = gr.File(label="セルフ評価レポート") process_button.click( process_jsonl_file, inputs=[jsonl_input, api_key_input], outputs=output_file ) demo.launch() if __name__ == "__main__": demo.launch()