Update main.py
Browse files
main.py
CHANGED
@@ -29,6 +29,7 @@ from chainlit.playground.providers.langchain import LangchainGenericProvider
|
|
29 |
|
30 |
from deep_translator import GoogleTranslator
|
31 |
|
|
|
32 |
@cl.password_auth_callback
|
33 |
def auth_callback(username: str, password: str):
|
34 |
auth = json.loads(os.environ['CHAINLIT_AUTH_LOGIN'])
|
@@ -73,7 +74,7 @@ def VectorDatabase(categorie):
|
|
73 |
vectorstore = PineconeVectorStore(
|
74 |
index_name=index_name, embedding=embeddings, pinecone_api_key=os.getenv('PINECONE_API_KEY')
|
75 |
)
|
76 |
-
elif categorie == "year":
|
77 |
index_name = "all-jdlp"
|
78 |
embeddings = HuggingFaceEmbeddings()
|
79 |
vectorstore = PineconeVectorStore(
|
@@ -96,6 +97,8 @@ def Retriever(categorie):
|
|
96 |
retriever = vectorstore.as_retriever(search_type="similarity_score_threshold", search_kwargs={"score_threshold": .7, "k": 6,"filter": {'year': {'$gte': 2019}}})
|
97 |
elif categorie == "skills":
|
98 |
retriever = vectorstore.as_retriever(search_type="similarity_score_threshold", search_kwargs={"score_threshold": .7, "k": 150,"filter": {'file': {'$eq': 'competences-master-CFA.csv'}}})
|
|
|
|
|
99 |
return retriever
|
100 |
|
101 |
def Search(input, categorie):
|
@@ -136,6 +139,16 @@ def Search(input, categorie):
|
|
136 |
if countOffres <= 15:
|
137 |
countOffres = countOffres + 1
|
138 |
sources_offres = sources_offres + str(countOffres) + ". " + searchOffres[i].metadata['Poste'] + " (type de contrat : " + searchOffres[i].metadata['Contrat'] + ")\n"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
139 |
|
140 |
results = [sources_text, verbatim_text, sources_offres]
|
141 |
return results
|
@@ -143,17 +156,17 @@ def Search(input, categorie):
|
|
143 |
@cl.on_chat_start
|
144 |
async def on_chat_start():
|
145 |
await cl.Message(f"> REVIEWSTREAM").send()
|
146 |
-
sources_videos = [
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
]
|
153 |
-
await cl.Message(
|
154 |
-
|
155 |
-
|
156 |
-
).send()
|
157 |
|
158 |
res = await cl.AskActionMessage(
|
159 |
content="<div style='width:100%;text-align:center'>Sélectionnez une source documentaire</div>",
|
@@ -163,7 +176,7 @@ async def on_chat_start():
|
|
163 |
cl.Action(name="year", value="Journée de La Pédagogie", label="👨🏫 Journée de La Pédagogie : exemple : «Quelles sont les bonnes pratiques des plateformes de e-learning?»"),
|
164 |
cl.Action(name="skills", value="Compétences du CFA Descartes", label="🧑🏻🎓 Les compétences des masters du CFA Descartes : exemple : «Quels sont les Master qui dispensent des compétences en marketing dispensées au CFA?»"),
|
165 |
cl.Action(name="OF", value="Formations Gustave Eiffel", label="🎓 Les formations de l'université Gustave Eiffel : exemple : «Quels sont les formations et les métiers possibles si on est créatif?»"),
|
166 |
-
cl.Action(name="
|
167 |
cl.Action(name="offreST", value="Offres d'emploi France Travail", label="💼 Les offres d'emploi de France Travail : exemple : «Quels sont les types de contrat proposés par les recruteurs?»"),
|
168 |
|
169 |
],
|
|
|
29 |
|
30 |
from deep_translator import GoogleTranslator
|
31 |
|
32 |
+
from datetime import timedelta
|
33 |
@cl.password_auth_callback
|
34 |
def auth_callback(username: str, password: str):
|
35 |
auth = json.loads(os.environ['CHAINLIT_AUTH_LOGIN'])
|
|
|
74 |
vectorstore = PineconeVectorStore(
|
75 |
index_name=index_name, embedding=embeddings, pinecone_api_key=os.getenv('PINECONE_API_KEY')
|
76 |
)
|
77 |
+
elif categorie == "year" or categorie == "videosTC":
|
78 |
index_name = "all-jdlp"
|
79 |
embeddings = HuggingFaceEmbeddings()
|
80 |
vectorstore = PineconeVectorStore(
|
|
|
97 |
retriever = vectorstore.as_retriever(search_type="similarity_score_threshold", search_kwargs={"score_threshold": .7, "k": 6,"filter": {'year': {'$gte': 2019}}})
|
98 |
elif categorie == "skills":
|
99 |
retriever = vectorstore.as_retriever(search_type="similarity_score_threshold", search_kwargs={"score_threshold": .7, "k": 150,"filter": {'file': {'$eq': 'competences-master-CFA.csv'}}})
|
100 |
+
elif categorie == "videosTC":
|
101 |
+
retriever = vectorstore.as_retriever(search_type="similarity_score_threshold", search_kwargs={"score_threshold": .7, "k": 150,"filter": {"title": {"$eq": "videos-confinement-timeline"}}})
|
102 |
return retriever
|
103 |
|
104 |
def Search(input, categorie):
|
|
|
139 |
if countOffres <= 15:
|
140 |
countOffres = countOffres + 1
|
141 |
sources_offres = sources_offres + str(countOffres) + ". " + searchOffres[i].metadata['Poste'] + " (type de contrat : " + searchOffres[i].metadata['Contrat'] + ")\n"
|
142 |
+
elif categorie == "videosTC":
|
143 |
+
search = vectorstore.similarity_search(input,k=50, filter={"title": {"$eq": "videos-confinement-timeline"}})
|
144 |
+
for i in range(0,len(search)):
|
145 |
+
if count <= 15:
|
146 |
+
count = count + 1
|
147 |
+
timeSeq = search[i].metadata["time"]
|
148 |
+
timeSeqRound = round(timeSeq)
|
149 |
+
time = timedelta(seconds=timeSeqRound)
|
150 |
+
sources_text = sources_text + '<div style="display:inline-block;text-align:center;font-size:0.7rem;max-height:260px;width:33%;min-width:33%;max-width:33%;overflow:hidden"><a target="_blank" title="' + search[i].metadata['titre'] + ' : ...' + search[i].page_content + '" href="' + search[i].metadata['video'] + '#start=' + str(timeSeq) + '"><img src="' + search[i].metadata['image'] + '" width="100%" alt="' + search[i].metadata['titre'] + ' : ...' + search[i].page_content + '"/><p>' + str(time) + ' : ...' + search[i].page_content + '</p></a></div>'
|
151 |
+
verbatim_text = verbatim_text + "<p style='font-size:0.8rem'>" + str(count) + ". " + search[i].metadata['titre'] + "</p><p style='font-size:0.8rem'>" + search[i].page_content + "</p>"
|
152 |
|
153 |
results = [sources_text, verbatim_text, sources_offres]
|
154 |
return results
|
|
|
156 |
@cl.on_chat_start
|
157 |
async def on_chat_start():
|
158 |
await cl.Message(f"> REVIEWSTREAM").send()
|
159 |
+
#sources_videos = [
|
160 |
+
# cl.Text(name="Videos", content="""<div style="display:inline-block;text-align:center;font-size:0.7rem;max-height:260px;width:33%;min-width:33%;max-width:33%;overflow:hidden"><a target="_blank" title="Alizé2 - Dimensionnement routier 1/2" href="https://clap.univ-eiffel.fr/permalink/v1261c4664a50dwedh6w/iframe/"><img src="https://clap.univ-eiffel.fr/thumb/v1261c4664a50dwedh6w/play/" width="100%" alt="Alizé2 - Dimensionnement routier 1/2"/><p>Alizé2 - Dimensionnement routier 1/2 Alizé2 - Dimensionnement routier 1/2</p></a></div>
|
161 |
+
# <div style="display:inline-block;text-align:center;font-size:0.7rem;max-height:260px;width:33%;min-width:33%;max-width:33%;overflow:hidden"><a target="_blank" title="Alizé2 - Dimensionnement routier 1/2" href="https://clap.univ-eiffel.fr/permalink/v1261c4664a50dwedh6w/iframe/"><img src="https://clap.univ-eiffel.fr/thumb/v1261c4664a50dwedh6w/play/" width="100%" alt="Alizé2 - Dimensionnement routier 1/2"/><p>Alizé2 - Dimensionnement routier 1/2 Alizé2 - Dimensionnement routier 1/2</p></a></div>
|
162 |
+
# <div style="display:inline-block;text-align:center;font-size:0.7rem;max-height:260px;width:33%;min-width:33%;max-width:33%;overflow:hidden"><a target="_blank" title="Alizé2 - Dimensionnement routier 1/2" href="https://clap.univ-eiffel.fr/permalink/v1261c4664a50dwedh6w/iframe/"><img src="https://clap.univ-eiffel.fr/thumb/v1261c4664a50dwedh6w/play/" width="100%" alt="Alizé2 - Dimensionnement routier 1/2"/><p>Alizé2 - Dimensionnement routier 1/2 Alizé2 - Dimensionnement routier 1/2</p></a></div>
|
163 |
+
# <div style="display:inline-block;text-align:center;font-size:0.7rem;max-height:260px;width:33%;min-width:33%;max-width:33%;overflow:hidden"><a target="_blank" title="Alizé2 - Dimensionnement routier 1/2" href="https://clap.univ-eiffel.fr/permalink/v1261c4664a50dwedh6w/iframe/"><img src="https://clap.univ-eiffel.fr/thumb/v1261c4664a50dwedh6w/play/" width="100%" alt="Alizé2 - Dimensionnement routier 1/2"/><p>Alizé2 - Dimensionnement routier 1/2 Alizé2 - Dimensionnement routier 1/2</p></a></div>""",
|
164 |
+
# display="inline")
|
165 |
+
#]
|
166 |
+
#await cl.Message(
|
167 |
+
# content="Vidéos : ",
|
168 |
+
# elements=sources_videos,
|
169 |
+
#).send()
|
170 |
|
171 |
res = await cl.AskActionMessage(
|
172 |
content="<div style='width:100%;text-align:center'>Sélectionnez une source documentaire</div>",
|
|
|
176 |
cl.Action(name="year", value="Journée de La Pédagogie", label="👨🏫 Journée de La Pédagogie : exemple : «Quelles sont les bonnes pratiques des plateformes de e-learning?»"),
|
177 |
cl.Action(name="skills", value="Compétences du CFA Descartes", label="🧑🏻🎓 Les compétences des masters du CFA Descartes : exemple : «Quels sont les Master qui dispensent des compétences en marketing dispensées au CFA?»"),
|
178 |
cl.Action(name="OF", value="Formations Gustave Eiffel", label="🎓 Les formations de l'université Gustave Eiffel : exemple : «Quels sont les formations et les métiers possibles si on est créatif?»"),
|
179 |
+
cl.Action(name="videosTC", value="Vidéos paroles de confiné.es", label="📽️ Les vidéos paroles de confiné.es : exemple : «Quelle est la méthodologie employée avec les plateformes d'enseignement à distance?»"),
|
180 |
cl.Action(name="offreST", value="Offres d'emploi France Travail", label="💼 Les offres d'emploi de France Travail : exemple : «Quels sont les types de contrat proposés par les recruteurs?»"),
|
181 |
|
182 |
],
|