Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from transformers import pipeline | |
| from fastapi import FastAPI | |
| from gradio import routes | |
| import uvicorn | |
| # Load the model (this runs only once!) | |
| generator = pipeline("text2text-generation", model="LahiruProjects/recipe-generator-flan-t5") | |
| # Function to generate recipe steps | |
| def generate_recipe(name, ingredients, calories, time): | |
| prompt = f"""Create a step-by-step recipe for "{name}" using these ingredients: {', '.join(ingredients.split(','))}. | |
| Keep it under {calories} calories and make sure it's ready in less than {time} minutes.""" | |
| result = generator(prompt) | |
| return result[0]["generated_text"] | |
| # Gradio interface | |
| iface = gr.Interface( | |
| fn=generate_recipe, | |
| inputs=[ | |
| gr.Textbox(label="Recipe Name"), | |
| gr.Textbox(label="Ingredients (comma-separated)"), | |
| gr.Number(label="Max Calories", value=400), | |
| gr.Number(label="Max Cooking Time (minutes)", value=30) | |
| ], | |
| outputs="text", | |
| title="π³ Recipe Generator (FLAN-T5)", | |
| description="Generate a step-by-step recipe based on ingredients, calorie limit, and time" | |
| ) | |
| # FastAPI integration | |
| app = FastAPI() | |
| # Define the API route using Gradio interface | |
| async def predict(data: list): | |
| inputs = data[0] | |
| name = inputs[0] | |
| ingredients = inputs[1] | |
| calories = inputs[2] | |
| time = inputs[3] | |
| result = generate_recipe(name, ingredients, calories, time) | |
| return {"data": [result]} | |
| # Serve the Gradio interface and FastAPI app using Uvicorn (locally for testing) | |
| if __name__ == "__main__": | |
| iface.launch(server_name="0.0.0.0", server_port=7860) # This will launch the Gradio app | |
| uvicorn.run(app, host="0.0.0.0", port=8000) # FastAPI app will run on port 8000 | |