File size: 2,405 Bytes
ba2f564 098c005 c381645 ba2f564 74d625f ba2f564 098c005 74d625f 098c005 c381645 ba2f564 72a399b ba2f564 c381645 ba2f564 72a399b c381645 72a399b c381645 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
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)
|