Spaces:
Sleeping
Sleeping
import os | |
import base64 | |
from typing import Dict, Any | |
from openai import OpenAI | |
def generate_image( | |
prompt: str, | |
width: int = 1024, | |
height: int = 1024, | |
num_inference_steps: int = 28, | |
negative_prompt: str = "", | |
seed: int = -1 | |
) -> Dict[str, Any]: | |
""" | |
Generate an image using Nebius API. | |
Args: | |
prompt: Text prompt for image generation | |
output_path: Path where to save the generated image | |
width: Image width | |
height: Image height | |
num_inference_steps: Number of inference steps | |
negative_prompt: Negative prompt for generation | |
seed: Random seed (-1 for random) | |
Returns: | |
Dictionary with result information | |
""" | |
try: | |
client = OpenAI( | |
base_url="https://api.studio.nebius.com/v1/", | |
api_key=os.environ.get("NEBIUS_API_KEY") | |
) | |
response = client.images.generate( | |
model="black-forest-labs/flux-dev", | |
response_format="b64_json", | |
extra_body={ | |
"response_extension": "png", | |
"width": width, | |
"height": height, | |
"num_inference_steps": num_inference_steps, | |
"negative_prompt": negative_prompt, | |
"seed": seed | |
}, | |
prompt=prompt | |
) | |
image_data = base64.b64decode(response.data[0].b64_json) | |
return { | |
"success": True, | |
"message": "Image generated successfully", | |
"prompt": prompt, | |
"b64": image_data, | |
"generation_params": { | |
"width": width, | |
"height": height, | |
"num_inference_steps": num_inference_steps, | |
"negative_prompt": negative_prompt, | |
"seed": seed | |
} | |
} | |
except Exception as e: | |
if "NEBIUS_API_KEY" in str(e) or not os.environ.get("NEBIUS_API_KEY"): | |
return { | |
"success": False, | |
"error": "NEBIUS_API_KEY environment variable not set", | |
"output_path": None, | |
'user': os.environ.get("USER") | |
} | |
return { | |
"success": False, | |
"error": f"Failed to generate image: {str(e)}", | |
"output_path": None | |
} |