test / app2.py
yuiseki's picture
update
2e7be67
raw
history blame
2.62 kB
import gradio as gr
import openai
import os
import requests
openai.organization = os.getenv("API_ORG")
openai.api_key = os.getenv("API_KEY")
app_password = os.getenv("APP_PASSWORD")
app_username = os.getenv("APP_USERNAME")
def generate_prompt(input):
prompt = """You are a prompt writing support system for image generation AI.
From the user's input, You output prompt in English that should be input to the image generation AI, imagining its intent as much as possible.
You are not allowed to ask questions of the user.
You will always output only brief prompt in English to be input to the image generation AI.
Your output will always English.
Input from user:
"""
response = openai.ChatCompletion.create(
model = "gpt-3.5-turbo",
messages = [{"role": "system", "content": prompt+input}],
max_tokens=256
)
generated_text = response['choices'][0]['message']['content'].strip()
return "Make the illustration a photo: "+generated_text
def get_related_caption(prompt):
url = "https://api.irasutoya.nibo.sh/semantic-search"
params = {'q': prompt}
headers = {"content-type": "application/json"}
r = requests.get(url, params=params, headers=headers)
data = r.json()
return data['illustrations'][0]['description']
def generate(prompt):
caption = get_related_caption(prompt)
generated_prompt = generate_prompt(caption)
response = openai.Image.create(
prompt=generated_prompt,
n=1,
size="256x256"
)
return caption, generated_prompt, response['data'][0]['url']
with gr.Blocks() as demo:
with gr.Column():
with gr.Row():
with gr.Column():
prompt_text = gr.Textbox(lines=5, label="Prompt")
prompt_examples = gr.Examples(
examples=[
"ใใฎใ“ใฎๅฑฑ",
"ใŸใ‘ใฎใ“ใฎ้‡Œ",
"ใŠ่“ๅญใฎๅฎถ",
],
inputs=[prompt_text],
outputs=None,
)
btn = gr.Button(value="Generate Image")
with gr.Column():
caption = gr.Textbox(lines=5, label="Related Caption")
generated_prompt = gr.Textbox(lines=5, label="Generated Prompt")
out_image = gr.components.Image(type="filepath", label="Generated Image")
btn.click(generate, inputs=[prompt_text], outputs=[caption, generated_prompt, out_image])
demo.load()
demo.launch(share=True, auth=(app_username, app_password))