Langfuse Integration
VoltAgent offers built-in OpenTelemetry support, making it easy to send traces and logs to observability platforms like Langfuse. This guide shows you how to integrate VoltAgent with Langfuse using the dedicated @voltagent/langfuse-exporter package.
Prerequisites
- You have a Langfuse account and project. Get your API keys (Public Key and Secret Key) and Base URL from your Langfuse project settings.
- You have a basic VoltAgent application setup.
Installation
First, install the necessary packages:
npm install @voltagent/langfuse-exporter
Setup
Import VoltAgent and LangfuseExporter
In your main application file (e.g., index.ts), import the required classes.
import { Agent, VoltAgent } from "@voltagent/core";
import { VercelAIProvider } from "@voltagent/vercel-ai";
import { openai } from "@ai-sdk/openai";
import { LangfuseExporter } from "@voltagent/langfuse-exporter";
// ... other imports like your LLM provider and tools
Configure the Exporter
Create an instance of LangfuseExporter. It's best practice to use environment variables for your Langfuse credentials.
const langfuseExporter = new LangfuseExporter({
publicKey: process.env.LANGFUSE_PUBLIC_KEY, // Your Langfuse Public Key
secretKey: process.env.LANGFUSE_SECRET_KEY, // Your Langfuse Secret Key
baseUrl: process.env.LANGFUSE_BASE_URL, // Optional: Defaults to Langfuse Cloud URL
// debug: true, // Optional: Enable detailed logging from the exporter
});
Ensure you have set the LANGFUSE_PUBLIC_KEY and LANGFUSE_SECRET_KEY environment variables.
Pass Exporter to VoltAgent
When creating your main VoltAgent instance, pass the configured langfuseExporter to the telemetryExporter option.
// Define your agent(s)
const agent = new Agent({
name: "my-voltagent-app",
instructions: "A helpful assistant that answers questions without using tools",
llm: new VercelAIProvider(),
});
// Initialize VoltAgent with the exporter
new VoltAgent({
agents: {
agent, // Register your agent(s)
},
telemetryExporter: langfuseExporter, // Pass the exporter instance
});
How it Works
By providing the telemetryExporter to VoltAgent, you activate VoltAgent's automatic OpenTelemetry integration:
- A global OpenTelemetry
NodeTracerProvideris configured. - The provided exporter(s) are attached using
BatchSpanProcessors (recommended for production). - All operations within any
Agentinstance managed by thisVoltAgent(including sub-agents called via delegation) will automatically create and export OpenTelemetry spans. - The
@voltagent/langfuse-exporterspecifically transforms these OpenTelemetry spans into Langfuse traces, generations, and spans, mapping relevant attributes like prompts, responses, tool calls, usage data, user IDs, and session IDs.
Using Multiple Exporters
The telemetryExporter option accepts either a single exporter instance or an array of exporters. This allows you to send telemetry data to multiple systems simultaneously.
import { ConsoleSpanExporter } from "@opentelemetry/sdk-trace-base"; // Example: OTEL Console Exporter
new VoltAgent({
agents: { agent },
telemetryExporter: [
new LangfuseExporter({
/* ... config ... */
}),
new ConsoleSpanExporter(), // Also log spans to the console
// new OtherExporter({ /* ... config ... */ }),
],
});
Now your VoltAgent setup will automatically send detailed traces to Langfuse! Check your Langfuse project to see the incoming data.