@posthog/ai 2.3.1 → 3.0.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/src/utils.ts CHANGED
@@ -1,7 +1,9 @@
1
1
  import { PostHog } from 'posthog-node'
2
2
  import OpenAIOrignal from 'openai'
3
+ import AnthropicOriginal from '@anthropic-ai/sdk'
3
4
 
4
5
  type ChatCompletionCreateParamsBase = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParams
6
+ type MessageCreateParams = AnthropicOriginal.Messages.MessageCreateParams
5
7
 
6
8
  export interface MonitoringParams {
7
9
  posthogDistinctId?: string
@@ -11,7 +13,12 @@ export interface MonitoringParams {
11
13
  posthogGroups?: Record<string, any>
12
14
  }
13
15
 
14
- export const getModelParams = (params: ChatCompletionCreateParamsBase & MonitoringParams): Record<string, any> => {
16
+ export const getModelParams = (
17
+ params: ((ChatCompletionCreateParamsBase | MessageCreateParams) & MonitoringParams) | null
18
+ ): Record<string, any> => {
19
+ if (!params) {
20
+ return {}
21
+ }
15
22
  const modelParams: Record<string, any> = {}
16
23
  const paramKeys = [
17
24
  'temperature',
@@ -76,7 +83,7 @@ export const formatResponseOpenAI = (response: any): Array<{ role: string; conte
76
83
  return output
77
84
  }
78
85
 
79
- export const mergeSystemPrompt = (params: ChatCompletionCreateParamsBase & MonitoringParams, provider: string): any => {
86
+ export const mergeSystemPrompt = (params: MessageCreateParams & MonitoringParams, provider: string): any => {
80
87
  if (provider == 'anthropic') {
81
88
  const messages = params.messages || []
82
89
  if (!(params as any).system) {
@@ -104,7 +111,7 @@ export type SendEventToPosthogParams = {
104
111
  baseURL: string
105
112
  httpStatus: number
106
113
  usage?: { inputTokens?: number; outputTokens?: number }
107
- params: ChatCompletionCreateParamsBase & MonitoringParams
114
+ params: (ChatCompletionCreateParamsBase | MessageCreateParams) & MonitoringParams
108
115
  isError?: boolean
109
116
  error?: string
110
117
  }
@@ -1,10 +1,5 @@
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
5
  import { sendEventToPosthog } from '../utils'
@@ -17,6 +12,12 @@ interface ClientOptions {
17
12
  posthogGroups?: Record<string, any>
18
13
  posthogModelOverride?: string
19
14
  posthogProviderOverride?: string
15
+ posthogCostOverride?: CostOverride
16
+ }
17
+
18
+ interface CostOverride {
19
+ inputTokens: number
20
+ outputTokens: number
20
21
  }
21
22
 
22
23
  interface CreateInstrumentationMiddlewareOptions {
@@ -27,6 +28,7 @@ interface CreateInstrumentationMiddlewareOptions {
27
28
  posthogGroups?: Record<string, any>
28
29
  posthogModelOverride?: string
29
30
  posthogProviderOverride?: string
31
+ posthogCostOverride?: CostOverride
30
32
  }
31
33
 
32
34
  interface PostHogInput {
@@ -83,7 +85,7 @@ export const createInstrumentationMiddleware = (
83
85
  const middleware: LanguageModelV1Middleware = {
84
86
  wrapGenerate: async ({ doGenerate, params }) => {
85
87
  const startTime = Date.now()
86
- let mergedParams = {
88
+ const mergedParams = {
87
89
  ...options,
88
90
  ...mapVercelParams(params),
89
91
  }
@@ -143,7 +145,7 @@ export const createInstrumentationMiddleware = (
143
145
  const startTime = Date.now()
144
146
  let generatedText = ''
145
147
  let usage: { inputTokens?: number; outputTokens?: number } = {}
146
- let mergedParams = {
148
+ const mergedParams = {
147
149
  ...options,
148
150
  ...mapVercelParams(params),
149
151
  }