Agentes de observação criados com o LangGraph
LangGraph é uma estrutura para a criação de fluxos de trabalho com estado e multiagentes utilizando o ` LangChain `. Permite a criação de sistemas de agentes complexos com fluxos de execução cíclicos, gerenciamento de estados e roteamento condicional entre agentes.
Instana oferece observabilidade para aplicações de inteligência artificial ( LangGraph ), permitindo o monitoramento em tempo real de fluxos de trabalho com múltiplos agentes, transições de estado e interações com modelos de linguagem de grande escala (LLM).
Pré-requisitos
Certifique-se de que os seguintes pré-requisitos estejam atendidos.
Python 3.8 ou uma versão posterior esteja instalada.
Uma chave de LLM do tipo API, como a da Anthropic, OpenAI, ou qualquer outro provedor de LLM compatível com LangGraph.
Uma chave de pesquisa API (opcional, para a funcionalidade da ferramenta de pesquisa — Tavily ou DuckDuckGo ).
Instana está configurado para sua aplicação, consulte a seção “Introdução ”.
Implementação de monitoramento em aplicações do tipo “ LangGraph ”
Para integrar o Instana à sua aplicação do LangGraph, siga estas etapas:
Instale os pacotes necessários para LangGraph e OpenLLMetry.
pip install langgraph langchain-anthropic duckduckgo-search traceloop-sdkDefina as credenciais do seu provedor de LLM e da ferramenta de pesquisa.
export ANTHROPIC_API_KEY="<your-api-key>" export TAVILY_API_KEY="<your-tavily-api-key>"Nota:Substitua pela variável de ambiente do seu provedor de LLM caso utilize um provedor diferente (por exemplo,
OPENAI_API_KEYpara OpenAI ). A chave ` API ` do Tavily é opcional caso você esteja usando outra ferramenta de pesquisa.Crie seu aplicativo LangGraph.
O exemplo a seguir mostra um fluxo de trabalho com vários participantes, envolvendo um pesquisador e um redator:
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()Execute seu aplicativo LangGraph.
python langgraph_app.pyO aplicativo executa o fluxo de trabalho multiagente e exibe as etapas de execução:
Figura 1. LangGraph saída 
Visualize os dados no site Instana.
Após executar sua aplicação, os dados aparecerão no painel de observabilidade da Gen AI do Instana :
Figura 2. LangGraph vestígios em Instana 
O painel mostra:
Execução de fluxos de trabalho com múltiplos agentes
Transições de estado entre agentes
Chamadas de ferramentas (operações de pesquisa)
Interações do LLM com latência e uso de tokens
Decisões de roteamento condicionais
Resolução de problemas
Para problemas comuns, como traços que não aparecem ou erros de conexão, consulte a seção "Solução de problemas".
Erros de importação com `create_react_agent`
Problema : As métricas ou os rastreamentos ficam incompletos ao usar create_react_agent.
Possível causa : os dados foram importados do pacote errado.
Para resolver esse problema, tente importar create_react_agent de langgraph.prebuilt:
# Correct import
from langgraph.prebuilt import create_react_agent
# Don't use this
from langchain.agents import create_react_agent
Erros na execução do fluxo de trabalho
Problema : O fluxo de trabalho falha devido a erros de limite de recursão.
Para resolver esse problema, tente ajustar o recursion_limit parâmetro na stream() chamada de acordo com a complexidade do seu fluxo de trabalho. Para fluxos de trabalho complexos com múltiplos agentes, talvez seja necessário aumentar esse valor além do padrão.
Próximas etapas
Explore as estruturas de agentes de IA compatíveis com o Instana
Saiba mais sobre o cálculo de custos do uso do LLM
Configure alertas para seus fluxos de trabalho do LangGraph