TimInf commited on
Commit
ba2f564
·
verified ·
1 Parent(s): c381645

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +54 -6
app.py CHANGED
@@ -1,7 +1,55 @@
 
 
1
  from fastapi import FastAPI, Request
2
  from fastapi.responses import JSONResponse
3
  import uvicorn
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  app = FastAPI()
6
 
7
  @app.post("/generate")
@@ -10,16 +58,16 @@ async def generate(request: Request):
10
  required = data.get("required", "")
11
  available = data.get("available", "")
12
  max_ingredients = int(data.get("max_ingredients", 6))
13
- response = generate_recipe_api(required, available, max_ingredients)
14
- return JSONResponse(content=json.loads(response))
15
 
16
- # Kombiniere FastAPI und Gradio
17
- import threading
 
18
  def launch_gradio():
19
- demo.launch(server_name="0.0.0.0", server_port=7860, show_error=True, share=False)
20
 
21
  threading.Thread(target=launch_gradio).start()
22
 
23
- # Starte FastAPI Server
24
  if __name__ == "__main__":
25
  uvicorn.run(app, host="0.0.0.0", port=7861)
 
1
+ import gradio as gr
2
+ import json
3
  from fastapi import FastAPI, Request
4
  from fastapi.responses import JSONResponse
5
  import uvicorn
6
+ import threading
7
+
8
+ # --------------------------------------
9
+ # Rezept-Logik
10
+ # --------------------------------------
11
+ def generate_recipe(required, available, max_ingredients):
12
+ # Dummy-Logik – hier kannst du dein echtes Rezeptmodell verwenden
13
+ recipe = f"""Rezept mit maximal {max_ingredients} Zutaten:
14
+
15
+ Verwendete Zutaten:
16
+ - Benötigt: {required}
17
+ - Verfügbar: {available}
18
+
19
+ Zubereitung:
20
+ 1. Schneide alle Zutaten klein.
21
+ 2. Koche sie zusammen in einem Topf.
22
+ 3. Würze nach Geschmack und serviere heiß.
23
+ """
24
+ return recipe
25
+
26
+ def generate_recipe_api(required, available, max_ingredients):
27
+ recipe = generate_recipe(required, available, max_ingredients)
28
+ return json.dumps({"recipe": recipe})
29
+
30
+ # --------------------------------------
31
+ # Gradio UI
32
+ # --------------------------------------
33
+ with gr.Blocks() as demo:
34
+ gr.Markdown("## KI-Rezept-Generator")
35
 
36
+ with gr.Row():
37
+ required_input = gr.Textbox(label="Benötigte Zutaten", placeholder="z.B. chicken, rice")
38
+ available_input = gr.Textbox(label="Verfügbare Zutaten", placeholder="z.B. onions, garlic, tomatoes")
39
+
40
+ max_ingredients_input = gr.Slider(label="Maximale Anzahl Zutaten", minimum=3, maximum=12, value=6, step=1)
41
+ output = gr.Textbox(label="Generiertes Rezept")
42
+
43
+ generate_btn = gr.Button("Rezept generieren")
44
+ generate_btn.click(
45
+ fn=generate_recipe,
46
+ inputs=[required_input, available_input, max_ingredients_input],
47
+ outputs=output
48
+ )
49
+
50
+ # --------------------------------------
51
+ # FastAPI-Server für eigene API
52
+ # --------------------------------------
53
  app = FastAPI()
54
 
55
  @app.post("/generate")
 
58
  required = data.get("required", "")
59
  available = data.get("available", "")
60
  max_ingredients = int(data.get("max_ingredients", 6))
61
+ result = generate_recipe_api(required, available, max_ingredients)
62
+ return JSONResponse(content=json.loads(result))
63
 
64
+ # --------------------------------------
65
+ # Beide Server starten
66
+ # --------------------------------------
67
  def launch_gradio():
68
+ demo.launch(server_name="0.0.0.0", server_port=7860, share=False)
69
 
70
  threading.Thread(target=launch_gradio).start()
71
 
 
72
  if __name__ == "__main__":
73
  uvicorn.run(app, host="0.0.0.0", port=7861)