@posthog/ai 7.11.1 → 7.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -24,7 +24,7 @@ const client = new OpenAI({
24
24
  })
25
25
 
26
26
  const completion = await client.chat.completions.create({
27
- model: 'gpt-3.5-turbo',
27
+ model: 'gpt-5-mini',
28
28
  messages: [{ role: 'user', content: 'Tell me a fun fact about hedgehogs' }],
29
29
  posthogDistinctId: 'user_123', // optional
30
30
  posthogTraceId: 'trace_123', // optional
@@ -39,61 +39,44 @@ console.log(completion.choices[0].message.content)
39
39
  await phClient.shutdown()
40
40
  ```
41
41
 
42
- ## OTEL + AI SDK (`experimental_telemetry`)
42
+ ## OpenTelemetry
43
43
 
44
- Use this when working with Vercel AI SDK telemetry. `@posthog/ai` exposes an OTEL `SpanProcessor` that maps spans to PostHog AI events and sends them through `posthog-node`.
44
+ `@posthog/ai` provides a `PostHogTraceExporter` that sends OpenTelemetry traces to PostHog's OTLP ingestion endpoint. PostHog converts `gen_ai.*` spans into `$ai_generation` events server-side. This works with any LLM provider SDK that supports OpenTelemetry.
45
+
46
+ ```bash
47
+ npm install @posthog/ai @opentelemetry/sdk-node @opentelemetry/exporter-trace-otlp-http
48
+ ```
45
49
 
46
50
  ```typescript
47
51
  import { NodeSDK } from '@opentelemetry/sdk-node'
48
- import { PostHog } from 'posthog-node'
49
52
  import { generateText } from 'ai'
50
53
  import { openai } from '@ai-sdk/openai'
51
- import { PostHogSpanProcessor } from '@posthog/ai/otel'
52
-
53
- const phClient = new PostHog('<YOUR_PROJECT_API_KEY>', { host: 'https://us.i.posthog.com' })
54
+ import { PostHogTraceExporter } from '@posthog/ai/otel'
54
55
 
55
56
  const sdk = new NodeSDK({
56
- spanProcessors: [
57
- new PostHogSpanProcessor(phClient),
58
- ],
57
+ traceExporter: new PostHogTraceExporter({
58
+ apiKey: '<YOUR_PROJECT_API_KEY>',
59
+ host: 'https://us.i.posthog.com', // optional, defaults to https://us.i.posthog.com
60
+ }),
59
61
  })
60
-
61
62
  sdk.start()
62
63
 
63
- await generateText({
64
- model: openai('gpt-5.1'),
64
+ const result = await generateText({
65
+ model: openai('gpt-5-mini'),
65
66
  prompt: 'Write a short haiku about debugging',
66
67
  experimental_telemetry: {
67
68
  isEnabled: true,
68
69
  functionId: 'my-awesome-function',
69
70
  metadata: {
71
+ posthog_distinct_id: 'user_123',
70
72
  conversation_id: 'abc123',
71
- plan: 'pro',
72
73
  },
73
74
  },
74
75
  })
75
76
 
76
- await phClient.shutdown()
77
+ await sdk.shutdown()
77
78
  ```
78
79
 
79
- ### Custom Mappers
80
-
81
- The OTEL processor supports adapter mappers for different span formats:
82
-
83
- - `aiSdkSpanMapper` is the default mapper.
84
- - You can pass custom `mappers` in `PostHogSpanProcessor` options to support additional span schemas.
85
-
86
- ### Per-call Metadata (Recommended)
87
-
88
- For dynamic properties, pass values in `experimental_telemetry.metadata` on each AI SDK call.
89
- These are captured from `ai.telemetry.metadata.*` and forwarded as PostHog event properties.
90
- Use processor options (`posthogProperties`) only for global defaults.
91
-
92
- ## Notes
93
-
94
- - The OTEL route currently maps supported spans into PostHog AI events (manual capture path).
95
- - Existing wrapper-based tracing (for example `withTracing`) still works and is unchanged.
96
-
97
80
  LLM Observability [docs](https://posthog.com/docs/ai-engineering/observability)
98
81
 
99
82
  Please see the main [PostHog docs](https://www.posthog.com/docs).
@@ -10,7 +10,7 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
10
 
11
11
  var AnthropicOriginal__default = /*#__PURE__*/_interopDefault(AnthropicOriginal);
12
12
 
13
- var version = "7.11.1";
13
+ var version = "7.12.0";
14
14
 
15
15
  // Type guards for safer type checking
16
16
 
@@ -2,7 +2,7 @@ import AnthropicOriginal from '@anthropic-ai/sdk';
2
2
  import { v4 } from 'uuid';
3
3
  import { uuidv7 } from '@posthog/core';
4
4
 
5
- var version = "7.11.1";
5
+ var version = "7.12.0";
6
6
 
7
7
  // Type guards for safer type checking
8
8
 
@@ -6,7 +6,7 @@ var genai = require('@google/genai');
6
6
  var uuid = require('uuid');
7
7
  var core = require('@posthog/core');
8
8
 
9
- var version = "7.11.1";
9
+ var version = "7.12.0";
10
10
 
11
11
  // Type guards for safer type checking
12
12
 
@@ -2,7 +2,7 @@ import { GoogleGenAI } from '@google/genai';
2
2
  import { v4 } from 'uuid';
3
3
  import { uuidv7 } from '@posthog/core';
4
4
 
5
- var version = "7.11.1";
5
+ var version = "7.12.0";
6
6
 
7
7
  // Type guards for safer type checking
8
8