| | import gradio as gr |
| | import json |
| | from fastapi import FastAPI, Request |
| | from fastapi.responses import JSONResponse |
| | import uvicorn |
| | import threading |
| |
|
| | |
| | |
| | |
| | def generate_recipe(required, available, max_ingredients): |
| | |
| | recipe = f"""Rezept mit maximal {max_ingredients} Zutaten: |
| | |
| | Verwendete Zutaten: |
| | - Benötigt: {required} |
| | - Verfügbar: {available} |
| | |
| | Zubereitung: |
| | 1. Schneide alle Zutaten klein. |
| | 2. Koche sie zusammen in einem Topf. |
| | 3. Würze nach Geschmack und serviere heiß. |
| | """ |
| | return recipe |
| |
|
| | def generate_recipe_api(required, available, max_ingredients): |
| | recipe = generate_recipe(required, available, max_ingredients) |
| | return json.dumps({"recipe": recipe}) |
| |
|
| | |
| | |
| | |
| | with gr.Blocks() as demo: |
| | gr.Markdown("## KI-Rezept-Generator") |
| |
|
| | with gr.Row(): |
| | required_input = gr.Textbox(label="Benötigte Zutaten", placeholder="z.B. chicken, rice") |
| | available_input = gr.Textbox(label="Verfügbare Zutaten", placeholder="z.B. onions, garlic, tomatoes") |
| |
|
| | max_ingredients_input = gr.Slider(label="Maximale Anzahl Zutaten", minimum=3, maximum=12, value=6, step=1) |
| | output = gr.Textbox(label="Generiertes Rezept") |
| |
|
| | generate_btn = gr.Button("Rezept generieren") |
| | generate_btn.click( |
| | fn=generate_recipe, |
| | inputs=[required_input, available_input, max_ingredients_input], |
| | outputs=output |
| | ) |
| |
|
| | |
| | |
| | |
| | app = FastAPI() |
| |
|
| | @app.post("/generate") |
| | async def generate(request: Request): |
| | data = await request.json() |
| | required = data.get("required", "") |
| | available = data.get("available", "") |
| | max_ingredients = int(data.get("max_ingredients", 6)) |
| | result = generate_recipe_api(required, available, max_ingredients) |
| | return JSONResponse(content=json.loads(result)) |
| |
|
| | |
| | |
| | |
| | def launch_gradio(): |
| | demo.launch(server_name="0.0.0.0", server_port=7860, share=False) |
| |
|
| | threading.Thread(target=launch_gradio).start() |
| |
|
| | if __name__ == "__main__": |
| | uvicorn.run(app, host="0.0.0.0", port=7861) |
| |
|