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 |
],
|