> Discover all available pages from the documentation index: https://mastra.zisheng.pro/zh-TW/llms.txt # PostHog Exporter [PostHog](https://posthog.com/) 是一個分析平台,具備監控 LLM 應用程式的 AI Observability 功能。PostHog Exporter 會將 Trace 作為結構化 event 傳送至 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 Key**:從 PostHog Settings → Project API Key 取得專案 API Key 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 }) ``` ### 隱私模式 在保留 token 指標的同時,從生成 event 中排除輸入/輸出資料: ```typescript new PosthogExporter({ apiKey: process.env.POSTHOG_API_KEY!, enablePrivacyMode: true, // Removes $ai_input and $ai_output_choices }) ``` ### 群組分析 若要將 event 附加至 [PostHog 群組](https://posthog.com/docs/product-analytics/group-analytics),請將 `$groups` object 加入 `tracingOptions.metadata`。Exporter 會在 PostHog capture 呼叫上將這些值作為頂層 `groups` 欄位傳送,讓你能依群組細分 LLM 成本等分析資料。 ```ts await agent.generate(input, { tracingOptions: { metadata: { $groups: { publication: 'publication-1', }, }, }, }) ``` ## 相關內容 - [Tracing 總覽](https://mastra.zisheng.pro/zh-TW/docs/observability/tracing/overview) - [PostHog 文件](https://posthog.com/docs)