Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
# π Functie om data op te halen uit Weaviate
|
| 13 |
-
def fetch_relevant_docs(query_text):
|
| 14 |
query = {
|
| 15 |
-
"query":
|
| 16 |
-
{
|
| 17 |
-
Get {
|
| 18 |
DigiD_Document_Vectorized(
|
| 19 |
-
nearText: {
|
| 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}"
|
| 33 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 34 |
print("DEBUG: Volledige Weaviate API response:")
|
| 35 |
-
print(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 |
-
|
| 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|