From c26607028e15ecd2febe3d4d5cc8e6505237172f Mon Sep 17 00:00:00 2001 From: Jacquin Antoine Date: Sat, 21 Feb 2026 18:09:39 +0100 Subject: [PATCH] mieux --- chroma-mcp-sse/main.py | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/chroma-mcp-sse/main.py b/chroma-mcp-sse/main.py index ef7de3d..75071aa 100644 --- a/chroma-mcp-sse/main.py +++ b/chroma-mcp-sse/main.py @@ -10,11 +10,31 @@ CHROMA_URL = os.getenv("CHROMA_URL", "http://chroma-db:8000") client = chromadb.HttpClient(host="chroma-db", port=8000) @mcp.tool() -async def query_chroma(collection_name: str, query_text: str, n_results: int = 5): - """Interroge une collection ChromaDB pour trouver des documents similaires.""" - collection = client.get_collection(name=collection_name) - results = collection.query(query_texts=[query_text], n_results=n_results) - return str(results) +async def find_incident_solution(query_error: str, service: str = None): + """ + Recherche des incidents passés similaires et retourne les solutions appliquées. + L'utilisateur peut décrire l'erreur (ex: 'serveur lent') ou donner un code d'erreur. + """ + collection = client.get_collection(name="incident_history") + + # On cherche les 2 incidents les plus proches pour ne pas saturer le LLM + results = collection.query( + query_texts=[query_error], + n_results=2, + where={"service": service} if service else None + ) + + if not results["documents"][0]: + return "Aucun incident similaire répertorié dans la base de connaissances." + + response = "Voici les incidents similaires trouvés :\n" + for i, doc in enumerate(results["documents"][0]): + meta = results["metadatas"][0][i] + response += f"\n--- INCIDENT {meta.get('incident_id', 'Inconnu')} ---" + response += f"\nLOGS : {doc}" + response += f"\nSOLUTION : {meta.get('solution_applied', 'Non renseignée')}\n" + + return response if __name__ == "__main__": # On lance le serveur en mode SSE (Server-Sent Events)