martinbrahm commited on
Commit
8c05e4c
·
verified ·
1 Parent(s): c106ebb

Upload main.py

Browse files
Files changed (1) hide show
  1. main.py +12 -16
main.py CHANGED
@@ -1,42 +1,44 @@
1
  from fastapi import FastAPI, Request
2
  import json
3
 
4
- # Jetzt können wir das wieder laden, da es in requirements.txt steht!
5
  try:
6
  from sqlalchemy import create_engine, text
7
  except ImportError:
8
- pass # Fallback, falls Installation noch läuft
9
 
10
  app = FastAPI()
11
 
12
  @app.get("/")
13
  def home():
14
- return {"status": "Brain is online."}
15
 
16
  @app.post("/search")
17
  async def search_knowledge(request: Request):
18
- # 1. DATEN EMPFANGEN (Der Vapi-Fix)
19
  try:
20
  data = await request.json()
21
- print(f"📥 Vapi sendet: {json.dumps(data)}")
22
  except:
23
  return {"result": "Fehler: Kein JSON."}
24
 
25
  query_text = ""
26
 
27
- # Wir suchen die Frage überall im Paket:
28
  if "query" in data and isinstance(data["query"], str):
29
  query_text = data["query"]
30
  elif "message" in data and "toolCalls" in data["message"]:
31
  try:
 
32
  args = data["message"]["toolCalls"][0]["function"]["arguments"]
 
33
  if isinstance(args, str):
34
  query_text = json.loads(args).get("query", "")
35
  else:
36
  query_text = args.get("query", "")
37
  except:
38
  pass
39
- elif "toolCall" in data: # Manchmal schickt Vapi es so
40
  try:
41
  args = data["toolCall"]["function"]["arguments"]
42
  if isinstance(args, str):
@@ -46,25 +48,19 @@ async def search_knowledge(request: Request):
46
  except:
47
  pass
48
 
49
- print(f"🔎 Frage erkannt: '{query_text}'")
50
-
51
- if not query_text:
52
- return {"result": "Ich habe die Frage nicht verstanden."}
53
-
54
- # 2. LOGIK: Hier simulieren wir deine Datenbank (CAPANEO Wissen)
55
- # Später kannst du hier deine echte 'sqlalchemy' Suche wieder reinkopieren.
56
 
 
57
  query_lower = query_text.lower()
58
 
59
  if "umsätze" in query_lower or "händler" in query_lower:
60
- # Das ist die Antwort aus deinem Screenshot!
61
  antwort = "Umsätze sprudeln für Händler, wenn sie genau an dem Ort präsent sind, wo auch ihre Kunden sind."
62
  elif "geo" in query_lower:
63
  antwort = "Geofencing ist eine Technologie, die Aktionen auslöst, wenn ein Gerät eine Zone betritt."
64
  else:
65
  antwort = "Dazu habe ich leider keine Informationen in der Datenbank."
66
 
67
- # 3. RÜCKGABE (Kompakt für Vapi)
68
  return {
69
  "result": antwort
70
  }
 
1
  from fastapi import FastAPI, Request
2
  import json
3
 
4
+ # Wir laden SQL nur, wenn es da ist (um Abstuerze zu verhindern)
5
  try:
6
  from sqlalchemy import create_engine, text
7
  except ImportError:
8
+ pass
9
 
10
  app = FastAPI()
11
 
12
  @app.get("/")
13
  def home():
14
+ return {"status": "Bereit fuer Vapi!"}
15
 
16
  @app.post("/search")
17
  async def search_knowledge(request: Request):
18
+ # 1. DATEN EMPFANGEN (Vapi-kompatibel)
19
  try:
20
  data = await request.json()
21
+ print(f"📥 Vapi Log: {json.dumps(data)}")
22
  except:
23
  return {"result": "Fehler: Kein JSON."}
24
 
25
  query_text = ""
26
 
27
+ # Wir fischen die Frage aus der verschachtelten Vapi-Struktur:
28
  if "query" in data and isinstance(data["query"], str):
29
  query_text = data["query"]
30
  elif "message" in data and "toolCalls" in data["message"]:
31
  try:
32
+ # Wir holen uns die Argumente aus der Tool-Liste
33
  args = data["message"]["toolCalls"][0]["function"]["arguments"]
34
+ # Manchmal ist es ein String, manchmal ein Dictionary
35
  if isinstance(args, str):
36
  query_text = json.loads(args).get("query", "")
37
  else:
38
  query_text = args.get("query", "")
39
  except:
40
  pass
41
+ elif "toolCall" in data:
42
  try:
43
  args = data["toolCall"]["function"]["arguments"]
44
  if isinstance(args, str):
 
48
  except:
49
  pass
50
 
51
+ print(f"🔎 Erkannte Frage: '{query_text}'")
 
 
 
 
 
 
52
 
53
+ # 2. ANTWORT LOGIK (Hardcoded für deinen Test)
54
  query_lower = query_text.lower()
55
 
56
  if "umsätze" in query_lower or "händler" in query_lower:
 
57
  antwort = "Umsätze sprudeln für Händler, wenn sie genau an dem Ort präsent sind, wo auch ihre Kunden sind."
58
  elif "geo" in query_lower:
59
  antwort = "Geofencing ist eine Technologie, die Aktionen auslöst, wenn ein Gerät eine Zone betritt."
60
  else:
61
  antwort = "Dazu habe ich leider keine Informationen in der Datenbank."
62
 
63
+ # 3. RÜCKGABE
64
  return {
65
  "result": antwort
66
  }