モニタリング LangGraph
LangGraph は、 LangChain でステートフルなマルチエージェントワークフローを構築するために使用できるフレームワークです。 LangGraph WatsonX, OpenAI, やClaudeのような大規模言語モデル(LLM)と統合。
Instana を使用して LangGraph を監視し、トレース、メトリクス、ログをキャプチャできます。 このデータは、AIエージェントのインタラクション、実行パス、システムパフォーマンスに関するリアルタイムの洞察を提供します。
LangGraph は、非線形実行によるマルチエージェントワークフローを可能にする。 そのため、LLMのインタラクションとAPIコールを追跡する分散トレースが必要になる。 OpenTelemetry (OTel) と Traceloop の OpenLLMetry, を統合することで、 LangGraph ワークフローを計測してスパンとトレースをキャプチャし、Instana で実行フローを可視化することができます。 リアルタイムの観測が可能なため、リソースの利用状況やパフォーマンスの傾向を分析することで、ワークフローの最適化がさらに強化される。 この統合により、AI主導の自動化を微調整できるようになり、 LangGraph-based アプリケーションの信頼性と効率が向上します。
計装 LangGraph アプリケーション
LangGraph アプリケーションを計測するには、以下の手順を実行する:
あなたの環境がすべての前提条件を満たしていることを確認してください。 詳しくは、 前提条件を参照。
LangGraph, の依存関係をインストールするには、以下のコマンドを実行する:
pip3 install langgraph langchain_ibm duckduckgo_searchLangGraph サンプル・アプリケーションで使用されている WatsonX モデルと検索ツールにアクセスするために、以下の認証情報をエクスポートします。
export WATSONX_URL="<watsonx-url>" export WATSONX_PROJECT_ID="<watsonx-project-id>" export WATSONX_API_KEY="<watsonx-api-key>" export TAVILY_API_KEY="<tavily-api-key>"以下のコードを実行して、 LangGraph サンプル・アプリケーションを生成してください:
import os from langchain_community.tools.tavily_search import TavilySearchResults from langchain_community.tools import DuckDuckGoSearchRun from typing import Literal 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 langchain_ibm.chat_models import ChatWatsonx from traceloop.sdk import Traceloop from traceloop.sdk.decorators import workflow # Initialize Traceloop Traceloop.init(app_name="langGraph_sample_app") # Define external tools tavily_tool = TavilySearchResults(max_results=10) duckDuckGoSearchRun_tool = DuckDuckGoSearchRun() # Define LLM parameters = { "decoding_method": "sample", "max_new_tokens": 600, "min_new_tokens": 1, "temperature": 0.5, "top_k": 50, "top_p": 1, } llm = ChatWatsonx( model_id="ibm/granite-3-2b-instruct", url="https://us-south.ml.cloud.ibm.com", project_id=os.getenv("WATSONX_PROJECT_ID"), apikey=os.getenv("WATSONX_API_KEY"), params=parameters, ) 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=[tavily_tool], state_modifier="You are a research assistant. Your ONLY job is to conduct thorough research. ", ) def research_node( state: MessagesState, ) -> Command[Literal["blogger", END]]: result = research_agent.invoke(state) goto = get_next_node(result["messages"][-1], "blogger") 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=[duckDuckGoSearchRun_tool], state_modifier="You are a blog writer. Your task is to create a well-structured blog", ) def writer_node(state: MessagesState) -> Command[Literal["researcher", END]]: result = writer_agent.invoke(state) result["messages"][-1] = HumanMessage( content=result["messages"][-1].content, name="blogger" ) return Command( update={ "messages": result["messages"], }, ) # Define workflow graph workflow = StateGraph(MessagesState) workflow.add_node("researcher", research_node) workflow.add_node("blogger", writer_node) workflow.add_edge(START, "researcher") graph = workflow.compile() # Execute workflow events = graph.stream( { "messages": [ ( "user", "First, conduct a research on AI trend in 2025 " "Then, based on that research, create a well-structured blog post.", ) ], }, {"recursion_limit": 150}, ) # Print workflow execution steps for s in events: print(s) print("----")以下のコマンドを実行して、 LangChain アプリケーションを実行する:
python3 ./<langGraph-sample-application>.py
LangGraph は次の例のような応答を生成する:

モニタリングを設定すると、Instana は LangGraph アプリケーションから以下のトレースとメトリクスを収集します:

LangGraph, で使用される LLM から収集されたメトリクスを表示するには、 View metrics を参照してください。