timfe commited on
Commit
d5aceae
·
1 Parent(s): 0fbb64e

added persist directory for ChromaDB

Browse files
Files changed (1) hide show
  1. app.py +42 -11
app.py CHANGED
@@ -1,7 +1,7 @@
1
  import streamlit as st
2
  from openai import OpenAI
3
  import glob
4
-
5
  from langchain_community.vectorstores import Chroma
6
  from langchain_core.output_parsers import StrOutputParser
7
  from langchain_core.runnables import RunnablePassthrough
@@ -27,29 +27,60 @@ OPENAI_API_KEY = st.secrets["OPENAI_API_KEY"]
27
  # docs.append(loader.load()[0])
28
 
29
  # Config
 
 
 
 
 
 
 
 
 
 
 
30
  with st.sidebar:
31
- model = st.selectbox("Model name", ["gpt-3.5-turbo"], disabled=True)
32
- temperature = st.number_input("Temperature", value=0.0, min_value=0.0, step=0.2, max_value=1.0, placeholder=0.0)
33
- k = st.number_input("Number of documents to include", value=3, min_value=1, step=1, placeholder=3)
34
- if st.toggle("Splitting", value=True):
35
- chunk_size = st.number_input("Chunk size", value=500, step=250, placeholder=500) # Defines the chunks in amount of tokens in which the files are split. Also defines the amount of tokens that are feeded into the context.
36
- chunk_overlap = st.number_input("Chunk overlap", value=0, step=10, placeholder=0)
 
 
 
 
37
  text_splitter = RecursiveCharacterTextSplitter(chunk_size=chunk_size, chunk_overlap=chunk_overlap)
38
  splits = text_splitter.split_documents(docs)
39
- vectorstore = Chroma.from_documents(documents=splits, embedding=OpenAIEmbeddings())
 
 
 
40
  else:
41
- vectorstore = Chroma.from_documents(documents=docs, embedding=OpenAIEmbeddings())
42
 
43
 
44
  prompt_template ="""
45
- Du heißt "Volker". Du bist ein Assistent für die Beantwortung von Fragen zu Long-Covid (Post-Covid synonym verwenden).
 
 
 
46
  Du weißt nichts über Krankheiten wie 'tumorbedingte Fatigue', 'Multiple Sklerose', 'Hashimoto-Thyreoditis' oder 'Krebs'.
47
  Werden Fragen zu diesen Erkrankungen gestellt, beantworte sie mit "Dazu fehlen mir Informationen".
 
 
 
 
 
 
 
48
  Du gibst keine Ratschläge zur Diagnose, Behandlung oder Therapie.
49
  Wenn du die Antwort nicht weißt, sag einfach, dass du es nicht weißt.
 
 
 
50
  Antworte immer in ganzen Sätzen und verwende korrekte Grammatik und Rechtschreibung. Antworte nur auf Deutsch.
51
  Antworte kurz mit maximal fünf Sätzen außer es wird von dir eine ausführlichere Antwort verlangt.
52
- Verwende zur Beantwortung der Frage nur den retriever Kontext.
53
 
54
  Frage: {question}
55
  Kontext: {context}
 
1
  import streamlit as st
2
  from openai import OpenAI
3
  import glob
4
+ import pickle
5
  from langchain_community.vectorstores import Chroma
6
  from langchain_core.output_parsers import StrOutputParser
7
  from langchain_core.runnables import RunnablePassthrough
 
27
  # docs.append(loader.load()[0])
28
 
29
  # Config
30
+
31
+ # Default
32
+ def_model = "gpt-3.5-turbo"
33
+ def_temperature = 0.0
34
+ def_k = 3
35
+ def_chunk_size = 500
36
+ def_chunk_overlap = 0
37
+ directory = "./chroma_db"
38
+
39
+ st. set_page_config(initial_sidebar_state="collapsed")
40
+
41
  with st.sidebar:
42
+ if st.toggle("Experimental"):
43
+ disabled = False
44
+ else:
45
+ disabled = True
46
+ model = st.selectbox("Model name", [def_model], disabled=True)
47
+ temperature = st.number_input("Temperature", value=def_temperature, min_value=0.0, step=0.2, max_value=1.0, placeholder=def_temperature, disabled=disabled)
48
+ k = st.number_input("Number of documents to include", value=def_k, min_value=1, step=1, placeholder=def_k, disabled=disabled)
49
+ if st.toggle("Splitting", value=True, disabled=disabled):
50
+ chunk_size = st.number_input("Chunk size", value=def_chunk_size, step=250, placeholder=def_chunk_size, disabled=disabled) # Defines the chunks in amount of tokens in which the files are split. Also defines the amount of tokens that are feeded into the context.
51
+ chunk_overlap = st.number_input("Chunk overlap", value=def_chunk_overlap, step=10, placeholder=def_chunk_overlap, disabled=disabled)
52
  text_splitter = RecursiveCharacterTextSplitter(chunk_size=chunk_size, chunk_overlap=chunk_overlap)
53
  splits = text_splitter.split_documents(docs)
54
+ vectorstore = Chroma.from_documents(documents=splits, embedding=OpenAIEmbeddings(), persist_directory=directory)
55
+ if chunk_size != def_chunk_size | chunk_overlap != def_chunk_overlap:
56
+ splits = text_splitter.split_documents(docs)
57
+ vectorstore = Chroma.from_documents(documents=splits, embedding=OpenAIEmbeddings())
58
  else:
59
+ vectorstore = Chroma.from_documents(documents=docs, embedding=OpenAIEmbeddings(), persist_directory=f"{directory}/complete")
60
 
61
 
62
  prompt_template ="""
63
+ ###
64
+ Wenn du gefragt wirst wer du bist: Du heißt "Volker". Du bist ein Assistent für die Beantwortung von Fragen zu Long-Covid (Post-Covid synonym verwenden).
65
+
66
+ ###
67
  Du weißt nichts über Krankheiten wie 'tumorbedingte Fatigue', 'Multiple Sklerose', 'Hashimoto-Thyreoditis' oder 'Krebs'.
68
  Werden Fragen zu diesen Erkrankungen gestellt, beantworte sie mit "Dazu fehlen mir Informationen".
69
+
70
+ ###
71
+ Du beantwortest keine Fragen zu 'Tod', 'Suizid', 'Selbstverletzung', oder anderen potenziell schädigenden Themen.
72
+ Werden Fragen zum 'Tod' gestellt, verweise auf den behandelnden Arzt.
73
+ Bei Fragen zu Suizid verweise auf die Telefonseelsorge: 0800 1110111
74
+
75
+ ###
76
  Du gibst keine Ratschläge zur Diagnose, Behandlung oder Therapie.
77
  Wenn du die Antwort nicht weißt, sag einfach, dass du es nicht weißt.
78
+
79
+ ###
80
+ Wenn du allgemeine unspezifische Fragen gestellt bekommst, antworte oberflächlich und frage nach einer präziseren Fragestellung.
81
  Antworte immer in ganzen Sätzen und verwende korrekte Grammatik und Rechtschreibung. Antworte nur auf Deutsch.
82
  Antworte kurz mit maximal fünf Sätzen außer es wird von dir eine ausführlichere Antwort verlangt.
83
+ Verwende zur Beantwortung der Frage nur den vorhandenen Kontext.
84
 
85
  Frage: {question}
86
  Kontext: {context}