Exporter PostHog
PostHog est une plateforme d’analyse dotée de fonctionnalités d’observabilité de l’IA pour surveiller les applications LLM. L’exporter PostHog envoie vos traces à PostHog sous forme d’événements structurés afin de fournir des informations sur l’utilisation des jetons, les coûts, la latence et les flux de conversation.
InstallationLien direct vers Installation
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/posthog@latest
pnpm add @mastra/posthog@latest
yarn add @mastra/posthog@latest
bun add @mastra/posthog@latest
ConfigurationLien direct vers Configuration
PrérequisLien direct vers Prérequis
- Compte PostHog : inscrivez-vous sur posthog.com
- Clé API du projet : récupérez-la dans PostHog sous Settings → Project API Key
- Variables d’environnement : définissez vos identifiants
# Required
POSTHOG_API_KEY=phc_xxxxxxxxxxxxxxxx
# Optional
POSTHOG_HOST=https://us.i.posthog.com # or eu.i.posthog.com for EU region
Configuration automatiqueLien direct vers Configuration automatique
Une fois les variables d’environnement définies, utilisez l’exporter sans configuration :
import { Mastra } from '@mastra/core'
import { Observability } from '@mastra/observability'
import { PosthogExporter } from '@mastra/posthog'
export const mastra = new Mastra({
observability: new Observability({
configs: {
posthog: {
serviceName: 'my-service',
exporters: [new PosthogExporter()],
},
},
}),
})
Configuration expliciteLien direct vers Configuration explicite
Vous pouvez également transmettre les identifiants directement ; ils prévalent sur les variables d’environnement :
import { Mastra } from '@mastra/core'
import { Observability } from '@mastra/observability'
import { PosthogExporter } from '@mastra/posthog'
export const mastra = new Mastra({
observability: new Observability({
configs: {
posthog: {
serviceName: 'my-service',
exporters: [
new PosthogExporter({
apiKey: process.env.POSTHOG_API_KEY,
}),
],
},
},
}),
})
Options de configurationLien direct vers Options de configuration
Configuration complèteLien direct vers Configuration complète
new PosthogExporter({
// Required credentials
apiKey: process.env.POSTHOG_API_KEY!,
// Optional settings
host: 'https://us.i.posthog.com', // Default: US region
// or "https://eu.i.posthog.com" for EU region
// or your self-hosted URL
// Batching configuration
flushAt: 20, // Batch size (default: 20)
flushInterval: 10000, // Flush interval in ms (default: 10000)
serverless: false, // Serverless mode: flushAt=10, flushInterval=2000
// User identification
defaultDistinctId: 'anonymous', // Fallback if no userId in metadata
// Privacy settings
enablePrivacyMode: false, // Excludes input/output from generation events
// Diagnostic logging
logLevel: 'info', // debug | info | warn | error
})
Mode serverlessLien direct vers Mode serverless
Regroupement optimisé pour les environnements serverless :
new PosthogExporter({
apiKey: process.env.POSTHOG_API_KEY!,
serverless: true, // Configures smaller batches for faster flushing
})
Mode de confidentialitéLien direct vers Mode de confidentialité
Excluez les données d’entrée et de sortie des événements de génération tout en conservant les métriques de jetons :
new PosthogExporter({
apiKey: process.env.POSTHOG_API_KEY!,
enablePrivacyMode: true, // Removes $ai_input and $ai_output_choices
})
Analyse par groupeLien direct vers Analyse par groupe
Pour associer des événements à un groupe PostHog, ajoutez un objet $groups à tracingOptions.metadata. L’exporter transmet ces valeurs dans le champ de premier niveau groups de l’appel de capture PostHog, ce qui permet de segmenter des analyses telles que le coût du LLM par groupe.
await agent.generate(input, {
tracingOptions: {
metadata: {
$groups: {
publication: 'publication-1',
},
},
},
})