Recipe / app.py
TimInf's picture
Update app.py
ba2f564 verified
Raw
History Blame Contribute Delete
2.41 kB
import gradio as gr
import json
from fastapi import FastAPI, Request
from fastapi.responses import JSONResponse
import uvicorn
import threading
# --------------------------------------
# Rezept-Logik
# --------------------------------------
def generate_recipe(required, available, max_ingredients):
# Dummy-Logik – hier kannst du dein echtes Rezeptmodell verwenden
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})
# --------------------------------------
# Gradio UI
# --------------------------------------
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
)
# --------------------------------------
# FastAPI-Server für eigene API
# --------------------------------------
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))
# --------------------------------------
# Beide Server starten
# --------------------------------------
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)