Thiloid commited on
Commit
1877151
·
verified ·
1 Parent(s): 8f6b36f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -121
app.py CHANGED
@@ -1,138 +1,43 @@
1
- import chromadb
2
- import os
3
  import gradio as gr
4
- import json
5
- from huggingface_hub import InferenceClient
6
 
7
- path = '/Users/thiloid/Desktop/Avah/chroma'
8
- if not os.path.exists(path):
9
- path = "/home/user/app/chroma"
 
10
 
11
- print(path)
 
 
12
 
13
- client = chromadb.PersistentClient(path=path)
14
- print(client.heartbeat())
15
- print(client.get_version())
16
- print(client.list_collections())
17
 
18
- from chromadb.utils import embedding_functions
19
- default_ef = embedding_functions.DefaultEmbeddingFunction()
20
- sentence_transformer_ef = embedding_functions.SentenceTransformerEmbeddingFunction(model_name="T-Systems-onsite/cross-en-de-roberta-sentence-transformer")
21
 
22
- collection = client.get_collection(name="chromatsc", embedding_function=sentence_transformer_ef)
23
-
24
- client = InferenceClient("mistralai/Mixtral-8x7B-Instruct-v0.1")
25
-
26
-
27
-
28
- def format_prompt(message, history):
29
- prompt = ""
30
- if history:
31
- user_prompt, bot_response = history[-1]
32
- prompt += f"[INST] {user_prompt} [/INST] {bot_response}</s> "
33
- prompt += f"[INST] {message} [/INST]"
34
- return prompt
35
-
36
-
37
- def response(prompt, history, selected_option, temperature=0.9, max_new_tokens=700, top_p=0.95, repetition_penalty=1.0):
38
- temperature = float(temperature)
39
- if temperature < 1e-2: temperature = 1e-2
40
- top_p = float(top_p)
41
- generate_kwargs = dict(
42
- temperature=temperature,
43
- max_new_tokens=max_new_tokens,
44
- top_p=top_p,
45
- repetition_penalty=repetition_penalty,
46
- do_sample=True,
47
- seed=42,
48
  )
49
- if selected_option == "Keine These ausgewählt":
50
- selected_option = "Die Frage bezieht sich auf keine These speziell und ist somit allgemeiner zu behandeln."
51
- search_prompt = format_prompt(prompt, history)
52
- else:
53
- search_prompt = selected_option
54
- selected_option = "Die Nutzer Frage bezieht sich auf folgende Wahl-O-Mat These: " + selected_option
55
- addon = ""
56
- results=collection.query(
57
- query_texts=[search_prompt],
58
- n_results=8
59
- )
60
-
61
- dists = ["<br><small>(relevance: " + str(round((1 - d) * 100) / 100) + ";" for d in results['distances'][0]]
62
- results = results['documents'][0]
63
- combination = zip(results, dists)
64
- combination = [' '.join(triplets) for triplets in combination]
65
- print(results)
66
- if len(results) > 1:
67
- addon = "Bitte berücksichtige bei deiner Antwort ausschießlich folgende Auszüge aus unserer Wahlhilfe Datenbank, sofern sie für die Antwort erforderlich sind. Beantworte die Frage knapp und präzise. Ignoriere unpassende Datenbank-Auszüge OHNE sie zu kommentieren, zu erwähnen oder aufzulisten:\n" + "\n".join(results)
68
- system = "Du heißt Avah und bist ein deutschsprachiges KI-basiertes Wahlhilfe Beratungssystem zum Wahl-O-Maten für die Bundestagswahl 2021, an welchem insgesamt 38 Parteien teilgenommen haben. Du beinhaltest aber nur Informationen zu den 6 Hauptparteien. Du nimmst selber keine eigene politische Postion ein!" + addon + "\n\nUser-Anliegen:"
69
-
70
- formatted_prompt = format_prompt(system + "\n" + selected_option + "\n" + prompt, history)
71
- stream = client.text_generation(formatted_prompt, **generate_kwargs, stream=True, details=True, return_full_text=False)
72
- output = ""
73
- for response in stream:
74
- output += response.token.text
75
- return output
76
 
