Hiroaki Ogasawara
chore: エラーメッセージを表示
d6da45f
raw
history blame
1.74 kB
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, api_key)
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 None, 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="GeminiのAPIキー(スコアのセルフ評価を行う場合)", type="password")
gr.Markdown("APIキーの発行は[こちら](https://aistudio.google.com/app/apikey)")
process_button = gr.Button("レポートを作成")
output_file = gr.File(label="セルフ評価レポート")
output_text = gr.Textbox(label="システムメッセージ")
process_button.click(
process_jsonl_file, inputs=[jsonl_input, api_key_input], outputs=[output_file, output_text]
)
demo.launch()
if __name__ == "__main__":
demo.launch()