Skip to content

Commit 79a1722

Browse files
committed
Init
1 parent 1cd4b74 commit 79a1722

File tree

1 file changed

+87
-0
lines changed

1 file changed

+87
-0
lines changed
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
import os
2+
import gradio as gr
3+
import requests
4+
import base64
5+
import io
6+
from PIL import Image
7+
8+
FIREWORKS_API_KEY = os.getenv("FIREWORKS_API_KEY")
9+
API_BASE = "https://api.fireworks.ai/inference/v1/workflows/accounts/fireworks/models/{}/text_to_image"
10+
DUMMY_MODELS = ["stable-diffusion-3p5-medium",
11+
"stable-diffusion-3p5-large",
12+
"stable-diffusion-3p5-large-turbo",
13+
"flux-1-dev-fp8",
14+
"flux-1-schnell-fp8",
15+
]
16+
17+
def generate_image(prompt, model):
18+
"""Generate image from text prompt using Fireworks API"""
19+
headers = {
20+
"Authorization": f"Bearer {FIREWORKS_API_KEY}",
21+
"Content-Type": "application/json",
22+
"Accept": "image/jpeg",
23+
}
24+
25+
data = {
26+
"prompt": prompt,
27+
"aspect_ratio": "16:9",
28+
"guidance_scale": 4.5,
29+
"num_inference_steps": 3,
30+
}
31+
32+
api_url = API_BASE.format(model=model)
33+
34+
try:
35+
response = requests.post(api_url, headers=headers, json=data)
36+
if response.status_code != 200:
37+
raise Exception(f"Failed to generate image: {response.status_code} {response.text}")
38+
39+
image_bytes = response.content
40+
image = Image.open(io.BytesIO(image_bytes))
41+
42+
return image
43+
44+
except requests.exceptions.RequestException as e:
45+
return f"Error generating image: {str(e)}"
46+
47+
# Create Gradio interface
48+
with gr.Blocks(title="Text to Image Generator") as demo:
49+
gr.Markdown("# Text to Image Generator")
50+
gr.Markdown("Enter a text prompt to generate an image")
51+
52+
with gr.Column():
53+
with gr.Group():
54+
model_selector = gr.Dropdown(
55+
choices=DUMMY_MODELS,
56+
interactive=True,
57+
show_label=False,
58+
container=False,
59+
)
60+
image_output = gr.Image(
61+
label="Generated Image",
62+
type="pil"
63+
)
64+
65+
with gr.Row():
66+
text_input = gr.Textbox(
67+
label="Prompt",
68+
placeholder="Enter your prompt here...",
69+
show_label=False
70+
)
71+
send_btn = gr.Button("Generate", variant="primary")
72+
73+
# Handle generation
74+
send_btn.click(
75+
fn=generate_image,
76+
inputs=[text_input, model_selector],
77+
outputs=image_output
78+
)
79+
80+
text_input.submit(
81+
fn=generate_image,
82+
inputs=[text_input, model_selector],
83+
outputs=image_output
84+
)
85+
86+
if __name__ == "__main__":
87+
demo.launch(share=True)

0 commit comments

Comments
 (0)