| import time | |
| from config.replicate import client | |
| def generate_prediction(model: str, prompt: str): | |
| """ | |
| Generate a prediction using the Replicate API. | |
| """ | |
| try: | |
| if ( | |
| model | |
| == "kittykat-ai/swyft:b819072f68811372560fe983c7fbc7921a2386d9a42cb1e35c203fb62799014e" | |
| ): | |
| # Use direct run syntax if model matches | |
| output = client.run(model, input={"prompt": prompt}) | |
| return output[-1].url | |
| else: | |
| # Use the polling method for other models | |
| prediction = client.predictions.create( | |
| model=model, | |
| input={"prompt": prompt}, | |
| ) | |
| # Poll for prediction completion | |
| while prediction.status not in ["succeeded", "failed", "canceled"]: | |
| time.sleep(2) | |
| prediction = client.predictions.get(prediction.id) | |
| return prediction | |
| except Exception as e: | |
| raise Exception(f"Failed to generate prediction: {str(e)}") | |