agentic with langgraph

This commit is contained in:
2026-04-10 14:56:17 +00:00
parent 8c191e79e8
commit aac7f2ce47
3 changed files with 180 additions and 41 deletions

47
client_mcp_http.py Normal file
View File

@@ -0,0 +1,47 @@
import asyncio
import os
from dotenv import load_dotenv
from langchain_google_genai import ChatGoogleGenerativeAI
# Imports spécifiques pour la connexion réseau (SSE)
from mcp.client.sse import sse_client
from mcp.client.session import ClientSession
from langchain_mcp_adapters.tools import load_mcp_tools
# Chargement de la clé API
load_dotenv()
async def lancer_client_reseau():
print("🤖 Initialisation de Gemini...")
llm = ChatGoogleGenerativeAI(model="gemini-2.5-flash")
# L'adresse de votre serveur
url = "http://127.0.0.1:9000/sse"
print(f"🔌 Connexion au serveur distant sur {url}...")
# 1. On ouvre le canal de communication réseau
async with sse_client(url) as (read_stream, write_stream):
# 2. On démarre la session MCP sur ce canal
async with ClientSession(read_stream, write_stream) as session:
await session.initialize()
# 3. Récupération et conversion des outils au format LangChain
outils = await load_mcp_tools(session)
print(f"✅ Outils détectés : {[outil.name for outil in outils]}")
# 4. On équipe l'IA avec ces outils
llm_avec_outils = llm.bind_tools(outils)
# --- LE TEST ---
question = "Quelles sont les tâches sur ma liste ? Ajoute ensuite la tâche 'Finir le projet réseau'."
print(f"\n🗣️ Question posée : {question}")
reponse = await llm_avec_outils.ainvoke(question)
if reponse.tool_calls:
print("\n⚙️ DÉCISION DE L'IA :")
for outil in reponse.tool_calls:
print(f"- Outil demandé : {outil['name']} | Paramètres : {outil['args']}")
if __name__ == "__main__":
asyncio.run(lancer_client_reseau())