@posthog/ai 2.4.0 → 3.1.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.
@@ -1,13 +1,8 @@
1
- import { experimental_wrapLanguageModel as wrapLanguageModel } from 'ai'
2
- import type {
3
- LanguageModelV1,
4
- Experimental_LanguageModelV1Middleware as LanguageModelV1Middleware,
5
- LanguageModelV1Prompt,
6
- LanguageModelV1StreamPart,
7
- } from 'ai'
1
+ import { wrapLanguageModel } from 'ai'
2
+ import type { LanguageModelV1, LanguageModelV1Middleware, LanguageModelV1Prompt, LanguageModelV1StreamPart } from 'ai'
8
3
  import { v4 as uuidv4 } from 'uuid'
9
4
  import { PostHog } from 'posthog-node'
10
- import { sendEventToPosthog } from '../utils'
5
+ import { CostOverride, sendEventToPosthog } from '../utils'
11
6
 
12
7
  interface ClientOptions {
13
8
  posthogDistinctId?: string
@@ -17,6 +12,7 @@ interface ClientOptions {
17
12
  posthogGroups?: Record<string, any>
18
13
  posthogModelOverride?: string
19
14
  posthogProviderOverride?: string
15
+ posthogCostOverride?: CostOverride
20
16
  }
21
17
 
22
18
  interface CreateInstrumentationMiddlewareOptions {
@@ -27,6 +23,7 @@ interface CreateInstrumentationMiddlewareOptions {
27
23
  posthogGroups?: Record<string, any>
28
24
  posthogModelOverride?: string
29
25
  posthogProviderOverride?: string
26
+ posthogCostOverride?: CostOverride
30
27
  }
31
28
 
32
29
  interface PostHogInput {
@@ -83,7 +80,7 @@ export const createInstrumentationMiddleware = (
83
80
  const middleware: LanguageModelV1Middleware = {
84
81
  wrapGenerate: async ({ doGenerate, params }) => {
85
82
  const startTime = Date.now()
86
- let mergedParams = {
83
+ const mergedParams = {
87
84
  ...options,
88
85
  ...mapVercelParams(params),
89
86
  }
@@ -94,7 +91,11 @@ export const createInstrumentationMiddleware = (
94
91
  options.posthogModelOverride ?? (result.response?.modelId ? result.response.modelId : model.modelId)
95
92
  const provider = options.posthogProviderOverride ?? extractProvider(model)
96
93
  const baseURL = '' // cannot currently get baseURL from vercel
97
-
94
+ let content = result.text
95
+ if (!content) {
96
+ // support generate Object
97
+ content = result.toolCalls?.[0].args || JSON.stringify(result)
98
+ }
98
99
  sendEventToPosthog({
99
100
  client: phClient,
100
101
  distinctId: options.posthogDistinctId,
@@ -102,7 +103,7 @@ export const createInstrumentationMiddleware = (
102
103
  model: modelId,
103
104
  provider: provider,
104
105
  input: options.posthogPrivacyMode ? '' : mapVercelPrompt(params.prompt),
105
- output: [{ content: result.text, role: 'assistant' }],
106
+ output: [{ content, role: 'assistant' }],
106
107
  latency,
107
108
  baseURL,
108
109
  params: mergedParams as any,
@@ -143,7 +144,7 @@ export const createInstrumentationMiddleware = (
143
144
  const startTime = Date.now()
144
145
  let generatedText = ''
145
146
  let usage: { inputTokens?: number; outputTokens?: number } = {}
146
- let mergedParams = {
147
+ const mergedParams = {
147
148
  ...options,
148
149
  ...mapVercelParams(params),
149
150
  }