Spaces:
Runtime error
Runtime error
import gradio as gr | |
import requests | |
import json | |
API_URL = "https://api.openai.com/v1/chat/completions" | |
# ์คํฌ๋ฆฝํธ ์์ฑ ํจ์ | |
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.split('\n') # ์คํฌ๋ฆฝํธ๋ฅผ ์ค ๋จ์๋ก ๋ถ๋ฆฌํ์ฌ ๋ฐํ | |
else: | |
return ["Error: Unable to generate response."] | |
# ์ด๋ฏธ์ง ์์ฑ ํจ์ | |
def generate_image(script_line, model_name="models/goofyai/3d_render_style_xl"): | |
# ์ด ํจ์ ๋ด์์๋ ์ด๋ฏธ์ง ์์ฑ ์์ฒญ์ ๋ณด๋ด๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํ๋ ์ฝ๋๋ฅผ ๊ตฌํํฉ๋๋ค. | |
# ์์๋ก๋ gr.Interface.load ๋๋ gr.load๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ์ํฉ๋๋ค. | |
# ์ค์ ๊ตฌํ ์์๋ API ํธ์ถ ๋๋ Gradio์ ์ธ๋ถ ๋ชจ๋ธ ๋ก๋ฉ ๊ธฐ๋ฅ์ ๋ฐ๋ผ ์ ์ ํ ์์ ํด์ผ ํฉ๋๋ค. | |
pass # ์ฌ๊ธฐ์ ์ด๋ฏธ์ง ์์ฑ ์ฝ๋ ๊ตฌํ | |
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) | |
image_output = gr.Gallery(label="Generated Images") # ์์ฑ๋ ์ด๋ฏธ์ง๋ฅผ ํ์ํ ๊ฐค๋ฌ๋ฆฌ | |
submit_button = gr.Button("Generate") | |
def process_and_generate_images(inputs, top_p, temperature, openai_api_key): | |
scripts = predict(inputs, top_p, temperature, openai_api_key) | |
images = [generate_image(script) for script in scripts] # ๊ฐ ์คํฌ๋ฆฝํธ ์ค์ ๋ํ ์ด๋ฏธ์ง ์์ฑ | |
return scripts, images # ์คํฌ๋ฆฝํธ์ ์ด๋ฏธ์ง URL ๋ฐํ | |
submit_button.click(fn=process_and_generate_images, inputs=[inputs, top_p, temperature, openai_api_key], outputs=[output, image_output]) | |
demo.launch() | |