> Discover all available pages from the documentation index: https://mastra.zisheng.pro/zh-HK/llms.txt # PostHog exporter [PostHog](https://posthog.com/) 是一個具備 AI 可觀測性功能的分析平台,可用於監察 LLM 應用程式。PostHog exporter 會將你的 Trace 以結構化事件形式傳送至 PostHog,讓你深入了解 token 使用量、成本、延遲及對話流程。 ## 安裝 **npm**: ```bash npm install @mastra/posthog@latest ``` **pnpm**: ```bash pnpm add @mastra/posthog@latest ``` **Yarn**: ```bash yarn add @mastra/posthog@latest ``` **Bun**: ```bash bun add @mastra/posthog@latest ``` ## 配置 ### 先決條件 1. **PostHog 帳戶**:在 [posthog.com](https://posthog.com/) 註冊 2. **項目 API 金鑰**:前往 PostHog Settings → Project API Key 取得項目 API 金鑰 3. **環境變數**:設定你的憑證 ```bash # Required POSTHOG_API_KEY=phc_xxxxxxxxxxxxxxxx # Optional POSTHOG_HOST=https://us.i.posthog.com # or eu.i.posthog.com for EU region ``` ### 零配置設定 設定環境變數後,無需任何配置即可使用 exporter: ```typescript 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()], }, }, }), }) ``` ### 明確配置 你亦可以直接傳入憑證(其優先順序高於環境變數): ```typescript 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, }), ], }, }, }), }) ``` ## 配置選項 ### 完整配置 ```typescript 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 }) ``` ### Serverless 模式 為 serverless 環境最佳化的批次處理: ```typescript new PosthogExporter({ apiKey: process.env.POSTHOG_API_KEY!, serverless: true, // Configures smaller batches for faster flushing }) ``` ### 私隱模式 從 generation 事件中排除輸入/輸出資料,同時保留 token 指標: ```typescript new PosthogExporter({ apiKey: process.env.POSTHOG_API_KEY!, enablePrivacyMode: true, // Removes $ai_input and $ai_output_choices }) ``` ### 群組分析 如要將事件連結至 [PostHog 群組](https://posthog.com/docs/product-analytics/group-analytics),請將 `$groups` 物件加入 `tracingOptions.metadata`。exporter 會在呼叫 PostHog capture 時,將這些值作為頂層 `groups` 欄位傳送,讓你可以按群組細分 LLM 成本等分析資料。 ```ts await agent.generate(input, { tracingOptions: { metadata: { $groups: { publication: 'publication-1', }, }, }, }) ``` ## 相關內容 - [Trace 概覽](https://mastra.zisheng.pro/zh-HK/docs/observability/tracing/overview) - [PostHog 文件](https://posthog.com/docs)