Agents d'observation créés à l'aide d' LangGraph
LangGraph est un framework permettant de créer des flux de travail multi-agents avec état à l'aide d' LangChain. Il permet de créer des systèmes d'agents complexes avec des flux d'exécution cycliques, la gestion des états et le routage conditionnel entre les agents.
Instana offre une observabilité pour les applications d' LangGraph, permettant la surveillance en temps réel des flux de travail multi-agents, des transitions d'état et des interactions avec les modèles de langage de grande envergure (LLM).
Prérequis
Assurez-vous que les conditions préalables suivantes sont remplies.
Python 3.8 ou une version ultérieure est installée.
Une clé d' API s LLM telle qu'Anthropic, OpenAI, ou tout autre fournisseur de LLM pris en charge par LangGraph.
Une clé d' API de recherche (facultative, pour l'utilisation d'outils de recherche tels que Tavily ou DuckDuckGo ).
Instana est configuré pour votre application, consultez la section « Pour commencer ».
Mise en place d'outils de surveillance pour les applications d' LangGraph
Pour instrumenter votre application LangGraph avec Instana, suivez les étapes suivantes :
Installez les paquets requis pour LangGraph et OpenLLMetry.
pip install langgraph langchain-anthropic duckduckgo-search traceloop-sdkConfigurez les identifiants de votre fournisseur de LLM et de votre outil de recherche.
export ANTHROPIC_API_KEY="<your-api-key>" export TAVILY_API_KEY="<your-tavily-api-key>"Remarque :Remplacez par la variable d'environnement de votre fournisseur LLM si vous utilisez un autre fournisseur (par exemple,
OPENAI_API_KEYpour OpenAI ). La clé « Tavily API » est facultative si vous utilisez un autre outil de recherche.Créez votre application LangGraph.
L'exemple suivant présente un flux de travail multi-acteurs impliquant un chercheur et un rédacteur :
import os from typing import Literal from langchain_anthropic import ChatAnthropic from langchain_community.tools import DuckDuckGoSearchRun from langchain_core.messages import BaseMessage, HumanMessage from langgraph.prebuilt import create_react_agent from langgraph.graph import MessagesState, StateGraph, START, END from langgraph.types import Command from traceloop.sdk import Traceloop from traceloop.sdk.decorators import workflow # Initialize OpenLLMetry Traceloop.init(app_name="langgraph_demo") # Define search tool search_tool = DuckDuckGoSearchRun() # Define LLM llm = ChatAnthropic( model="claude-3-5-sonnet-20241022", temperature=0.7, max_tokens=600 ) def get_next_node(last_message: BaseMessage, goto: str): if not last_message.content: return END return goto # Research agent and node research_agent = create_react_agent( llm, tools=[search_tool], state_modifier="You are a research assistant. Your job is to conduct thorough research." ) def research_node(state: MessagesState) -> Command[Literal["writer", END]]: result = research_agent.invoke(state) goto = get_next_node(result["messages"][-1], "writer") result["messages"][-1] = HumanMessage( content=result["messages"][-1].content, name="researcher" ) return Command( update={"messages": result["messages"]}, goto=goto ) # Writer agent and node writer_agent = create_react_agent( llm, tools=[search_tool], state_modifier="You are a blog writer. Your task is to create a well-structured blog post." ) def writer_node(state: MessagesState) -> Command[Literal[END]]: result = writer_agent.invoke(state) result["messages"][-1] = HumanMessage( content=result["messages"][-1].content, name="writer" ) return Command( update={"messages": result["messages"]}, goto=END ) # Define workflow graph workflow = StateGraph(MessagesState) workflow.add_node("researcher", research_node) workflow.add_node("writer", writer_node) workflow.add_edge(START, "researcher") graph = workflow.compile() # Execute workflow @workflow(name="langgraph_multi_agent_workflow") def run_workflow(): events = graph.stream( { "messages": [ ( "user", "First, research AI trends in 2025. " "Then, based on that research, create a well-structured blog post." ) ] }, {"recursion_limit": 150} ) # Print workflow execution steps for event in events: print(event) print("----") if __name__ == "__main__": run_workflow()Lancez votre application LangGraph.
python langgraph_app.pyL'application exécute le flux de travail multi-agents et affiche les étapes de l'exécution :
Figure 1. LangGraph résultat 
Consultez les données sur Instana.
Une fois votre application lancée, les données s'afficheront dans le tableau de bord d'observabilité Gen AI d' Instana :
Figure 2. LangGraph traces dans l' Instana 
Le tableau de bord affiche :
Exécution de flux de travail multi-agents
Transitions d'état entre agents
Appels d'outils (opérations de recherche)
Interactions du LLM avec la latence et l'utilisation des jetons
Décisions de routage conditionnelles
Traitement des incidents
Pour les problèmes courants, tels que l'absence d'affichage des traces ou les erreurs de connexion, consultez la section Dépannage.
Erreurs d'importation avec create_react_agent
Problème : les métriques ou les traces sont incomplètes lors de l'utilisation de create_react_agent.
Cause possible : les données sont importées à partir du mauvais dossier.
Pour résoudre ce problème, essayez d'importer create_react_agent depuis langgraph.prebuilt:
# Correct import
from langgraph.prebuilt import create_react_agent
# Don't use this
from langchain.agents import create_react_agent
Erreurs d'exécution du flux de travail
Problème : le workflow échoue en raison d'erreurs liées à la limite de récursivité.
Pour résoudre ce problème, essayez de modifier le recursion_limit paramètre dans stream() l'appel en fonction de la complexité de votre flux de travail. Pour les flux de travail multi-agents complexes, vous devrez peut-être augmenter cette valeur au-delà de la valeur par défaut.
Etapes suivantes
Découvrez les frameworks d'agents IA pris en charge par Instana
Découvrez comment calculer le coût de votre utilisation du LLM
Configurez des alertes pour vos workflows d' LangGraph