Skip to main content

Intégration LangGraph

Ce guide explique comment créer un agent IA Python en utilisant LangGraph (et LangChain) qui interroge la qualité des données Qalita de votre organisation en complète autonomie.

Prérequis

  • Python 3.11+
  • Librairies : langgraph >= 0.2, langchain-anthropic (ou langchain-openai)
  • Une authentification MCP Qalita valide

Installation

pip install qalita-core[agent] langgraph langchain-anthropic

Structure de l'agent LangGraph

L'idée est de :

  1. Connecter le client QalitaMCPClient au serveur.
  2. Extraire la liste des tools Qalita formatés pour Langchain (await client.get_langchain_tools()).
  3. Binder (lier) ces outils à un LLM (comme Claude 3).
  4. Créer un graphe d'agent classique (create_react_agent ou graphe custom).

Exemple d'implémentation

import os
import asyncio
from qalita_core.mcp import QalitaMCPClient
from langchain_anthropic import ChatAnthropic
from langgraph.prebuilt import create_react_agent

async def run_data_quality_agent():
# 1. Connexion au serveur MCP Qalita
client = QalitaMCPClient(
server_url=os.getenv("QALITA_MCP_URL", "https://api.qalita.io/mcp"),
api_key=os.getenv("QALITA_API_KEY")
)

# 2. Récupérer les outils LangChain via MCP
tools = await client.get_langchain_tools()

# 3. Lier les outils au LLM
# Assurez-vous d'avoir ANTHROPIC_API_KEY dans votre environnement
llm = ChatAnthropic(model="claude-3-5-sonnet-20241022", temperature=0)

# 4. Créer l'agent ReAct LangGraph
agent_executor = create_react_agent(llm, tools)

# 5. Interroger notre agent sur la qualité de nos données
query = "Quel est le score de qualité global du dataset 'sales-q3' ? Peux-tu me lister les anomalies s'il y en a ?"

print(f"User: {query}\n")

# Exécuter l'agent
messages = await agent_executor.ainvoke({"messages": [("user", query)]})

print("Agent:")
print(messages["messages"][-1].content)

if __name__ == "__main__":
asyncio.run(run_data_quality_agent())

Mécanique interne

Lorsque l'agent LLM observe la question Quel est le score de qualité global du dataset 'sales-q3' ? :

  • Il saura qu'il dispose de l'outil formel get_data_quality_score().
  • Il invoquera l'outil avec l'identifiant du jeu de données.
  • LangGraph va router la requête au client QalitaMCPClient.
  • Le client convertit l'appel en JSON-RPC MCP vers l'API de Qalita.
  • La réponse de Qalita remonte dans le graphe jusqu'au modèle LLM qui synthétise le résultat à l'utilisateur de manière intelligente.