import gradio as gr from gradio.themes.utils import colors from t5 import T5 from koalpaca import KoAlpaca LOCAL_TEST = False MODEL_STRS = ['T5', 'KoAlpaca'] MODELS = [] cur_index = 0 def prepare_theme(): theme = gr.themes.Default(primary_hue=colors.gray, secondary_hue=colors.emerald, neutral_hue=colors.emerald).set( body_background_fill="*primary_800", body_background_fill_dark="*primary_800", block_background_fill="*primary_700", block_background_fill_dark="*primary_700", border_color_primary="*secondary_300", border_color_primary_dark="*secondary_300", block_border_width="3px", input_border_width="2px", input_background_fill="*primary_700", input_background_fill_dark="*primary_700", background_fill_secondary="*primary_700", background_fill_secondary_dark="*primary_700", body_text_color="white", body_text_color_dark="white", block_label_text_color="*secondary_300", block_label_text_color_dark="*secondary_300", block_label_background_fill="*primary_800", block_label_background_fill_dark="*primary_800", color_accent_soft="*primary_600", color_accent_soft_dark="*primary_600", ) return theme def chat(message, chat_history): response = MODELS[cur_index].generate(message) chat_history.append((message, response)) return "", gr.Chatbot(chat_history, label=MODEL_STRS[cur_index], bubble_full_width=False) def change_model_index(idx, chatbot): global cur_index cur_index = idx # print(cur_index) return gr.Chatbot(chatbot, label=MODEL_STRS[cur_index], bubble_full_width=False) if __name__=='__main__': theme = prepare_theme() MODELS.append(T5()) if not LOCAL_TEST: MODELS.append(KoAlpaca()) with gr.Blocks(theme=theme) as demo: with gr.Tab("소개"): gr.Markdown( """ # KOMUCHAT : Korean community-style relationship counseling chabot KOMUChat: 온라인 커뮤니티 스타일의 연애상담챗봇 ### 개요 사람들의 실제 대화를 반영하기 위해 한국 커뮤니티 에펨코리아 + 인스티즈에서 수집한 약 3만건의 질문-답변 대화 데이터셋으로 학습시킨 챗봇
이별, 데이트코스, 선물 등 연애와 관련된 질문에 대해 온라인 커뮤니티에서 상담하는 것 같이 응답합니다.
paust-t5-large모델(평균 응답시간 n초)과 polyglot-ko-12.8b-safetensors 모델(평균 응답시간 n초)을 파인튜닝하여 제공합니다.
데모에서 선택하여 이용해보실 수 있습니다. ### 응답예시 | Question | Answer | | --- | --- | | 헤어졌읍니다 | 힘내 더 좋은 인연 나타날거야 | | 드라마만 주구장창 보는중 | 뭐 보고 있으신가요 | | 결혼까지 생각하는 상태일수록 더 깐깐하게 따지게 돼? | 아무래도 그런 거 같아 | | ISTJ 여자가 남자한테 관심있으면 어떻게 해? | 연락 자주 하고 취향 많이 물어보고 자주는 아니어도 꾸준히 만나려 함 | | #청자#들아 연애는 갑자기 시작한다고 생각해? | 나는 진자 신기한 게 연애에 대한 기대가 떨어지면 하고 있더랔ㅋㅋㅋ | ### 사용기술 """) with gr.Tab("데모"): with gr.Row(): rd = gr.Radio(MODEL_STRS, value='T5', type='index', label='Model Selection', show_label=True, interactive=True) with gr.Column(scale=5): # 챗봇 부분 chatbot = gr.Chatbot(label="T5", bubble_full_width=False) with gr.Row(): txt = gr.Textbox(show_label=False, placeholder='연애 관련 질문을 입력하세요!', container=False) txt.submit(chat, [txt, chatbot], [txt, chatbot]) rd.select(change_model_index, [rd, chatbot], [chatbot]) demo.launch(debug=True, share=True)