Spaces:
Running
on
Zero
Running
on
Zero
import fal | |
class FalModel(): | |
def __init__(self, model_name, model_type): | |
self.model_name = model_name | |
self.modle_type = model_type | |
def __call__(self, *args, **kwargs): | |
if self.model_type == "text2image": | |
assert "prompt" in kwargs, "prompt is required for text2image model" | |
handler = fal.apps.submit( | |
f"fal-ai/{self.model_name}", | |
arguments={ | |
"prompt": kwargs["prompt"] | |
}, | |
) | |
for event in handler.iter_events(): | |
if isinstance(event, fal.apps.InProgress): | |
print('Request in progress') | |
print(event.logs) | |
result = handler.get() | |
return result | |
elif self.model_type == "image2image": | |
assert "image" in kwargs or "image_url" in kwargs, "image or image_url is required for image2image model" | |
if "image" in kwargs: | |
image_url = None | |
pass | |
handler = fal.apps.submit( | |
f"fal-ai/{self.model_name}", | |
arguments={ | |
"image_url": image_url | |
}, | |
) | |
for event in handler.iter_events(): | |
if isinstance(event, fal.apps.InProgress): | |
print('Request in progress') | |
print(event.logs) | |
result = handler.get() | |
return result | |
elif self.model_type == "text2video": | |
raise NotImplementedError("text2video model is not implemented yet") | |
else: | |
raise ValueError("model_type must be text2image or image2image") | |
def load_fal_model(model_name, model_type): | |
return FalModel(model_name, model_type) |