import gradio as gr from gradio_client import Client import os # 각 모듈에서 함수 import (PDF 함수 제거) from info_blog import generate_outline_1, generate_blog_post_1 from travel_blog import generate_outline_2, generate_blog_post_2 from product_review_blog import generate_outline_3, generate_blog_post_3 from feature_focus_blog import generate_outline_4, generate_blog_post_4 from visit_review_blog import generate_outline_5, generate_blog_post_5 # 기존 API 함수 정의 (정보성) def generate_outline_1_api(category, style, ref1, ref2, ref3): result = generate_outline_1(category, style, ref1, ref2, ref3) return result def generate_blog_post_1_api(category, style, ref1, ref2, ref3, outline_input): result = generate_blog_post_1(category, style, ref1, ref2, ref3, outline_input) return result # 기존 API 함수 정의 (여행) def generate_outline_2_api(category, style, ref1, ref2, ref3): result = generate_outline_2(category, style, ref1, ref2, ref3) return result def generate_blog_post_2_api(category, style, ref1, ref2, ref3, outline_input): result = generate_blog_post_2(category, style, ref1, ref2, ref3, outline_input) return result # 기존 API 함수 정의 (상품후기) def generate_outline_3_api(category, style, ref1, ref2, ref3): result = generate_outline_3(category, style, ref1, ref2, ref3) return result def generate_blog_post_3_api(category, style, ref1, ref2, ref3, outline_input): result = generate_blog_post_3(category, style, ref1, ref2, ref3, outline_input) return result # 새로운 API 함수 정의 (핵심기능집중형) def generate_outline_4_api(category, style, ref1, ref2, ref3): result = generate_outline_4(category, style, ref1, ref2, ref3) return result def generate_blog_post_4_api(category, style, ref1, ref2, ref3, selected_feature): result = generate_blog_post_4(category, style, ref1, ref2, ref3, selected_feature) return result # 새로운 API 함수 정의 (방문후기형) def generate_outline_5_api(category, style, ref1, ref2, ref3, photo_recommendations): result = generate_outline_5(category, style, ref1, ref2, ref3, photo_recommendations) return result def generate_blog_post_5_api(category, style, ref1, ref2, ref3, outline_input, photo_recommendations): result = generate_blog_post_5(category, style, ref1, ref2, ref3, outline_input, photo_recommendations) return result # Gradio 인터페이스 설계 (Gradio 5.0 이상) def interface(): with gr.Blocks() as demo: gr.Markdown("# 블로그 포스팅") # 첫 번째 탭: 정보성 with gr.Tab("정보성"): category_1 = gr.Radio(choices=['일반', '생활건강'], label="포스팅 카테고리", value="일반") style_1 = gr.Radio(choices=['친근한', '일반', '전문적인'], label="포스팅 스타일", value="친근한") ref1_1 = gr.Textbox(label="참고 글 1", placeholder="참고할 글을 입력하세요") ref2_1 = gr.Textbox(label="참고 글 2", placeholder="참고할 글을 입력하세요") ref3_1 = gr.Textbox(label="참고 글 3", placeholder="참고할 글을 입력하세요") outline_button_1 = gr.Button("아웃라인 생성") outline_output_1 = gr.Textbox(label="생성된 아웃라인") outline_1 = gr.Textbox(label="작성할 아웃라인", placeholder="생성된 아웃라인을 입력하세요") blog_button_1 = gr.Button("블로그 글 생성") blog_output_1 = gr.HTML(label="생성된 블로그 글 (HTML 형식)") outline_button_1.click(generate_outline_1_api, inputs=[category_1, style_1, ref1_1, ref2_1, ref3_1], outputs=outline_output_1) 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) # 두 번째 탭: 여행 with gr.Tab("여행"): category_2 = gr.Radio(choices=['여행 단일', '여행 코스'], label="포스팅 카테고리", value="여행 단일") style_2 = gr.Radio(choices=['친근한', '일반', '전문적인'], label="포스팅 스타일", value="친근한") ref1_2 = gr.Textbox(label="참고 글 1", placeholder="참고할 글을 입력하세요") ref2_2 = gr.Textbox(label="참고 글 2", placeholder="참고할 글을 입력하세요") ref3_2 = gr.Textbox(label="참고 글 3", placeholder="참고할 글을 입력하세요") outline_button_2 = gr.Button("아웃라인 생성") outline_output_2 = gr.Textbox(label="생성된 아웃라인") outline_2 = gr.Textbox(label="작성할 아웃라인", placeholder="생성된 아웃라인을 입력하세요") blog_button_2 = gr.Button("블로그 글 생성") blog_output_2 = gr.HTML(label="생성된 블로그 글 (HTML 형식)") outline_button_2.click(generate_outline_2_api, inputs=[category_2, style_2, ref1_2, ref2_2, ref3_2], outputs=outline_output_2) 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) # 세 번째 탭: 상품후기 with gr.Tab("상품후기"): category_3 = gr.Radio(choices=['일반', '기능집중형', '고객반응형'], label="포스팅 카테고리", value="일반") style_3 = gr.Radio(choices=['친근한', '일반', '전문적인'], label="포스팅 스타일", value="친근한") ref1_3 = gr.Textbox(label="참고 글 1", placeholder="참고할 글을 입력하세요") ref2_3 = gr.Textbox(label="참고 글 2", placeholder="참고할 글을 입력하세요") ref3_3 = gr.Textbox(label="참고 글 3", placeholder="참고할 글을 입력하세요") outline_button_3 = gr.Button("아웃라인 생성") outline_output_3 = gr.Textbox(label="생성된 아웃라인") outline_3 = gr.Textbox(label="작성할 아웃라인", placeholder="생성된 아웃라인을 입력하세요") blog_button_3 = gr.Button("블로그 글 생성") blog_output_3 = gr.HTML(label="생성된 블로그 글 (HTML 형식)") outline_button_3.click(generate_outline_3_api, inputs=[category_3, style_3, ref1_3, ref2_3, ref3_3], outputs=outline_output_3) 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) # 네 번째 탭: 핵심기능집중형 with gr.Tab("핵심기능집중형"): category_4 = gr.Radio(choices=['핵심기능집중형'], label="포스팅 카테고리", value="핵심기능집중형") style_4 = gr.Radio(choices=['친근한', '일반', '전문적인'], label="포스팅 스타일", value="친근한") ref1_4 = gr.Textbox(label="참고 글 1", placeholder="참고할 글을 입력하세요") ref2_4 = gr.Textbox(label="참고 글 2", placeholder="참고할 글을 입력하세요") ref3_4 = gr.Textbox(label="참고 글 3", placeholder="참고할 글을 입력하세요") outline_button_4 = gr.Button("핵심기능 선정하기") outline_result1 = gr.Textbox(label="핵심기능 1") outline_result2 = gr.Textbox(label="핵심기능 2") outline_result3 = gr.Textbox(label="핵심기능 3") outline_4 = gr.Textbox(label="작성할 핵심기능 주제 중에 1개만 입력해주세요", placeholder="핵심기능 1개만 입력하세요") blog_button_4 = gr.Button("블로그 글 생성") blog_output_4 = gr.HTML(label="생성된 블로그 글 (HTML 형식)") 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]) 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) # 다섯 번째 탭: 방문후기형 with gr.Tab("방문후기형"): category_5 = gr.Radio(choices=['방문후기형'], label="포스팅 카테고리", value="방문후기형") style_5 = gr.Radio(choices=['친근한', '일반', '전문적인'], label="포스팅 스타일", value="친근한") ref1_5 = gr.Textbox(label="참고 글 1", placeholder="참고할 글을 입력하세요") ref2_5 = gr.Textbox(label="참고 글 2", placeholder="참고할 글을 입력하세요") ref3_5 = gr.Textbox(label="참고 글 3", placeholder="참고할 글을 입력하세요") photo_recommendations_5 = gr.Textbox(label="사진 형태 키워드", placeholder="사진 추천 키워드를 입력하세요") outline_button_5 = gr.Button("아웃라인 생성") outline_output_5 = gr.Textbox(label="생성된 아웃라인") outline_5 = gr.Textbox(label="작성할 아웃라인", placeholder="생성된 아웃라인을 입력하세요") blog_button_5 = gr.Button("블로그 글 생성") blog_output_5 = gr.HTML(label="생성된 블로그 글 (HTML 형식)") outline_button_5.click( generate_outline_5_api, inputs=[category_5, style_5, ref1_5, ref2_5, ref3_5, photo_recommendations_5], outputs=outline_output_5 ) blog_button_5.click( generate_blog_post_5_api, inputs=[category_5, style_5, ref1_5, ref2_5, ref3_5, outline_5, photo_recommendations_5], outputs=blog_output_5 ) return demo # 인터페이스 실행 if __name__ == "__main__": interface().launch(share=True)