77
 
78
- dropdown_options = ["Keine These ausgewählt",
79
- 'Auf allen Autobahnen soll ein generelles Tempolimit gelten.',
80
- 'Deutschland soll seine Verteidigungsausgaben erhöhen.',
81
- 'Bei Bundestagswahlen sollen auch Jugendliche ab 16 Jahren wählen dürfen.',
82
- 'Die Förderung von Windenergie soll beendet werden.',
83
- 'Die Möglichkeiten der Vermieterinnen und Vermieter, Wohnungsmieten zu erhöhen, sollen gesetzlich stärker begrenzt werden.',
84
- 'Impfstoffe gegen Covid-19 sollen weiterhin durch Patente geschützt sein.',
85
- 'Der für das Jahr 2038 geplante Ausstieg aus der Kohleverstromung soll vorgezogen werden.',
86
- 'Alle Erwerbstätigen sollen in der gesetzlichen Rentenversicherung versichert sein müssen.',
87
- 'Das Recht anerkannter Flüchtlinge auf Familiennachzug soll abgeschafft werden.',
88
- 'Auf den Umsatz, der in Deutschland mit digitalen Dienstleistungen erzielt wird, soll eine nationale Steuer erhoben werden.',
89
- 'Die traditionelle Familie aus Vater, Mutter und Kindern soll stärker als andere Lebensgemeinschaften gefördert werden.',
90
- 'Spenden von Unternehmen an Parteien sollen weiterhin erlaubt sein.',
91
- 'Studentinnen und Studenten sollen BAföG unabhängig vom Einkommen ihrer Eltern erhalten.',
92
- 'In Deutschland soll es generell möglich sein, neben der deutschen eine zweite Staatsbürgerschaft zu haben.',
93
- 'Bundesbehörden sollen in ihren Veröffentlichungen unterschiedliche Geschlechtsidentitäten sprachlich berücksichtigen.',
94
- 'Die Ostsee-Pipeline "Nord Stream 2", die Gas von Russland nach Deutschland transportiert, soll wie geplant in Betrieb gehen dürfen.',
95
- 'Der Solidaritätszuschlag soll vollständig abgeschafft werden.',
96
- 'Das Tragen eines Kopftuchs soll Beamtinnen im Dienst generell erlaubt sein.',
97
- 'Die Zulassung von neuen Autos mit Verbrennungsmotor soll auch langfristig möglich sein.',
98
- 'Der Bund soll mehr Zuständigkeiten in der Schulpolitik erhalten.',
99
- 'Der Bund soll Projekte zur Bekämpfung des Antisemitismus stärker finanziell unterstützen.',
100
- 'Chinesische Firmen sollen keine Aufträge für den Ausbau der Kommunikationsinfrastruktur in Deutschland erhalten dürfen.',
101
- 'Der Staat soll weiterhin für Religionsgemeinschaften die Kirchensteuer einziehen.',
102
- 'Der kontrollierte Verkauf von Cannabis soll generell erlaubt sein.',
103
- 'Deutschland soll aus der Europäischen Union austreten.',
104
- 'Die Landeslisten der Parteien für die Wahlen zum Deutschen Bundestag sollen abwechselnd mit Frauen und Männern besetzt werden müssen.',
105
- 'Stationäre Behandlungen im Krankenhaus sollen weiterhin über eine Fallpauschale abgerechnet werden.',
106
- 'Auf hohe Vermögen soll wieder eine Steuer erhoben werden.',
107
- 'Bei der Videoüberwachung öffentlicher Plätze soll Gesichtserkennungssoftware eingesetzt werden dürfen.',
108
- 'Auch Ehepaare ohne Kinder sollen weiterhin steuerlich begünstigt werden.',
109
- 'Ökologische Landwirtschaft soll stärker gefördert werden als konventionelle Landwirtschaft.',
110
- 'Islamische Verbände sollen als Religionsgemeinschaften staatlich anerkannt werden können.',
111
- 'Der staatlich festgelegte Preis für den Ausstoß von CO2 beim Heizen und Autofahren soll stärker steigen als geplant.',
112
- 'Die Schuldenbremse im Grundgesetz soll beibehalten werden.',
113
- 'Asyl soll weiterhin nur politisch Verfolgten gewährt werden.',
114
- 'Der gesetzliche Mindestlohn soll spätestens im Jahr 2022 auf mindestens 12 Euro erhöht werden.',
115
- 'Der Flugverkehr soll höher besteuert werden.',
116
- 'Unternehmen sollen selbst entscheiden, ob sie ihren Beschäftigten das Arbeiten im Homeoffice erlauben.']
117
 
