HassanSaado commited on
Commit
44f58b2
·
1 Parent(s): 8b64abf

added check for relevance

Browse files
.gitignore ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ .env
2
+
RAG_class.py CHANGED
@@ -3,6 +3,9 @@ from sentence_transformers import SentenceTransformer
3
  import chromadb
4
  import uuid
5
  import os
 
 
 
6
 
7
  class RAG_1177:
8
  def __init__(self):
@@ -44,3 +47,33 @@ class RAG_1177:
44
  self.db.add(documents=docs, embeddings=emb, metadatas=urls, ids=ids)
45
  return
46
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  import chromadb
4
  import uuid
5
  import os
6
+ from dotenv import load_dotenv
7
+ load_dotenv()
8
+ from openai import OpenAI
9
 
10
  class RAG_1177:
11
  def __init__(self):
 
47
  self.db.add(documents=docs, embeddings=emb, metadatas=urls, ids=ids)
48
  return
49
 
50
+
51
+ def relevant_question(self, query):
52
+
53
+ history = []
54
+ system_prompt = """Du ska bedömma frågor och svara endast JA eller NEJ.
55
+
56
+ Om frågan är relaterad till 1177 sjukrådgivningsdatabas, hälsa,vård, välmående, sjukrådgivning ska du svara "JA".
57
+
58
+ Om frågan inte är relaterad till ovanämnde ämnen ska du svara NEJ"""
59
+
60
+ user_prompt = f"""Svara endast JA eller NEJ ifall följande fråga är är relevant till 1177, sjukrådgivning, hälsa, vård och välmående
61
+
62
+ Frågan är: {query}"""
63
+
64
+
65
+ history.append({"role": "system", "content": system_prompt})
66
+ history.append({"role": "user", "content": user_prompt})
67
+
68
+
69
+ client = OpenAI()
70
+ response = client.chat.completions.create(
71
+ model='gpt-3.5-turbo',
72
+ messages=history,
73
+ temperature=0.4,
74
+ stream=False
75
+ )
76
+ return (response.choices[0].message.content)
77
+
78
+
79
+
__pycache__/RAG_class.cpython-311.pyc ADDED
Binary file (4.72 kB). View file
 
app.py CHANGED
@@ -55,14 +55,17 @@ description = """<ul>
55
  <p>Du är varmt välkommen med frågor eller feedback: [email protected], <a href="https://www.linkedin.com/in/hassan-saado/">Linkedin</a></li></p>"""
56
 
57
 
 
58
  def predict(message, history):
59
  # Initialize RAG model
60
  rag = RAG_1177()
61
-
 
 
62
  # Prepare history in OpenAI format
63
  history_openai_format = []
64
  for human, assistant in history:
65
- history_openai_format.append({"role": "user", "content": human })
66
  history_openai_format.append({"role": "assistant", "content": assistant})
67
 
68
  documents, urls = rag.retrieve(message, 3)
@@ -70,6 +73,9 @@ def predict(message, history):
70
  if not history:
71
  history_openai_format.append({"role": "system", "content": system_prompt})
72
 
 
 
 
73
  user_prompt = f"""Fråga: {message}
74
 
75
  Information från 1177.se:
@@ -105,7 +111,7 @@ def main():
105
 
106
  ChatInterface(predict, textbox=textbox, chatbot=chatbot, title="Välkommen till 1177 AI-chatbot! 🔍🤒", theme=my_custom_theme,submit_btn="Skicka",
107
  retry_btn="🔄Försök igen", undo_btn="↩️ Ångra", clear_btn="🗑️ Rensa",
108
- examples=examples, cache_examples=False, description=description).launch(share=True)
109
 
110
  if __name__ == "__main__":
111
  main()
 
55
  <p>Du är varmt välkommen med frågor eller feedback: [email protected], <a href="https://www.linkedin.com/in/hassan-saado/">Linkedin</a></li></p>"""
56
 
57
 
58
+
59
  def predict(message, history):
60
  # Initialize RAG model
61
  rag = RAG_1177()
62
+ print(message)
63
+ relevance_check = rag.relevant_question(message)
64
+
65
  # Prepare history in OpenAI format
66
  history_openai_format = []
67
  for human, assistant in history:
68
+ history_openai_format.append({"role": "user", "content": human})
69
  history_openai_format.append({"role": "assistant", "content": assistant})
70
 
71
  documents, urls = rag.retrieve(message, 3)
 
73
  if not history:
74
  history_openai_format.append({"role": "system", "content": system_prompt})
75
 
