import gradio as gr from transformers import GPT2LMHeadModel, PreTrainedTokenizerFast # KoGPT2 모델과 토크나이저를 전역 변수로 미리 로드 model = GPT2LMHeadModel.from_pretrained("skt/kogpt2-base-v2") tokenizer = PreTrainedTokenizerFast.from_pretrained("skt/kogpt2-base-v2") def generate_diary(keywords): # 키워드 기반 일기 생성 prompt = f"오늘의 일기:\n\n{', '.join(keywords.split(','))}에 대한 일기를 써봅시다." input_ids = tokenizer.encode(prompt, return_tensors="pt") output = model.generate(input_ids, max_length=500, num_return_sequences=1, do_sample=True, top_k=50, top_p=0.95, num_beams=5, no_repeat_ngram_size=2) # 생성된 일기 텍스트 반환 diary = tokenizer.decode(output[0], skip_special_tokens=True) return diary def app(): with gr.Blocks() as demo: gr.Markdown("# 자동 일기 생성기") with gr.Row(): keywords = gr.Textbox(label="5개의 키워드를 입력하세요 (쉼표로 구분)") generate_btn = gr.Button("일기 쓰기") diary = gr.Textbox(label="생성된 일기") generate_btn.click(generate_diary, inputs=keywords, outputs=diary) demo.launch() if __name__ == "__main__": app()