| 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) |
|
|