Spaces:
Running
Running
import gradio as gr | |
import base64 | |
import io | |
from PIL import Image | |
from together import Together | |
def generate_image(api_key, prompt, width, height, steps): | |
try: | |
# Initialize the Together AI client with the provided API key | |
client = Together(api_key=api_key) | |
# Call the Together API to generate an image | |
response = client.images.generate( | |
prompt=prompt, | |
model="black-forest-labs/FLUX.1-schnell-Free", | |
width=width, | |
height=height, | |
steps=steps, | |
n=1, | |
response_format="b64_json" | |
) | |
# Get the base64 encoded image | |
image_b64 = response.data[0].b64_json | |
# Convert base64 to image | |
image_data = base64.b64decode(image_b64) | |
image = Image.open(io.BytesIO(image_data)) | |
return image | |
except Exception as e: | |
return f"Error generating image: {str(e)}" | |
# Create the Gradio interface | |
with gr.Blocks() as app: | |
gr.Markdown("# Together AI Image Generator") | |
gr.Markdown("Generate images using the FLUX.1-schnell-Free model from Together AI") | |
with gr.Row(): | |
with gr.Column(scale=1): | |
api_key_input = gr.Textbox( | |
label="Together API Key", | |
placeholder="Enter your Together API key here...", | |
type="password" # Mask the API key for security | |
) | |
prompt_input = gr.Textbox( | |
label="Enter your prompt", | |
placeholder="A beautiful sunset over mountains...", | |
lines=3 | |
) | |
with gr.Row(): | |
width_input = gr.Number( | |
label="Width", | |
value=1024, | |
minimum=256, | |
maximum=2048, | |
step=64 | |
) | |
height_input = gr.Number( | |
label="Height", | |
value=768, | |
minimum=256, | |
maximum=2048, | |
step=64 | |
) | |
steps_input = gr.Slider( | |
label="Steps", | |
minimum=1, | |
maximum=50, | |
value=4, | |
step=1 | |
) | |
generate_button = gr.Button("Generate Image") | |
with gr.Column(scale=1): | |
image_output = gr.Image(label="Generated Image") | |
generate_button.click( | |
fn=generate_image, | |
inputs=[api_key_input, prompt_input, width_input, height_input, steps_input], | |
outputs=image_output | |
) | |
gr.Markdown(""" | |
## Instructions | |
1. Enter your Together API Key (get one from https://www.together.ai) | |
2. Enter a descriptive prompt in the text box | |
3. Adjust the width, height, and steps as needed | |
- Width and height control the dimensions of the generated image | |
- Steps control the number of diffusion steps (higher = more detail but slower) | |
4. Click "Generate Image" | |
5. Wait for the image to be generated | |
Note: Your API key is not stored and is only used for the current session. | |
""") | |
# Launch the app | |
if __name__ == "__main__": | |
app.launch() |