Skip to main content
The Splunk Agent Observability LangChain integration allows you to automatically log all LangChain and LangGraph interactions with LLMs, including prompts, responses, and performance evaluators. The Splunk Agent Observability SDK has a custom callback that is passed to LangChain or LangGraph.

SplunkAOCallback - Python

The Python Splunk Agent Observability Synchronous LangChain SDK reference.

SplunkAOAsyncCallback - Python

The Python Splunk Agent Observability Asynchronous LangChain SDK reference.

Basic usage

The integration is based on the SplunkAOCallback class, which implements LangChain’s callback interface. To use it, create an instance of the callback and pass it to your LangChain components:
The SplunkAOCallback captures various LangChain events, including:
  • LLM starts and completions
  • Chat model interactions
  • Chain executions
  • Tool calls
  • Retriever operations
  • Agent actions
For each of these events, the callback logs relevant information to Splunk Agent Observability, such as:
  • Input prompts and messages
  • Output responses
  • Model information
  • Timing data
  • Token usage
  • Error information (if any)
The SplunkAOCallback automatically handles nested chains and agents, creating a hierarchical trace that reflects the structure of your LangChain application.

Asynchronous callbacks

In Python, there are separate callbacks for synchronous and asynchronous code. If you are using the asynchronous LangChain or LangGraph API, use the SplunkAOAsyncCallback callback handler.

Use a custom logger

When initializing the SplunkAOCallback, you can optionally specify a Splunk Agent Observability logger instance, either by creating a new logger, or by using the current logger from the Splunk Agent Observability context:
This is particularly useful if you want to call your LangChain code from inside a function decorated with the log decorator, or from inside an experiment.

Session and trace support

Every time you invoke a chain or an LLM call, a new session and trace is created. If you want to manually manage sessions or traces, you can do this using by passing a Splunk Agent Observability logger instance to the callback. To add the chain or LLM call invocation as a new trace to an existing session, create the session first using the logger instance that was used to create the callback:
To add the chain or LLM call invocation to an existing trace, ensure the trace is started, and set the start_new_trace parameter to False (Python).

Use with LangChain chains

You can also use the callback with LangChain chains. Make sure to pass the callback to both the LLM and the chain.

Add metadata

You can add custom metadata and tags to your logs by including them in the metadata and tags parameters of a LangChain runnable configuration when invoking a chain or LLM.
This metadata will be attached to the logs in Splunk Agent Observability, making it easier to filter and analyze your data. A chain node in a trace with metadata attached

Best practices

  1. Pass callbacks consistently: Make sure to pass the callback to all LangChain components (LLMs, chains, agents, etc.) to ensure complete logging.
  2. Include meaningful metadata: Add relevant metadata to your invocations to make it easier to filter and analyze your logs.

Next steps

Basic logging components

Splunk Agent Observability logger

Log with full control over sessions, traces, and spans using the Splunk Agent Observability logger.

Log decorator

Quickly add logging to your code with the log decorator and wrapper.

Splunk Agent Observability context

Manage logging using the Splunk Agent Observability context manager.

Cookbooks

Monitor LangChain Agents with Splunk Agent Observability

Learn how to build and monitor a LangChain AI Agent using Splunk Agent Observability for tracing and observability.

Add evaluations to a multi-agent LangGraph application

Learn how to add evaluations to a multi-agent LangGraph chat bot using Splunk Agent Observability