118
- with gr.Blocks(title="test") as demo:
119
- chatbot = gr.Chatbot(value=[[None, "Hallo mein Name ist AVAH (Artificial Voting Advice Helper), deine interaktive Hilfe zum Wahl-O-Maten für die Bundestagswahl 2021. Wenn du Fragen zu Thesen der Wahlhilfe hast, wähle gerne die besagt These aus. Ansonsten kannst du mir auch unabhängig von bestimmten Thesen Fragen stellen."]], render_markdown=True)
120
- dropdown = gr.Dropdown(choices=dropdown_options, label="Wähle eine These aus wenn du willst",value="Keine These ausgewählt")
121
- textbox = gr.Textbox(label="Deine Frage")
122
 
123
- def combined_response(prompt, history, dropdown_value):
124
- answer = response(prompt, history, dropdown_value)
125
- return history + [[prompt, answer]]
126
 
127
- submit_button = gr.Button("Submit")
128
 
129
- submit_button.click(
130
- combined_response,
131
- inputs=[textbox, chatbot, dropdown],
132
- outputs=chatbot,
133
- )
134
 
135
- demo.launch()
136
 
137
  print("Interface up and running!")
138
 
 
 
 
1
  import gradio as gr
 
 
2
 
3
+ from writerai import Writer
4
+ API_KEY = key1 # Replace with your actual Writer API key
5
+ client = Writer(api_key=API_KEY)
6
+ instruct="Du bist ein deutschsprachiger Chatbot namens Machatter, der Studierenden und Angestellten der Universität Mannheim bei Fragen rund um die Universität Mannheim helfen soll. Sie höflich und hilfsbereit und antworte nur auf Deutsch. Gib immer URLs an um den Nutzern weiter zuhelfen, aber nur, wenn du sie in der beigefügten Wissenbasis findest. Ingoriere alle Einträge der Wissenbasis die nicht relevant für die Nutzerfragen sind. Berücksichtige auch Nutzer history um den Kontext zu halten und Aufbauende Fragen beantworten zu können."
7
 
8
+ chat_history = [
9
+ {"role": "system", "content": instruct}
10
+ ]
11
 
12
+ def ask_writer(question, model="palmyra-x-004"):
13
+ """Asks a question to the Writer LLM with RAG from the Knowledge Graph."""
14
+ global chat_history # Use the global chat history
 
15
 
16
+ # Append the user's message to history
17
+ chat_history.append({"role": "user", "content": question})
 
18
 
19
+ # Get response from the chatbot
20
+ question = client.graphs.question(
21
+ graph_ids=[key2],
22
+ question=str(chat_history),
23
+ stream=True,
24
+ subqueries=True,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
 
27
 
28
+ # Extract bot response
29
+ bot_response = ""
30
+ for response in question:
31
+ if response.answer:
32
+ bot_response += response.answer
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
 
 
 
 
 
34
 
35
+ # Append bot response to chat history
36
+ chat_history.append({"role": "assistant", "content": bot_response})
 
37
 
38
+ return bot_response
39
 
 
 
 
 
 
40
 
 
41
 
42
  print("Interface up and running!")
43