cd@bziiit.com
commited on
Commit
·
3a8ddd8
1
Parent(s):
ea077e1
feature : dynamic variables
Browse files- app.py +18 -4
- pages/chatbot.py +1 -1
- pages/form.py +4 -0
- prompt_template.py +4 -0
- rag.py +13 -3
app.py
CHANGED
@@ -1,15 +1,23 @@
|
|
1 |
import streamlit as st
|
2 |
-
import dotenv
|
3 |
import os
|
4 |
|
|
|
5 |
from rag import Rag
|
6 |
from vectore_store.PineconeConnector import PineconeConnector
|
7 |
from vectore_store.VectoreStoreManager import VectoreStoreManager
|
8 |
|
9 |
-
GROUP_NAME = "Groupe 1"
|
10 |
|
11 |
-
|
12 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
if len(st.session_state) == 0:
|
14 |
# Define Vectore store strategy
|
15 |
pinecone_connector = PineconeConnector()
|
@@ -17,6 +25,12 @@ def main():
|
|
17 |
|
18 |
st.session_state["messages"] = []
|
19 |
st.session_state["assistant"] = Rag(vectore_store=vs_manager)
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
|
21 |
st.set_page_config(page_title=GROUP_NAME)
|
22 |
|
|
|
1 |
import streamlit as st
|
|
|
2 |
import os
|
3 |
|
4 |
+
from dotenv import load_dotenv
|
5 |
from rag import Rag
|
6 |
from vectore_store.PineconeConnector import PineconeConnector
|
7 |
from vectore_store.VectoreStoreManager import VectoreStoreManager
|
8 |
|
|
|
9 |
|
10 |
+
load_dotenv()
|
11 |
+
|
12 |
+
GROUP_NAME = os.environ.get("APP_NAME")
|
13 |
+
|
14 |
+
def init_app():
|
15 |
+
|
16 |
+
# Read the environment variable and create a dictionary
|
17 |
+
variables = os.environ.get('VARIABLES')
|
18 |
+
keys = variables.split(',')
|
19 |
+
data_dict = {key: '' for key in keys} # Initialize with empty values
|
20 |
+
|
21 |
if len(st.session_state) == 0:
|
22 |
# Define Vectore store strategy
|
23 |
pinecone_connector = PineconeConnector()
|
|
|
25 |
|
26 |
st.session_state["messages"] = []
|
27 |
st.session_state["assistant"] = Rag(vectore_store=vs_manager)
|
28 |
+
st.session_state["data_dict"] = data_dict
|
29 |
+
|
30 |
+
|
31 |
+
def main():
|
32 |
+
|
33 |
+
init_app()
|
34 |
|
35 |
st.set_page_config(page_title=GROUP_NAME)
|
36 |
|
pages/chatbot.py
CHANGED
@@ -14,7 +14,7 @@ def process_input():
|
|
14 |
|
15 |
|
16 |
with st.session_state["thinking_spinner"], st.spinner(f"Je réfléchis"):
|
17 |
-
agent_text = st.session_state["assistant"].ask(user_text, st.session_state["messages"] if "messages" in st.session_state else [])
|
18 |
|
19 |
st.session_state["messages"].append((user_text, True))
|
20 |
st.session_state["messages"].append((agent_text, False))
|
|
|
14 |
|
15 |
|
16 |
with st.session_state["thinking_spinner"], st.spinner(f"Je réfléchis"):
|
17 |
+
agent_text = st.session_state["assistant"].ask(user_text, st.session_state["messages"] if "messages" in st.session_state else [], variables=st.session_state["data_dict"])
|
18 |
|
19 |
st.session_state["messages"].append((user_text, True))
|
20 |
st.session_state["messages"].append((agent_text, False))
|
pages/form.py
CHANGED
@@ -3,4 +3,8 @@ import streamlit as st
|
|
3 |
def page():
|
4 |
st.subheader("Définissez vos paramètres")
|
5 |
|
|
|
|
|
|
|
|
|
6 |
page()
|
|
|
3 |
def page():
|
4 |
st.subheader("Définissez vos paramètres")
|
5 |
|
6 |
+
for key in st.session_state.data_dict.keys():
|
7 |
+
value = st.text_input(label=key, value=st.session_state.data_dict[key])
|
8 |
+
st.session_state.data_dict[key] = value # Update the session state with user input
|
9 |
+
|
10 |
page()
|
prompt_template.py
CHANGED
@@ -1,5 +1,9 @@
|
|
1 |
base_template = '''
|
2 |
|
|
|
|
|
|
|
|
|
3 |
Documents partagées : {commonContext}
|
4 |
Document de référence : {documentContext}
|
5 |
|
|
|
1 |
base_template = '''
|
2 |
|
3 |
+
Paramètre 1 : {param_1}
|
4 |
+
Paramètre 2 : {param_2}
|
5 |
+
Paramètre 3 : {param_3}
|
6 |
+
|
7 |
Documents partagées : {commonContext}
|
8 |
Document de référence : {documentContext}
|
9 |
|
rag.py
CHANGED
@@ -71,7 +71,7 @@ class Rag:
|
|
71 |
},
|
72 |
)
|
73 |
|
74 |
-
def ask(self, query: str, messages: list):
|
75 |
print(self.model)
|
76 |
self.chain = self.prompt | self.model | StrOutputParser()
|
77 |
|
@@ -84,12 +84,22 @@ class Rag:
|
|
84 |
# Retrieve the VectoreStore
|
85 |
contextCommon = self.vector_store.retriever(query, self.embedding)
|
86 |
|
87 |
-
|
|
|
88 |
"query": query,
|
89 |
"documentContext": documentContext,
|
90 |
"commonContext": contextCommon,
|
91 |
"messages": messages
|
92 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
|
94 |
def clear(self):
|
95 |
self.document_vector_store = None
|
|
|
71 |
},
|
72 |
)
|
73 |
|
74 |
+
def ask(self, query: str, messages: list, variables: dict = {}):
|
75 |
print(self.model)
|
76 |
self.chain = self.prompt | self.model | StrOutputParser()
|
77 |
|
|
|
84 |
# Retrieve the VectoreStore
|
85 |
contextCommon = self.vector_store.retriever(query, self.embedding)
|
86 |
|
87 |
+
# Dictionnaire de base avec les variables principales
|
88 |
+
chain_input = {
|
89 |
"query": query,
|
90 |
"documentContext": documentContext,
|
91 |
"commonContext": contextCommon,
|
92 |
"messages": messages
|
93 |
+
}
|
94 |
+
|
95 |
+
# Suppression des valeurs nulles (facultatif)
|
96 |
+
chain_input = {k: v for k, v in chain_input.items() if v is not None}
|
97 |
+
|
98 |
+
# Ajout dynamique d'autres variables dans **extra_vars
|
99 |
+
chain_input.update(variables)
|
100 |
+
print("chain_input", chain_input)
|
101 |
+
|
102 |
+
return self.chain.invoke(chain_input)
|
103 |
|
104 |
def clear(self):
|
105 |
self.document_vector_store = None
|