This commit is contained in:
Jacquin Antoine
2026-02-21 18:09:39 +01:00
parent f3771534fc
commit c26607028e

View File

@ -10,11 +10,31 @@ CHROMA_URL = os.getenv("CHROMA_URL", "http://chroma-db:8000")
client = chromadb.HttpClient(host="chroma-db", port=8000) client = chromadb.HttpClient(host="chroma-db", port=8000)
@mcp.tool() @mcp.tool()
async def query_chroma(collection_name: str, query_text: str, n_results: int = 5): async def find_incident_solution(query_error: str, service: str = None):
"""Interroge une collection ChromaDB pour trouver des documents similaires.""" """
collection = client.get_collection(name=collection_name) Recherche des incidents passés similaires et retourne les solutions appliquées.
results = collection.query(query_texts=[query_text], n_results=n_results) L'utilisateur peut décrire l'erreur (ex: 'serveur lent') ou donner un code d'erreur.
return str(results) """
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__": if __name__ == "__main__":
# On lance le serveur en mode SSE (Server-Sent Events) # On lance le serveur en mode SSE (Server-Sent Events)