@posthog/ai 7.14.0 → 7.15.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
@@ -41,23 +41,29 @@ await phClient.shutdown()
41
41
 
42
42
  ## OpenTelemetry
43
43
 
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.
44
+ `@posthog/ai/otel` provides two ways to send AI traces to PostHog via OpenTelemetry. Both automatically filter to AI-related spans only (`gen_ai.*`, `llm.*`, `ai.*`, `traceloop.*`) and PostHog converts them into `$ai_generation` events server-side. This works with any LLM provider SDK that supports OpenTelemetry.
45
45
 
46
46
  ```bash
47
- npm install @posthog/ai @opentelemetry/sdk-node @opentelemetry/exporter-trace-otlp-http
47
+ npm install @posthog/ai @opentelemetry/sdk-node @opentelemetry/sdk-trace-base @opentelemetry/exporter-trace-otlp-http
48
48
  ```
49
49
 
50
+ ### PostHogSpanProcessor (recommended)
51
+
52
+ A self-contained `SpanProcessor` that handles batching and export internally. Use this when your setup accepts a span processor.
53
+
50
54
  ```typescript
51
55
  import { NodeSDK } from '@opentelemetry/sdk-node'
56
+ import { PostHogSpanProcessor } from '@posthog/ai/otel'
52
57
  import { generateText } from 'ai'
53
58
  import { openai } from '@ai-sdk/openai'
54
- import { PostHogTraceExporter } from '@posthog/ai/otel'
55
59
 
56
60
  const sdk = new NodeSDK({
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
- }),
61
+ spanProcessors: [
62
+ new PostHogSpanProcessor({
63
+ apiKey: '<YOUR_PROJECT_API_KEY>',
64
+ host: 'https://us.i.posthog.com', // optional, defaults to https://us.i.posthog.com
65
+ }),
66
+ ],
61
67
  })
62
68
  sdk.start()
63
69
 
@@ -77,6 +83,23 @@ const result = await generateText({
77
83
  await sdk.shutdown()
78
84
  ```
79
85
 
86
+ ### PostHogTraceExporter
87
+
88
+ A `TraceExporter` for APIs that only accept an exporter, such as Vercel's `registerOTel`.
89
+
90
+ ```typescript
91
+ import { PostHogTraceExporter } from '@posthog/ai/otel'
92
+ import { registerOTel } from '@vercel/otel'
93
+
94
+ registerOTel({
95
+ serviceName: 'my-app',
96
+ traceExporter: new PostHogTraceExporter({
97
+ apiKey: '<YOUR_PROJECT_API_KEY>',
98
+ host: 'https://us.i.posthog.com', // optional, defaults to https://us.i.posthog.com
99
+ }),
100
+ })
101
+ ```
102
+
80
103
  LLM Observability [docs](https://posthog.com/docs/ai-engineering/observability)
81
104
 
82
105
  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.14.0";
13
+ var version = "7.15.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.14.0";
5
+ var version = "7.15.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.14.0";
9
+ var version = "7.15.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.14.0";
5
+ var version = "7.15.0";
6
6
 
7
7
  // Type guards for safer type checking
8
8
 
package/dist/index.cjs CHANGED
@@ -29,7 +29,7 @@ function _interopNamespace(e) {
29
29
  var uuid__namespace = /*#__PURE__*/_interopNamespace(uuid);
30
30
  var AnthropicOriginal__default = /*#__PURE__*/_interopDefault(AnthropicOriginal);
31
31
 
32
- var version = "7.14.0";
32
+ var version = "7.15.0";
33
33
 
34
34
  // Type guards for safer type checking
35
35
  const isString = value => {
package/dist/index.mjs CHANGED
@@ -5,7 +5,7 @@ import { uuidv7 } from '@posthog/core';
5
5
  import AnthropicOriginal from '@anthropic-ai/sdk';
6
6
  import { GoogleGenAI } from '@google/genai';
7
7
 
8
- var version = "7.14.0";
8
+ var version = "7.15.0";
9
9
 
10
10
  // Type guards for safer type checking
11
11
  const isString = value => {
@@ -23,7 +23,7 @@ function _interopNamespace(e) {
23
23
 
24
24
  var uuid__namespace = /*#__PURE__*/_interopNamespace(uuid);
25
25
 
26
- var version = "7.14.0";
26
+ var version = "7.15.0";
27
27
 
28
28
  // Type guards for safer type checking
29
29
 
@@ -1,7 +1,7 @@
1
1
  import * as uuid from 'uuid';
2
2
  import '@posthog/core';
3
3
 
4
- var version = "7.14.0";
4
+ var version = "7.15.0";
5
5
 
6
6
  // Type guards for safer type checking
7
7
 
@@ -6,7 +6,7 @@ var openai = require('openai');
6
6
  var uuid = require('uuid');
7
7
  var core = require('@posthog/core');
8
8
 
9
- var version = "7.14.0";
9
+ var version = "7.15.0";
10
10
 
11
11
  // Type guards for safer type checking
12
12
 
@@ -2,7 +2,7 @@ import { OpenAI } from 'openai';
2
2
  import { v4 } from 'uuid';
3
3
  import { uuidv7 } from '@posthog/core';
4
4
 
5
- var version = "7.14.0";
5
+ var version = "7.15.0";
6
6
 
7
7
  // Type guards for safer type checking
8
8