import gradio as gr import requests import json from transformers import pipeline API_URL = "https://api.openai.com/v1/chat/completions" # 번역 파이프라인 초기화 translator = pipeline("translation", model="Helsinki-NLP/opus-mt-ko-en") def translate_and_generate_prompts(text): # 입력된 텍스트를 영어로 번역 translation = translator(text, max_length=512) translated_text = translation[0]['translation_text'] # 기본 키워드 추가 prompt = "3d style, 4k" # 지정 키워드 추가 if "토리" in text: prompt += ", like Brad Pitt young boy" elif "줄리" in text: prompt += ", like Emma Watson young girl" # 번역된 텍스트 추가 prompt += f", {translated_text}" return prompt def predict(inputs, top_p, temperature, openai_api_key): narration_prompt = f"아동용 애니메이션 동영상에 사용할 스크립트를 작성하라. 반드시 한글로 작성할것. 일체의 지문이나 지시, 기호 표시, 배경 설명 등을 노출 하거나 출력하지 말고 기승전결의 구조로 모험의 이유/위기/도전/문제해결/교훈을 포함하여 순수한 나레이션만 1줄씩 출력하여 최대 10줄 이내로 출력. 입력: '{inputs}'" headers = { "Content-Type": "application/json", "Authorization": f"Bearer {openai_api_key}" } payload = { "model": "gpt-4-1106-preview", "messages": [{"role": "system", "content": narration_prompt}], "temperature": temperature, "top_p": top_p, "n": 1, "max_tokens": 1000 } response = requests.post(API_URL, headers=headers, json=payload) if response.status_code == 200: response_data = response.json() generated_text = response_data['choices'][0]['message']['content'] return generated_text else: return "Error: Unable to generate response." def generate_prompts(script): # 스크립트의 각 줄을 영어로 번역하고 프롬프트 생성 lines = script.split('\n') translated_prompts = [translate_and_generate_prompts(line) for line in lines if line.strip() != ''] return "\n".join(translated_prompts) with gr.Blocks() as demo: gr.Markdown("

토리의 모험: 3D 애니메이션 생성기

") with gr.Row(): openai_api_key = gr.Textbox(type='password', label="Enter your OpenAI API key here") inputs = gr.Textbox(placeholder="여기에 입력하세요.", label="아동용 애니메이션 스크립트를 생성하고 싶은 주제어나 문장을 입력하세요.") top_p = gr.Slider(minimum=0, maximum=1.0, value=1.0, step=0.05, label="Top-p (nucleus sampling)") temperature = gr.Slider(minimum=0, maximum=5.0, value=1.0, step=0.1, label="Temperature") output = gr.Textbox(label="Generated Script", readonly=True) prompts_output = gr.TextArea(label="Translated Image Generation Prompts", readonly=True) submit_button = gr.Button("Generate Script") prompts_button = gr.Button("Translate Prompts") submit_button.click(fn=predict, inputs=[inputs, top_p, temperature, openai_api_key], outputs=output) prompts_button.click(fn=generate_prompts, inputs=[output], outputs=prompts_output) demo.launch()