76
+ if relevance_check == "NEJ":
77
+ message = "Denna fråga är helt orrelevant och håller sig inte till ämnet. Ge inga referenser"
78
+
79
  user_prompt = f"""Fråga: {message}
80
 
81
  Information från 1177.se:
 
111
 
112
  ChatInterface(predict, textbox=textbox, chatbot=chatbot, title="Välkommen till 1177 AI-chatbot! 🔍🤒", theme=my_custom_theme,submit_btn="Skicka",
113
  retry_btn="🔄Försök igen", undo_btn="↩️ Ångra", clear_btn="🗑️ Rensa",
114
+ examples=examples, cache_examples=False, description=description).launch(share=False)
115
 
116
  if __name__ == "__main__":
117
  main()
test_notebook.ipynb ADDED
@@ -0,0 +1,131 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 22,
6
+ "metadata": {},
7
+ "outputs": [
8
+ {
9
+ "name": "stdout",
10
+ "output_type": "stream",
11
+ "text": [
12
+ "JA\n"
13
+ ]
14
+ }
15
+ ],
16
+ "source": [
17
+ "from openai import OpenAI\n",
18
+ "from dotenv import load_dotenv\n",
19
+ "load_dotenv()\n",
20
+ "\n",
21
+ "history = []\n",
22
+ "\n",
23
+ "system_prompt = \"\"\"Du ska bedömma frågor och svara endast JA eller NEJ.\n",
24
+ "\n",
25
+ "Om frågan är relaterad till 1177 sjukrådgivningsdatabas, hälsa,vård, välmående, sjukrådgivning ska du svara \"JA\".\n",
26
+ "\n",
27
+ "Om frågan inte är relaterad till ovanämnde ämnen ska du svara NEJ\"\"\"\n",
28
+ "\n",
29
+ "\n",
30
+ "fråga = \"Hur kan jag lindra min pollenallergi?\"\n",
31
+ "\n",
32
+ "user_prompt = f\"\"\"Svara endast JA eller NEJ ifall följande fråga är är relevant till 1177, sjukrådgivning, hälsa, vård och välmående\n",
33
+ "\n",
34
+ "Frågan är: {fråga}\"\"\"\n",
35
+ "\n",
36
+ "\n",
37
+ "history.append({\"role\": \"system\", \"content\": system_prompt})\n",
38
+ "history.append({\"role\": \"user\", \"content\": user_prompt})\n",
39
+ "\n",
40
+ "\n",
41
+ "client = OpenAI()\n",
42
+ "response = client.chat.completions.create(\n",
43
+ " model='gpt-3.5-turbo',\n",
44
+ " messages=history,\n",
45
+ " temperature=0.4,\n",
46
+ " stream=False\n",
47
+ " )\n",
48
+ "\n",
49
+ "print(response.choices[0].message.content)"
50
+ ]
51
+ },
52
+ {
53
+ "cell_type": "code",
54
+ "execution_count": 21,
55
+ "metadata": {},
56
+ "outputs": [
57
+ {
58
+ "name": "stdout",
59
+ "output_type": "stream",
60
+ "text": [
61
+ "Svara endast JA eller NEJ ifall följande fråga är är relevant till 1177, sjukrådgivning, hälsa, vård och välmående\n",
62
+ "\n",
63
+ "Frågan är: Hur kan jag förbättra min sömn?\n"
64
+ ]
65
+ }
66
+ ],
67
+ "source": [
68
+ "print(user_prompt)"
69
+ ]
70
+ },
71
+ {
72
+ "cell_type": "code",
73
+ "execution_count": null,
74
+ "metadata": {},
75
+ "outputs": [],
76
+ "source": [
77
+ "response = client.chat.completions.create(\n",
78
+ " model='gpt-3.5-turbo',\n",
79
+ " messages=history,\n",
80
+ " temperature=0.4,\n",
81
+ " stream=True\n",
82
+ " )"
83
+ ]
84
+ },
85
+ {
86
+ "cell_type": "code",
87
+ "execution_count": 29,
88
+ "metadata": {},
89
+ "outputs": [
90
+ {
91
+ "name": "stdout",
92
+ "output_type": "stream",
93
+ "text": [
94
+ "NEJ\n"
95
+ ]
96
+ }
97
+ ],
98
+ "source": [
99
+ "from RAG_class import RAG_1177\n",
100
+ "rag = RAG_1177()\n",
101
+ "\n",
102
+ "fråga = \"Hur lagar jag en banankaka?\"\n",
103
+ "svar = rag.relevant_question(fråga)\n",
104
+ "\n",
105
+ "print(svar)\n",
106
+ "\n"
107
+ ]
108
+ }
109
+ ],
110
+ "metadata": {
111
+ "kernelspec": {
112
+ "display_name": "Python 3",
113
+ "language": "python",
114
+ "name": "python3"
115
+ },
116
+ "language_info": {
117
+ "codemirror_mode": {
118
+ "name": "ipython",
119
+ "version": 3
120
+ },
121
+ "file_extension": ".py",
122
+ "mimetype": "text/x-python",
123
+ "name": "python",
124
+ "nbconvert_exporter": "python",
125
+ "pygments_lexer": "ipython3",
126
+ "version": "3.11.9"
127
+ }
128
+ },
129
+ "nbformat": 4,
130
+ "nbformat_minor": 2
131
+ }