File size: 1,130 Bytes
864ed0b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# genesis/utils/image_utils.py
import os
import requests

GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")

def generate_image(prompt, output_file="generated.png"):
    """Try Gemini first, then OpenAI if Gemini fails."""
    try:
        url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key={GEMINI_API_KEY}"
        r = requests.post(url, json={"contents": [{"parts": [{"text": prompt}]}]})
        r.raise_for_status()
        # Save the image binary
        with open(output_file, "wb") as f:
            f.write(r.content)
        return output_file
    except Exception:
        url = "https://api.openai.com/v1/images/generations"
        headers = {"Authorization": f"Bearer {OPENAI_API_KEY}"}
        r = requests.post(url, json={"model": "gpt-4o-mini", "prompt": prompt, "size": "1024x1024"}, headers=headers)
        r.raise_for_status()
        image_url = r.json()["data"][0]["url"]
        img_data = requests.get(image_url).content
        with open(output_file, "wb") as f:
            f.write(img_data)
        return output_file