Jesselg commited on
Commit
5982b60
·
verified ·
1 Parent(s): f1ec73f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -71
app.py CHANGED
@@ -2,39 +2,26 @@ import os
2
  import gradio as gr
3
  import requests
4
 
5
- # API Keys ophalen uit Hugging Face Secrets
6
  WEAVIATE_API_KEY = os.getenv("WEAVIATE_APIKEY")
7
  VLAM_API_KEY = os.getenv("VLAM_APIKEY")
8
 
9
- # Weaviate-instellingen
10
  WEAVIATE_URL = "https://k6hr14w1r8gwkdctkxha.c0.europe-west3.gcp.weaviate.cloud/v1/graphql"
11
- HEADERS = {
12
- "Authorization": f"Bearer {WEAVIATE_API_KEY}",
13
- "Content-Type": "application/json"
14
- }
15
 
16
- # **System Prompt**
17
- SYSTEM_PROMPT = (
18
- "Je bent een formele en feitelijke DigiD-assistent bij Logius. "
19
- "Je helpt gebruikers bij het aansluiten op DigiD. "
20
- "Je antwoorden zijn kort, bondig, feitelijk en eenvoudig te begrijpen.\n\n"
21
- "Gebruik ALLEEN de onderstaande documentatie om een antwoord te genereren. "
22
- "Als je het antwoord niet weet, zeg dan dat je het niet weet en verwijs de gebruiker naar Logius."
23
- )
24
-
25
- # **Functie om relevante documenten uit Weaviate op te halen**
26
  def fetch_relevant_docs(user_query):
27
  query = {
28
  "query": f"""
29
  {{
30
  Get {{
31
  DigiDDocument(
32
- nearText: {{ concepts: ["{user_query}"], certainty: 0.6 }}, # Lagere drempel
33
- limit: 5 # Meer documenten teruggeven
34
  ) {{
35
  title
36
  content
37
- url
38
  }}
39
  }}
40
  }}
@@ -44,62 +31,33 @@ def fetch_relevant_docs(user_query):
44
  if response.status_code == 200:
45
  data = response.json()
46
  documents = data.get("data", {}).get("Get", {}).get("DigiDDocument", [])
47
- if not documents:
48
- print(f"⚠️ Geen documenten gevonden voor: {user_query}")
49
- return None
50
- return "\n\n".join([f"{doc['content']}" for doc in documents])
51
- else:
52
- print(f"❌ Weaviate-fout: {response.status_code}")
53
- return None
54
 
55
- # **Functie om antwoord te genereren met VLAM.AI**
56
  def generate_answer(vraag, history=[]):
57
- messages = [{"role": "system", "content": SYSTEM_PROMPT}]
58
-
59
- # **Relevante documentatie ophalen**
60
- documentatie = fetch_relevant_docs(vraag)
61
- if documentatie:
62
- messages.append({"role": "system", "content": f"Hier is de beschikbare documentatie:\n\n{documentatie}"})
63
- else:
64
- messages.append({"role": "system", "content": "Er is geen relevante documentatie gevonden. Probeer het opnieuw of neem contact op met Logius."})
65
-
66
- # **Loop door de gespreksgeschiedenis**
67
- for turn in history:
68
- if turn[0]:
69
- messages.append({"role": "user", "content": turn[0]})
70
- if turn[1]:
71
- messages.append({"role": "assistant", "content": turn[1]})
72
-
73
- # Voeg de huidige gebruikersvraag toe
74
- messages.append({"role": "user", "content": vraag})
75
 
76
- # **VLAM.AI API instellingen**
77
- VLAM_API_URL = "https://api.demo.vlam.ai/v2.1/projects/poc/openai-compatible/v1/chat/completions"
78
- VLAM_HEADERS = {
79
- "Authorization": f"Bearer {VLAM_API_KEY}",
80
- "Content-Type": "application/json"
81
- }
82
- VLAM_DATA = {
83
- "model": "ubiops-deployment/logius-pc-mistralmedium-flexibel//chat-model",
84
- "messages": messages,
85
- "max_tokens": 512,
86
- "temperature": 0.2
87
- }
88
 
89
- # **API-aanroep naar VLAM.AI**
90
  response = requests.post(
91
- VLAM_API_URL,
92
- headers=VLAM_HEADERS,
93
- json=VLAM_DATA
 
 
 
 
94
  )
 
95
 
96
- if response.status_code == 200:
97
- antwoord = response.json()["choices"][0]["message"]["content"]
98
- return antwoord
99
- else:
100
- return f"⚠️ Fout bij genereren antwoord: {response.status_code}, {response.text}"
101
-
102
- # **Gradio UI met gespreksgeschiedenis**
103
- demo = gr.ChatInterface(generate_answer, chatbot=gr.Chatbot(), title="DigiD Assistent (VLAM.AI)")
104
- if __name__ == "__main__":
105
- demo.launch()
 
2
  import gradio as gr
3
  import requests
4
 
5
+ # API Keys (via Hugging Face Secrets)
6
  WEAVIATE_API_KEY = os.getenv("WEAVIATE_APIKEY")
7
  VLAM_API_KEY = os.getenv("VLAM_APIKEY")
8
 
9
+ # Weaviate Config
10
  WEAVIATE_URL = "https://k6hr14w1r8gwkdctkxha.c0.europe-west3.gcp.weaviate.cloud/v1/graphql"
11
+ HEADERS = {"Authorization": f"Bearer {WEAVIATE_API_KEY}", "Content-Type": "application/json"}
 
 
 
12
 
13
+ # Functie om documenten op te halen
 
 
 
 
 
 
 
 
 
14
  def fetch_relevant_docs(user_query):
15
  query = {
16
  "query": f"""
17
  {{
18
  Get {{
19
  DigiDDocument(
20
+ nearText: {{ concepts: ["{user_query}"] }},
21
+ limit: 3
22
  ) {{
23
  title
24
  content
 
25
  }}
26
  }}
27
  }}
 
31
  if response.status_code == 200:
32
  data = response.json()
33
  documents = data.get("data", {}).get("Get", {}).get("DigiDDocument", [])
34
+ if documents:
35
+ return "\n\n".join([f"{doc['content']}" for doc in documents])
36
+ return None
 
 
 
 
37
 
38
+ # Functie om antwoord te genereren met VLAM.AI
39
  def generate_answer(vraag, history=[]):
40
+ context = fetch_relevant_docs(vraag)
41
+ if not context:
42
+ return "Ik kan geen relevante documentatie vinden. Probeer een andere vraag."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
 
44
+ messages = [
45
+ {"role": "system", "content": "Je bent een DigiD-assistent. Gebruik de context om antwoord te geven."},
46
+ {"role": "system", "content": f"Context:\n{context}"},
47
+ {"role": "user", "content": vraag}
48
+ ]
 
 
 
 
 
 
 
49
 
 
50
  response = requests.post(
51
+ "https://api.demo.vlam.ai/v2.1/projects/poc/openai-compatible/v1/chat/completions",
52
+ headers={"Authorization": f"Bearer {VLAM_API_KEY}"},
53
+ json={
54
+ "model": "ubiops-deployment/logius-pc-mistralmedium-flexibel//chat-model",
55
+ "messages": messages,
56
+ "max_tokens": 512
57
+ }
58
  )
59
+ return response.json()["choices"][0]["message"]["content"]
60
 
61
+ # Gradio Interface
62
+ demo = gr.ChatInterface(generate_answer, title="DigiD Chatbot")
63
+ demo.launch()