ssboost/4g3gf
0
1import gradio as gr2from gradio_client import Client3import os4 5# 각 모듈에서 함수 import (PDF 함수 제거)6from info_blog import generate_outline_1, generate_blog_post_17from travel_blog import generate_outline_2, generate_blog_post_28from product_review_blog import generate_outline_3, generate_blog_post_39from feature_focus_blog import generate_outline_4, generate_blog_post_410from visit_review_blog import generate_outline_5, generate_blog_post_511 12# 기존 API 함수 정의 (정보성)13def generate_outline_1_api(category, style, ref1, ref2, ref3):14 result = generate_outline_1(category, style, ref1, ref2, ref3)15 return result16 17def generate_blog_post_1_api(category, style, ref1, ref2, ref3, outline_input):18 result = generate_blog_post_1(category, style, ref1, ref2, ref3, outline_input)19 return result20 21# 기존 API 함수 정의 (여행)22def generate_outline_2_api(category, style, ref1, ref2, ref3):23 result = generate_outline_2(category, style, ref1, ref2, ref3)24 return result25 26def generate_blog_post_2_api(category, style, ref1, ref2, ref3, outline_input):27 result = generate_blog_post_2(category, style, ref1, ref2, ref3, outline_input)28 return result29 30# 기존 API 함수 정의 (상품후기)31def generate_outline_3_api(category, style, ref1, ref2, ref3):32 result = generate_outline_3(category, style, ref1, ref2, ref3)33 return result34 35def generate_blog_post_3_api(category, style, ref1, ref2, ref3, outline_input):36 result = generate_blog_post_3(category, style, ref1, ref2, ref3, outline_input)37 return result38 39# 새로운 API 함수 정의 (핵심기능집중형)40def generate_outline_4_api(category, style, ref1, ref2, ref3):41 result = generate_outline_4(category, style, ref1, ref2, ref3)42 return result43 44def generate_blog_post_4_api(category, style, ref1, ref2, ref3, selected_feature):45 result = generate_blog_post_4(category, style, ref1, ref2, ref3, selected_feature)46 return result47 48# 새로운 API 함수 정의 (방문후기형)49def generate_outline_5_api(category, style, ref1, ref2, ref3, photo_recommendations):50 result = generate_outline_5(category, style, ref1, ref2, ref3, photo_recommendations)51 return result52 53def generate_blog_post_5_api(category, style, ref1, ref2, ref3, outline_input, photo_recommendations):54 result = generate_blog_post_5(category, style, ref1, ref2, ref3, outline_input, photo_recommendations)55 return result56 57# Gradio 인터페이스 설계 (Gradio 5.0 이상)58def interface():59 with gr.Blocks() as demo:60 gr.Markdown("# 블로그 포스팅")61 62 # 첫 번째 탭: 정보성63 with gr.Tab("정보성"):64 category_1 = gr.Radio(choices=['일반', '생활건강'], label="포스팅 카테고리", value="일반")65 style_1 = gr.Radio(choices=['친근한', '일반', '전문적인'], label="포스팅 스타일", value="친근한")66 ref1_1 = gr.Textbox(label="참고 글 1", placeholder="참고할 글을 입력하세요")67 ref2_1 = gr.Textbox(label="참고 글 2", placeholder="참고할 글을 입력하세요")68 ref3_1 = gr.Textbox(label="참고 글 3", placeholder="참고할 글을 입력하세요")69 outline_button_1 = gr.Button("아웃라인 생성")70 outline_output_1 = gr.Textbox(label="생성된 아웃라인")71 72 outline_1 = gr.Textbox(label="작성할 아웃라인", placeholder="생성된 아웃라인을 입력하세요")73 blog_button_1 = gr.Button("블로그 글 생성")74 blog_output_1 = gr.HTML(label="생성된 블로그 글 (HTML 형식)")75 76 outline_button_1.click(generate_outline_1_api, inputs=[category_1, style_1, ref1_1, ref2_1, ref3_1], outputs=outline_output_1)77 blog_button_1.click(generate_blog_post_1_api, inputs=[category_1, style_1, ref1_1, ref2_1, ref3_1, outline_1], outputs=blog_output_1)78 79 # 두 번째 탭: 여행80 with gr.Tab("여행"):81 category_2 = gr.Radio(choices=['여행 단일', '여행 코스'], label="포스팅 카테고리", value="여행 단일")82 style_2 = gr.Radio(choices=['친근한', '일반', '전문적인'], label="포스팅 스타일", value="친근한")83 ref1_2 = gr.Textbox(label="참고 글 1", placeholder="참고할 글을 입력하세요")84 ref2_2 = gr.Textbox(label="참고 글 2", placeholder="참고할 글을 입력하세요")85 ref3_2 = gr.Textbox(label="참고 글 3", placeholder="참고할 글을 입력하세요")86 outline_button_2 = gr.Button("아웃라인 생성")87 outline_output_2 = gr.Textbox(label="생성된 아웃라인")88 89 outline_2 = gr.Textbox(label="작성할 아웃라인", placeholder="생성된 아웃라인을 입력하세요")90 blog_button_2 = gr.Button("블로그 글 생성")91 blog_output_2 = gr.HTML(label="생성된 블로그 글 (HTML 형식)")92 93 outline_button_2.click(generate_outline_2_api, inputs=[category_2, style_2, ref1_2, ref2_2, ref3_2], outputs=outline_output_2)94 blog_button_2.click(generate_blog_post_2_api, inputs=[category_2, style_2, ref1_2, ref2_2, ref3_2, outline_2], outputs=blog_output_2)95 96 # 세 번째 탭: 상품후기97 with gr.Tab("상품후기"):98 category_3 = gr.Radio(choices=['일반', '기능집중형', '고객반응형'], label="포스팅 카테고리", value="일반")99 style_3 = gr.Radio(choices=['친근한', '일반', '전문적인'], label="포스팅 스타일", value="친근한")100 ref1_3 = gr.Textbox(label="참고 글 1", placeholder="참고할 글을 입력하세요")101 ref2_3 = gr.Textbox(label="참고 글 2", placeholder="참고할 글을 입력하세요")102 ref3_3 = gr.Textbox(label="참고 글 3", placeholder="참고할 글을 입력하세요")103 outline_button_3 = gr.Button("아웃라인 생성")104 outline_output_3 = gr.Textbox(label="생성된 아웃라인")105 106 outline_3 = gr.Textbox(label="작성할 아웃라인", placeholder="생성된 아웃라인을 입력하세요")107 blog_button_3 = gr.Button("블로그 글 생성")108 blog_output_3 = gr.HTML(label="생성된 블로그 글 (HTML 형식)")109 110 outline_button_3.click(generate_outline_3_api, inputs=[category_3, style_3, ref1_3, ref2_3, ref3_3], outputs=outline_output_3)111 blog_button_3.click(generate_blog_post_3_api, inputs=[category_3, style_3, ref1_3, ref2_3, ref3_3, outline_3], outputs=blog_output_3)112 113 # 네 번째 탭: 핵심기능집중형114 with gr.Tab("핵심기능집중형"):115 category_4 = gr.Radio(choices=['핵심기능집중형'], label="포스팅 카테고리", value="핵심기능집중형")116 style_4 = gr.Radio(choices=['친근한', '일반', '전문적인'], label="포스팅 스타일", value="친근한")117 ref1_4 = gr.Textbox(label="참고 글 1", placeholder="참고할 글을 입력하세요")118 ref2_4 = gr.Textbox(label="참고 글 2", placeholder="참고할 글을 입력하세요")119 ref3_4 = gr.Textbox(label="참고 글 3", placeholder="참고할 글을 입력하세요")120 outline_button_4 = gr.Button("핵심기능 선정하기")121 outline_result1 = gr.Textbox(label="핵심기능 1")122 outline_result2 = gr.Textbox(label="핵심기능 2")123 outline_result3 = gr.Textbox(label="핵심기능 3")124 outline_4 = gr.Textbox(label="작성할 핵심기능 주제 중에 1개만 입력해주세요", placeholder="핵심기능 1개만 입력하세요")125 blog_button_4 = gr.Button("블로그 글 생성")126 blog_output_4 = gr.HTML(label="생성된 블로그 글 (HTML 형식)")127 128 outline_button_4.click(generate_outline_4_api, inputs=[category_4, style_4, ref1_4, ref2_4, ref3_4], outputs=[outline_result1, outline_result2, outline_result3])129 blog_button_4.click(generate_blog_post_4_api, inputs=[category_4, style_4, ref1_4, ref2_4, ref3_4, outline_4], outputs=blog_output_4)130 131 # 다섯 번째 탭: 방문후기형132 with gr.Tab("방문후기형"):133 category_5 = gr.Radio(choices=['방문후기형'], label="포스팅 카테고리", value="방문후기형")134 style_5 = gr.Radio(choices=['친근한', '일반', '전문적인'], label="포스팅 스타일", value="친근한")135 ref1_5 = gr.Textbox(label="참고 글 1", placeholder="참고할 글을 입력하세요")136 ref2_5 = gr.Textbox(label="참고 글 2", placeholder="참고할 글을 입력하세요")137 ref3_5 = gr.Textbox(label="참고 글 3", placeholder="참고할 글을 입력하세요")138 photo_recommendations_5 = gr.Textbox(label="사진 형태 키워드", placeholder="사진 추천 키워드를 입력하세요")139 outline_button_5 = gr.Button("아웃라인 생성")140 outline_output_5 = gr.Textbox(label="생성된 아웃라인")141 142 outline_5 = gr.Textbox(label="작성할 아웃라인", placeholder="생성된 아웃라인을 입력하세요")143 blog_button_5 = gr.Button("블로그 글 생성")144 blog_output_5 = gr.HTML(label="생성된 블로그 글 (HTML 형식)")145 146 outline_button_5.click(147 generate_outline_5_api,148 inputs=[category_5, style_5, ref1_5, ref2_5, ref3_5, photo_recommendations_5],149 outputs=outline_output_5150 )151 blog_button_5.click(152 generate_blog_post_5_api,153 inputs=[category_5, style_5, ref1_5, ref2_5, ref3_5, outline_5, photo_recommendations_5],154 outputs=blog_output_5155 )156 157 return demo158 159# 인터페이스 실행160if __name__ == "__main__":161 interface().launch(share=True)