ai-sticker-maker / instructions.txt
abdibrokhim's picture
init
3d205c2
*Note: commited intentionally for educational purposes
Given the following code snippets, and the list of image generation models with example API requests.
[TASK]
<|gradio_app_instructions|>
Your task is to complete the code snippets by adding the necessary code to make the API requests.
The steps are really simple; user inputs any prompt; for example; "A girl with short pink hair wearing a oversize hoodie.".
Then, the prompt will be passed to the enhance_prompt function to enhance the prompt.
The enhanced prompt will be passed to the image generation model to generate the image.
However, here user will select which image generation model to use.
The image will be generated and displayed to the user.
[UI]
<|gradio_app_ui|>
List the image generation models on the left side of the UI.
Make image generation model selection as checkbox.
Display as much Image Output as user selected image generation models.
For example; we have 13 image generation models, and user selected 3 models using checkbox.
After user enters the prompt. The image will be generated using 3 models and displayed to the user.
[DOCS]
Feel free to use Gradio documentation to complete the task.
[CODE]
<|start_of_code_snippet|>
import gradio as gr
from openai import OpenAI
from dotenv import load_dotenv
import os
load_dotenv()
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
# i will update [SYSTEM_PROMPT] myself, ignore for now.
SYSTEM_PROMPT = """
<i will update myself, ignore for now.>
"""
# general function to enhance prompt
# user prompt will be passed as an argument
# this is very first step after user input
# then enhanced prompt will be passed to the image generation model
def enhance_prompt(user_prompt) -> str:
completion = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": user_prompt}
]
)
ep = completion.choices[0].message.content
print('Enhanced Prompt: ' ,ep)
return ep
# title should be centered
# gradio app title
title = "Let's Generate Cutesy AI Sticker!"
# align project_website and paper_url center and in one row
project_website = "https://ai-sticker-maker.vercel.app/"
paper_url = "https://rebrand.ly/aistickermakerpaper"
# call to action text should be also centered
call_to_action_text = "Please consider starring ⭐️ the [GitHub Repo](https://github.com/abdibrokhim/ai-sticker-maker) if you find this useful!"
# to build from scratch, you can follow the tutorial on medium and dev.to
tutorial_on_medium_link = "https://medium.com/@abdibrokhim/building-an-ai-sticker-maker-platform-with-ai-ml-api-next-js-8b0767a7e159"
tutorial_on_dev_link = "https://dev.to/abdibrokhim/building-an-ai-sticker-maker-platform-with-aiml-api-nextjs-react-and-tailwind-css-using-openai-gpt-4o-and-dalle-3-models-46ip"
# general input placeholder
placeholder = "A girl with short pink hair wearing a oversize hoodie..."
<|list_of_image_generation_models|>
# list of image generation models with example API requests
# 1. stable-diffusion-v35-large
# import requests
# import base64
# def main():
# headers = {
# "Authorization": "Bearer <YOUR_API_KEY>",
# }
# payload = {
# "prompt": "Hyperrealistic art featuring a cat in costume.",
# "model": "stable-diffusion-v35-large",
# }
# response = requests.post(
# "https://api.aimlapi.com/images/generations", headers=headers, json=payload
# )
# image_base64 = response.json()["output"]["choices"][0]["image_base64"]
# image_data = base64.b64decode(image_base64)
# with open("./image.png", "wb") as file:
# file.write(image_data)
# main()
# 2. flux-pro/v1.1
# import requests
# import base64
# def main():
# headers = {
# "Authorization": "Bearer <YOUR_API_KEY>",
# }
# payload = {
# "prompt": "Hyperrealistic art featuring a cat in costume.",
# "model": "flux-pro/v1.1",
# }
# response = requests.post(
# "https://api.aimlapi.com/images/generations", headers=headers, json=payload
# )
# image_base64 = response.json()["output"]["choices"][0]["image_base64"]
# image_data = base64.b64decode(image_base64)
# with open("./image.png", "wb") as file:
# file.write(image_data)
# main()
# 3. dall-e-3
# import requests
# import base64
# def main():
# headers = {
# "Authorization": "Bearer <YOUR_API_KEY>",
# }
# payload = {
# "prompt": "Hyperrealistic art featuring a cat in costume.",
# "model": "dall-e-3",
# }
# response = requests.post(
# "https://api.aimlapi.com/images/generations", headers=headers, json=payload
# )
# image_base64 = response.json()["output"]["choices"][0]["image_base64"]
# image_data = base64.b64decode(image_base64)
# with open("./image.png", "wb") as file:
# file.write(image_data)
# main()
# 4. stable-diffusion-v3-medium
# import requests
# import base64
# def main():
# headers = {
# "Authorization": "Bearer <YOUR_API_KEY>",
# }
# payload = {
# "prompt": "Hyperrealistic art featuring a cat in costume.",
# "model": "stable-diffusion-v3-medium",
# }
# response = requests.post(
# "https://api.aimlapi.com/images/generations", headers=headers, json=payload
# )
# image_base64 = response.json()["output"]["choices"][0]["image_base64"]
# image_data = base64.b64decode(image_base64)
# with open("./image.png", "wb") as file:
# file.write(image_data)
# main()
# 5. runwayml/stable-diffusion-v1-5
# import requests
# import base64
# def main():
# headers = {
# "Authorization": "Bearer <YOUR_API_KEY>",
# }
# payload = {
# "prompt": "Hyperrealistic art featuring a cat in costume.",
# "model": "runwayml/stable-diffusion-v1-5",
# }
# response = requests.post(
# "https://api.aimlapi.com/images/generations", headers=headers, json=payload
# )
# image_base64 = response.json()["output"]["choices"][0]["image_base64"]
# image_data = base64.b64decode(image_base64)
# with open("./image.png", "wb") as file:
# file.write(image_data)
# main()
# 6. stabilityai/stable-diffusion-xl-base-1.0
# import requests
# import base64
# def main():
# headers = {
# "Authorization": "Bearer <YOUR_API_KEY>",
# }
# payload = {
# "prompt": "Hyperrealistic art featuring a cat in costume.",
# "model": "stabilityai/stable-diffusion-xl-base-1.0",
# }
# response = requests.post(
# "https://api.aimlapi.com/images/generations", headers=headers, json=payload
# )
# image_base64 = response.json()["output"]["choices"][0]["image_base64"]
# image_data = base64.b64decode(image_base64)
# with open("./image.png", "wb") as file:
# file.write(image_data)
# main()
# 7. stabilityai/stable-diffusion-2-1
# import requests
# import base64
# def main():
# headers = {
# "Authorization": "Bearer <YOUR_API_KEY>",
# }
# payload = {
# "prompt": "Hyperrealistic art featuring a cat in costume.",
# "model": "stabilityai/stable-diffusion-2-1",
# }
# response = requests.post(
# "https://api.aimlapi.com/images/generations", headers=headers, json=payload
# )
# image_base64 = response.json()["output"]["choices"][0]["image_base64"]
# image_data = base64.b64decode(image_base64)
# with open("./image.png", "wb") as file:
# file.write(image_data)
# main()
# 8. SG161222/Realistic_Vision_V3.0_VAE
# import requests
# import base64
# def main():
# headers = {
# "Authorization": "Bearer <YOUR_API_KEY>",
# }
# payload = {
# "prompt": "Hyperrealistic art featuring a cat in costume.",
# "model": "SG161222/Realistic_Vision_V3.0_VAE",
# }
# response = requests.post(
# "https://api.aimlapi.com/images/generations", headers=headers, json=payload
# )
# image_base64 = response.json()["output"]["choices"][0]["image_base64"]
# image_data = base64.b64decode(image_base64)
# with open("./image.png", "wb") as file:
# file.write(image_data)
# main()
# 9. prompthero/openjourney
# import requests
# import base64
# def main():
# headers = {
# "Authorization": "Bearer <YOUR_API_KEY>",
# }
# payload = {
# "prompt": "Hyperrealistic art featuring a cat in costume.",
# "model": "prompthero/openjourney",
# }
# response = requests.post(
# "https://api.aimlapi.com/images/generations", headers=headers, json=payload
# )
# image_base64 = response.json()["output"]["choices"][0]["image_base64"]
# image_data = base64.b64decode(image_base64)
# with open("./image.png", "wb") as file:
# file.write(image_data)
# main()
# 10. wavymulder/Analog-Diffusion
# import requests
# import base64
# def main():
# headers = {
# "Authorization": "Bearer <YOUR_API_KEY>",
# }
# payload = {
# "prompt": "Hyperrealistic art featuring a cat in costume.",
# "model": "wavymulder/Analog-Diffusion",
# }
# response = requests.post(
# "https://api.aimlapi.com/images/generations", headers=headers, json=payload
# )
# image_base64 = response.json()["output"]["choices"][0]["image_base64"]
# image_data = base64.b64decode(image_base64)
# with open("./image.png", "wb") as file:
# file.write(image_data)
# main()
# 11. flux-pro
# import requests
# import base64
# def main():
# headers = {
# "Authorization": "Bearer <YOUR_API_KEY>",
# }
# payload = {
# "prompt": "Hyperrealistic art featuring a cat in costume.",
# "model": "flux-pro",
# }
# response = requests.post(
# "https://api.aimlapi.com/images/generations", headers=headers, json=payload
# )
# image_base64 = response.json()["output"]["choices"][0]["image_base64"]
# image_data = base64.b64decode(image_base64)
# with open("./image.png", "wb") as file:
# file.write(image_data)
# main()
# 12. flux-realism
# import requests
# import base64
# def main():
# headers = {
# "Authorization": "Bearer <YOUR_API_KEY>",
# }
# payload = {
# "prompt": "Hyperrealistic art featuring a cat in costume.",
# "model": "flux-realism",
# }
# response = requests.post(
# "https://api.aimlapi.com/images/generations", headers=headers, json=payload
# )
# image_base64 = response.json()["output"]["choices"][0]["image_base64"]
# image_data = base64.b64decode(image_base64)
# with open("./image.png", "wb") as file:
# file.write(image_data)
# main()
# 13. dall-e-2
# import requests
# import base64
# def main():
# headers = {
# "Authorization": "Bearer <YOUR_API_KEY>",
# }
# payload = {
# "prompt": "Hyperrealistic art featuring a cat in costume.",
# "model": "dall-e-2",
# }
# response = requests.post(
# "https://api.aimlapi.com/images/generations", headers=headers, json=payload
# )
# image_base64 = response.json()["output"]["choices"][0]["image_base64"]
# image_data = base64.b64decode(image_base64)
# with open("./image.png", "wb") as file:
# file.write(image_data)
# main()
<|end_of_code_snippet|>
Refactor examples part. Follow this steps:
1. make 4 columns: 1) user prompt, 2) enhanced prompt, 3) generated image, 4) ai model
2. rewrite column labels also.
3. better make dictionary for each entry. so i can easily add more examples.
here is example table info:
[entry 1:]
user prompt: "An adorable kitten playing with a ball of yarn"
enhanced prompt: "An adorable, fluffy kitten with big, sparkling eyes and playful whiskers, tumbling around with a vibrant ball of yarn. The kitten's fur is a soft blend of warm creams and greys, giving it a cuddly, huggable appearance. Its expression is full of joy and mischief, with a tiny pink tongue playfully sticking out. The ball of yarn is a bright and cheerful red, unraveling with dynamic loops and curls. The style is chibi-like and sticker-friendly, with minimalistic lines and gentle shading. The background is a simple, soft pastel color with tiny floating paw prints, enhancing the cute and playful theme."
generated image: "./generated-images/cat-and-yarn.jpeg"
ai model: "dall-e-3"
[entry 2:]
user prompt: "A cutesy cat eating ice cream under a rainbow"
enhanced prompt: "A playful, cartoonish cat with big, sparkling eyes and soft, rounded features, happily licking a colorful ice cream cone. The cat has fluffy fur, pastel colors—like soft cream, peach, or light gray—and tiny pink blush on its cheeks for added charm. It sits contentedly under a bright, arched rainbow with soft, blended hues. Small, floating sparkles and tiny hearts surround the cat and ice cream to add a touch of magic. The ice cream cone has multiple scoops in fun, bright colors like pink, blue, and mint green, making the whole scene feel adorable and sweet, perfect for a cute sticker!"
generated image: "./generated-images/cat-and-icecream.jpeg"
ai model: "dall-e-3"
[entry 3:]
user prompt: "A girl with short pink+black hair wearing a pink shirt."
enhanced prompt: "An adorable chibi-style character with a soft, cozy look. She has a short, wavy bob hairstyle in gradient shades of gray with delicate highlights that sparkle. Her large, expressive brown eyes have a gentle shine, and her cheeks are lightly blushed, adding a touch of warmth. She wears an off-shoulder, cream-colored sweater, giving a relaxed and comforting vibe. The background is a soft pastel gradient in warm beige and cream tones, decorated with small, floating sparkles and star shapes for a magical effect. The overall style is cute, minimalist, and sticker-friendly."
generated image: "./generated-images/girl-with-white-grey-hair.png"
ai model: "dall-e-3"