imgtest2 / app.py
seawolf2357's picture
Update app.py
7bb92dd verified
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("<h1 align='center'>ํ† ๋ฆฌ์˜ ๋ชจํ—˜: 3D ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ƒ์„ฑ๊ธฐ</h1>")
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()