Jesselg commited on
Commit
ec34f49
Β·
verified Β·
1 Parent(s): 70a281f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -68
app.py CHANGED
@@ -1,88 +1,38 @@
1
- import gradio as gr
2
  import requests
3
- from huggingface_hub import InferenceClient
4
 
5
- # Instellingen
6
  WEAVIATE_URL = "https://ojk79flbtdqux0f4uua2qa.c0.europe-west3.gcp.weaviate.cloud/v1/graphql"
7
  WEAVIATE_API_KEY = "jAFExacOCYMfDgbzlVwPIFrrDHxca9rA6GSs"
8
 
9
- client = InferenceClient("mistralai/Mixtral-8x7B-Instruct-v0.1")
10
-
11
-
12
- # πŸ” Functie om data op te halen uit Weaviate
13
- def fetch_relevant_docs(query_text):
14
  query = {
15
- "query": f"""
16
- {{
17
- Get {{
18
  DigiD_Document_Vectorized(
19
- nearText: {{ concepts: ["{query_text}"] }}
20
  limit: 3
21
- ) {{
22
  title
23
  content
24
  url
25
- }}
26
- }}
27
- }}
28
- """
29
  }
30
-
31
 
32
- headers = {"Authorization": f"Bearer {WEAVIATE_API_KEY}", "Content-Type": "application/json"}
33
 
 
 
 
 
34
  print("DEBUG: Volledige Weaviate API response:")
35
- print(response.json()) # Print de volledige Weaviate API response
36
 
37
  if response.status_code == 200:
38
  data = response.json()
39
  documents = data.get("data", {}).get("Get", {}).get("DigiD_Document_Vectorized", [])
 
40
 
41
- print("DEBUG: Weaviate response:", documents) # βœ… Debug response
42
-
43
- if not documents:
44
- return "Er zijn geen relevante documenten gevonden voor deze vraag."
45
-
46
- combined_text = "\n\n".join([f"**{doc['title']}**\n{doc['content']}" for doc in documents])
47
- return combined_text
48
- else:
49
- print(f"❌ Fout bij ophalen van data uit Weaviate: {response.status_code}, {response.text}")
50
- return "Er is een fout opgetreden bij het ophalen van informatie."
51
-
52
-
53
- # πŸ”Ή AI-vraag beantwoorden
54
- def respond(message, history, system_message, max_tokens, temperature, top_p):
55
- documentation = fetch_relevant_docs(message)
56
-
57
- if "Er zijn geen relevante documenten gevonden" in documentation or "Er is een fout opgetreden" in documentation:
58
- return documentation # Geef de foutmelding direct terug
59
-
60
- prompt = f"""
61
- Je bent een slimme assistent bij Logius. Gebruik de volgende documentatie om een bondig en feitelijk antwoord te geven:
62
-
63
- {documentation}
64
-
65
- De gebruiker vraagt: "{message}"
66
- """
67
-
68
- print("DEBUG: LLM Prompt wordt verstuurd naar Mistral:", prompt) # βœ… Debug prompt naar LLM
69
-
70
- response = ""
71
- for message in client.text_generation(prompt, max_new_tokens=max_tokens, stream=True, temperature=temperature, top_p=top_p):
72
- response += message
73
- yield response
74
-
75
-
76
- # πŸ”Ή Gradio chatbot interface
77
- demo = gr.ChatInterface(
78
- respond,
79
- additional_inputs=[
80
- gr.Textbox(value="Je bent een formele, feitelijke en toegankelijke assistent bij Logius.", label="System message"),
81
- gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
82
- gr.Slider(minimum=0.1, maximum=2.0, value=0.2, step=0.1, label="Temperature"),
83
- gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (nucleus sampling)"),
84
- ],
85
- )
86
-
87
- if __name__ == "__main__":
88
- demo.launch()
 
 
1
  import requests
 
2
 
 
3
  WEAVIATE_URL = "https://ojk79flbtdqux0f4uua2qa.c0.europe-west3.gcp.weaviate.cloud/v1/graphql"
4
  WEAVIATE_API_KEY = "jAFExacOCYMfDgbzlVwPIFrrDHxca9rA6GSs"
5
 
6
+ def fetch_relevant_docs(user_query):
 
 
 
 
7
  query = {
8
+ "query": """
9
+ {
10
+ Get {
11
  DigiD_Document_Vectorized(
12
+ nearText: { concepts: ["%s"] }
13
  limit: 3
14
+ ) {
15
  title
16
  content
17
  url
18
+ }
19
+ }
20
+ }
21
+ """ % user_query
22
  }
 
23
 
24
+ headers = {"Authorization": f"Bearer {WEAVIATE_API_KEY}"}
25
 
26
+ # βœ… Zorg ervoor dat `response` wordt gedefinieerd voordat we `json()` aanroepen
27
+ response = requests.post(WEAVIATE_URL, json=query, headers=headers)
28
+
29
+ # βœ… Voeg een print toe om de volledige response te debuggen
30
  print("DEBUG: Volledige Weaviate API response:")
31
+ print(response.text) # Gebruik .text in plaats van .json() om raw output te zien
32
 
33
  if response.status_code == 200:
34
  data = response.json()
35
  documents = data.get("data", {}).get("Get", {}).get("DigiD_Document_Vectorized", [])
36
+ return documents # Hier wordt de data teruggegeven aan de chatbot
37
 
38
+ return [] # Als er een fout is, geef een lege lijst terug