Documentation for automated readers
A curated documentation index is available at: https://grafana.com/llms.txt
A complete documentation index is available at: https://grafana.com/llms-full.txt
These indexes can help with page discovery before fetching individual documents.
This page is also available in Markdown, which may be easier for automated readers and AI tools to parse than HTML. The Markdown version is available at https://grafana.com/docs/grafana-cloud/machine-learning/ai-observability/guides/instrument-agents.md, or by sending Accept: text/markdown to https://grafana.com/docs/grafana-cloud/machine-learning/ai-observability/guides/instrument-agents/. For broader documentation discovery, the curated index is available at https://grafana.com/llms.txt and the complete index is available at https://grafana.com/llms-full.txt.
Instrument agents with frameworks
AI Observability framework integrations capture generations automatically by attaching callbacks or hooks to your agent framework. This eliminates the need to manually instrument each LLM call.
Supported frameworks
| Framework | Python | TypeScript | Go | Java |
|---|---|---|---|---|
| LangChain | Yes | Yes | — | — |
| LangGraph | Yes | Yes | — | — |
| OpenAI Agents | Yes | Yes | — | — |
| LlamaIndex | Yes | Yes | — | — |
| Google ADK | Yes | Yes | Yes | Yes |
| Vercel AI SDK | — | Yes | — | — |
Set up a Python framework integration
Install the framework-specific package alongside the core SDK:
pip install sigil-sdk sigil-sdk-langchainAttach the AI Observability callback handler to your framework. For LangChain:
from sigil_sdk import Client, ClientConfig
from sigil_sdk_langchain import SigilLangChainHandler
client = Client(ClientConfig(
generation_export_endpoint="<SIGIL_ENDPOINT>",
))
handler = SigilLangChainHandler(client)
# Pass the handler to your chain or agent
chain.invoke({"input": "Hello"}, config={"callbacks": [handler]})
client.shutdown()Each framework integration follows the same pattern: create a handler, pass it to your framework’s callback mechanism, and the integration captures all LLM calls as generations.
Set up a TypeScript framework integration
Import the framework sub-module:
import { SigilClient } from "@grafana/sigil-sdk-js";
import { SigilLangChainHandler } from "@grafana/sigil-sdk-js/langchain";
const client = new SigilClient({
/* config */
});
const handler = new SigilLangChainHandler(client);
// Pass the handler to your chain or agent
await chain.invoke({ input: "Hello" }, { callbacks: [handler] });
await client.shutdown();Conversation ID mapping
Framework integrations automatically map conversation IDs from framework context:
- If the framework provides a
session_id,conversation_id, orgroup_id, the integration uses it. - If a
thread_idis available (LangGraph, OpenAI Agents), the integration uses it. - Otherwise, the integration generates a deterministic ID from the framework run context.
Capture workflow steps
Some framework integrations can capture workflow steps in addition to LLM generations. Workflow steps represent non-LLM execution nodes, for example, routing, planning, retrieval, or tool orchestration.
Enable workflow step capture when you want AI Observability to show the agentic workflow graph around the LLM calls. The integration links workflow steps to the generations they contain and records parent step IDs so the conversation graph can show the execution order.
Metadata
Framework integrations inject metadata into each generation:
sigil.framework.name— the framework name, for example,langchain.sigil.framework.source— how the integration captures data.sigil.framework.language— the programming language.
Additional framework-specific metadata like run_id, thread_id, component_name, and tags is included when available.
Next steps
Was this page helpful?
Related resources from Grafana Labs


