|
import os |
|
import requests |
|
from dotenv import load_dotenv |
|
from PIL import Image |
|
from io import BytesIO |
|
|
|
|
|
dotenv_path = os.path.join(os.path.dirname(__file__), 'env', '.env') |
|
|
|
|
|
|
|
load_dotenv(dotenv_path, override=True) |
|
|
|
|
|
api_key = os.getenv("FIREWORKS_API_KEY") |
|
|
|
if not api_key: |
|
raise ValueError("API key not found. Make sure FIREWORKS_API_KEY is set in the .env file.") |
|
|
|
|
|
prompt = input("Enter a prompt for image generation: ") |
|
|
|
|
|
if not prompt.strip(): |
|
raise ValueError("Prompt cannot be empty!") |
|
|
|
|
|
|
|
|
|
|
|
model_path = "flux-1-dev-fp8" |
|
|
|
|
|
url = f"https://api.fireworks.ai/inference/v1/workflows/accounts/fireworks/models/{model_path}/text_to_image" |
|
|
|
|
|
headers = { |
|
"Authorization": f"Bearer {api_key}", |
|
"Content-Type": "application/json", |
|
"Accept": "image/jpeg" |
|
} |
|
|
|
|
|
data = { |
|
"prompt": prompt, |
|
"aspect_ratio": "16:9", |
|
"guidance_scale": 3.5, |
|
"num_inference_steps": 30 if model_path == "flux-1-dev" else 4, |
|
"seed": 0 |
|
} |
|
|
|
|
|
response = requests.post(url, headers=headers, json=data) |
|
|
|
|
|
if response.status_code == 200: |
|
|
|
img_data = response.content |
|
img = Image.open(BytesIO(img_data)) |
|
|
|
img.save("output_image.jpg") |
|
print("Image saved successfully as output_image.jpg.") |
|
else: |
|
|
|
print(f"Error: {response.status_code}, {response.text}") |
|
|