| | import pinecone |
| | import google.generativeai as genai |
| | from sklearn.metrics.pairwise import cosine_similarity |
| | from sentence_transformers import SentenceTransformer |
| | import numpy as np |
| | import gradio as gr |
| | from pinecone import Pinecone |
| |
|
| | |
| | genai.configure(api_key="AIzaSyBLlaGtxtzHmVgMfOC02AfgvOoKTwXGGIc") |
| | pc = Pinecone(api_key="pcsk_2vJdv7_KGHuiapnC85fgFaUGdZKyqiHPBv4hPMSnDq7FnzLSvhs2Ur51C3Z6rmbyyYVLZ5", environment="us-west1-gcp") |
| |
|
| | |
| | index_name = "index-embeddings-code-du-travail232333" |
| | embedding_model = SentenceTransformer("all-MiniLM-L6-v2") |
| | model_gene = genai.GenerativeModel("gemini-2.0-flash") |
| |
|
| | |
| | index = pc.Index(index_name) |
| |
|
| | |
| | def get_most_similar_chunk(query): |
| | |
| | model = SentenceTransformer("all-MiniLM-L6-v2") |
| | query_embedding = model.encode(query) |
| |
|
| | |
| | result = index.query( |
| | vector=query_embedding.tolist(), |
| | top_k=5, |
| | include_metadata=True |
| | ) |
| |
|
| | |
| | if 'matches' not in result: |
| | return [] |
| |
|
| | |
| | similar_chunks = [] |
| | for match in result['matches']: |
| | if 'metadata' in match: |
| | |
| | text = match['metadata'].get('text', 'Texte non disponible') |
| | similar_chunks.append((text, match['score'])) |
| |
|
| | return similar_chunks |
| |
|
| | |
| | model_gene = genai.GenerativeModel("gemini-2.0-flash") |
| |
|
| | def chatbot(user_prompt): |
| | if not user_prompt: |
| | return "❗ Veuillez entrer une question." |
| |
|
| | similar_chunks = get_most_similar_chunk(user_prompt) |
| | context = "\n".join( |
| | [f"Contexte {i+1}: {chunk} (score: {score:.2f})" for i, (chunk, score) in enumerate(similar_chunks)] |
| | ) |
| |
|
| | prompt = f""" |
| | TTu es un assistant juridique expert en droit du travail, et ta mission est d’apporter des réponses claires, concises et accessibles à toutes les |
| | questions liées au Code du travail, en te basant sur les informations disponibles dans le documents du code du travail fournit et ajoute des réference à partir du pdf. |
| | Lorsque quelqu’un te pose une question, veille à ce que ta réponse soit facile à comprendre, sans jargon complexe. Si tu rencontres un manque |
| | d’informations pour répondre de manière précise, sois transparent à ce sujet et donne des exemples concrets pour illustrer la situation. |
| | Chaque réponse doit commencer par une accroche sympathique pour engager l’utilisateur, puis expliquer de manière simple les concepts clés |
| | en lien avec la question posée. Enfin, offre une mini check-list ou résumé des points essentiels pour aider l’utilisateur à mieux comprendre. |
| | Question : {user_prompt}\n |
| | {context}\nRéponse : |
| | """ |
| |
|
| | response = model_gene.generate_content(prompt) |
| | return response.text |
| |
|
| | |
| | demo = gr.Interface( |
| | fn=chatbot, |
| | inputs=gr.Textbox(label="💬 Entrez votre question ici :"), |
| | outputs=gr.Textbox(label="📢 Réponse du chatbot :"), |
| | title="🤖 Assistant Code du travail", |
| | description="Posez votre question sur le Code du travail, l’assistant vous répond avec des sources pertinentes." |
| | ) |
| |
|
| | if __name__ == "__main__": |
| | demo.launch() |