@posthog/ai 2.3.1 → 2.4.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/lib/index.cjs.js CHANGED
@@ -6,10 +6,12 @@ var OpenAIOrignal = require('openai');
6
6
  var uuid = require('uuid');
7
7
  var stream = require('stream');
8
8
  var ai = require('ai');
9
+ var AnthropicOriginal = require('@anthropic-ai/sdk');
9
10
 
10
11
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
12
 
12
13
  var OpenAIOrignal__default = /*#__PURE__*/_interopDefaultLegacy(OpenAIOrignal);
14
+ var AnthropicOriginal__default = /*#__PURE__*/_interopDefaultLegacy(AnthropicOriginal);
13
15
 
14
16
  const getModelParams = params => {
15
17
  const modelParams = {};
@@ -21,6 +23,31 @@ const getModelParams = params => {
21
23
  }
22
24
  return modelParams;
23
25
  };
26
+ const formatResponseAnthropic = response => {
27
+ // Example approach if "response.content" holds array of text segments, etc.
28
+ const output = [];
29
+ for (const choice of response.content ?? []) {
30
+ if (choice?.text) {
31
+ output.push({
32
+ role: 'assistant',
33
+ content: choice.text
34
+ });
35
+ }
36
+ }
37
+ return output;
38
+ };
39
+ const formatResponseOpenAI = response => {
40
+ const output = [];
41
+ for (const choice of response.choices ?? []) {
42
+ if (choice.message?.content) {
43
+ output.push({
44
+ role: choice.message.role,
45
+ content: choice.message.content
46
+ });
47
+ }
48
+ }
49
+ return output;
50
+ };
24
51
  const mergeSystemPrompt = (params, provider) => {
25
52
  if (provider == 'anthropic') {
26
53
  const messages = params.messages || [];
@@ -156,7 +183,7 @@ class WrappedCompletions$1 extends OpenAIOrignal__default["default"].Chat.Comple
156
183
  traceId,
157
184
  model: openAIParams.model,
158
185
  provider: 'openai',
159
- input: mergeSystemPrompt(openAIParams, 'openai'),
186
+ input: openAIParams.messages,
160
187
  output: [{
161
188
  content: accumulatedContent,
162
189
  role: 'assistant'
@@ -176,7 +203,7 @@ class WrappedCompletions$1 extends OpenAIOrignal__default["default"].Chat.Comple
176
203
  traceId,
177
204
  model: openAIParams.model,
178
205
  provider: 'openai',
179
- input: mergeSystemPrompt(openAIParams, 'openai'),
206
+ input: openAIParams.messages,
180
207
  output: [],
181
208
  latency: 0,
182
209
  baseURL: this.baseURL ?? '',
@@ -205,11 +232,8 @@ class WrappedCompletions$1 extends OpenAIOrignal__default["default"].Chat.Comple
205
232
  traceId,
206
233
  model: openAIParams.model,
207
234
  provider: 'openai',
208
- input: mergeSystemPrompt(openAIParams, 'openai'),
209
- output: [{
210
- content: result.choices[0].message.content,
211
- role: 'assistant'
212
- }],
235
+ input: openAIParams.messages,
236
+ output: formatResponseOpenAI(result),
213
237
  latency,
214
238
  baseURL: this.baseURL ?? '',
215
239
  params: body,
@@ -228,7 +252,7 @@ class WrappedCompletions$1 extends OpenAIOrignal__default["default"].Chat.Comple
228
252
  traceId,
229
253
  model: openAIParams.model,
230
254
  provider: 'openai',
231
- input: mergeSystemPrompt(openAIParams, 'openai'),
255
+ input: openAIParams.messages,
232
256
  output: [],
233
257
  latency: 0,
234
258
  baseURL: this.baseURL ?? '',
@@ -320,7 +344,7 @@ class WrappedCompletions extends OpenAIOrignal.AzureOpenAI.Chat.Completions {
320
344
  traceId,
321
345
  model,
322
346
  provider: 'azure',
323
- input: mergeSystemPrompt(openAIParams, 'azure'),
347
+ input: openAIParams.messages,
324
348
  output: [{
325
349
  content: accumulatedContent,
326
350
  role: 'assistant'
@@ -340,7 +364,7 @@ class WrappedCompletions extends OpenAIOrignal.AzureOpenAI.Chat.Completions {
340
364
  traceId,
341
365
  model,
342
366
  provider: 'azure',
343
- input: mergeSystemPrompt(openAIParams, 'azure'),
367
+ input: openAIParams.messages,
344
368
  output: JSON.stringify(error),
345
369
  latency: 0,
346
370
  baseURL: this.baseURL ?? '',
@@ -372,12 +396,9 @@ class WrappedCompletions extends OpenAIOrignal.AzureOpenAI.Chat.Completions {
372
396
  distinctId: posthogDistinctId ?? traceId,
373
397
  traceId,
374
398
  model,
375
- provider: '1234',
376
- input: mergeSystemPrompt(openAIParams, 'azure'),
377
- output: [{
378
- content: result.choices[0].message.content,
379
- role: 'assistant'
380
- }],
399
+ provider: 'azure',
400
+ input: openAIParams.messages,
401
+ output: formatResponseOpenAI(result),
381
402
  latency,
382
403
  baseURL: this.baseURL ?? '',
383
404
  params: body,
@@ -396,7 +417,7 @@ class WrappedCompletions extends OpenAIOrignal.AzureOpenAI.Chat.Completions {
396
417
  traceId,
397
418
  model: openAIParams.model,
398
419
  provider: 'azure',
399
- input: mergeSystemPrompt(openAIParams, 'azure'),
420
+ input: openAIParams.messages,
400
421
  output: [],
401
422
  latency: 0,
402
423
  baseURL: this.baseURL ?? '',
@@ -611,6 +632,161 @@ const wrapVercelLanguageModel = (model, phClient, options) => {
611
632
  return wrappedModel;
612
633
  };
613
634
 
635
+ class PostHogAnthropic extends AnthropicOriginal__default["default"] {
636
+ constructor(config) {
637
+ const {
638
+ posthog,
639
+ ...anthropicConfig
640
+ } = config;
641
+ super(anthropicConfig);
642
+ this.phClient = posthog;
643
+ this.messages = new WrappedMessages(this, this.phClient);
644
+ }
645
+ }
646
+ class WrappedMessages extends AnthropicOriginal__default["default"].Messages {
647
+ constructor(parentClient, phClient) {
648
+ super(parentClient);
649
+ this.phClient = phClient;
650
+ }
651
+ create(body, options) {
652
+ const {
653
+ posthogDistinctId,
654
+ posthogTraceId,
655
+ posthogProperties,
656
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
657
+ posthogPrivacyMode = false,
658
+ posthogGroups,
659
+ ...anthropicParams
660
+ } = body;
661
+ const traceId = posthogTraceId ?? uuid.v4();
662
+ const startTime = Date.now();
663
+ const parentPromise = super.create(anthropicParams, options);
664
+ if (anthropicParams.stream) {
665
+ return parentPromise.then(value => {
666
+ const passThroughStream = new stream.PassThrough({
667
+ objectMode: true
668
+ });
669
+ let accumulatedContent = '';
670
+ let usage = {
671
+ inputTokens: 0,
672
+ outputTokens: 0
673
+ };
674
+ if ('tee' in value) {
675
+ const anthropicStream = value;
676
+ (async () => {
677
+ try {
678
+ for await (const chunk of anthropicStream) {
679
+ if ('delta' in chunk) {
680
+ if ('text' in chunk.delta) {
681
+ const delta = chunk?.delta?.text ?? '';
682
+ accumulatedContent += delta;
683
+ }
684
+ }
685
+ if (chunk.type == 'message_start') {
686
+ usage.inputTokens = chunk.message.usage.input_tokens ?? 0;
687
+ }
688
+ if ('usage' in chunk) {
689
+ usage.outputTokens = chunk.usage.output_tokens ?? 0;
690
+ }
691
+ passThroughStream.write(chunk);
692
+ }
693
+ const latency = (Date.now() - startTime) / 1000;
694
+ sendEventToPosthog({
695
+ client: this.phClient,
696
+ distinctId: posthogDistinctId ?? traceId,
697
+ traceId,
698
+ model: anthropicParams.model,
699
+ provider: 'anthropic',
700
+ input: mergeSystemPrompt(anthropicParams, 'anthropic'),
701
+ output: [{
702
+ content: accumulatedContent,
703
+ role: 'assistant'
704
+ }],
705
+ latency,
706
+ baseURL: this.baseURL ?? '',
707
+ params: body,
708
+ httpStatus: 200,
709
+ usage
710
+ });
711
+ passThroughStream.end();
712
+ } catch (error) {
713
+ // error handling
714
+ sendEventToPosthog({
715
+ client: this.phClient,
716
+ distinctId: posthogDistinctId ?? traceId,
717
+ traceId,
718
+ model: anthropicParams.model,
719
+ provider: 'anthropic',
720
+ input: mergeSystemPrompt(anthropicParams, 'anthropic'),
721
+ output: [],
722
+ latency: 0,
723
+ baseURL: this.baseURL ?? '',
724
+ params: body,
725
+ httpStatus: error?.status ? error.status : 500,
726
+ usage: {
727
+ inputTokens: 0,
728
+ outputTokens: 0
729
+ },
730
+ isError: true,
731
+ error: JSON.stringify(error)
732
+ });
733
+ passThroughStream.emit('error', error);
734
+ }
735
+ })();
736
+ }
737
+ return passThroughStream;
738
+ });
739
+ } else {
740
+ const wrappedPromise = parentPromise.then(result => {
741
+ if ('content' in result) {
742
+ const latency = (Date.now() - startTime) / 1000;
743
+ sendEventToPosthog({
744
+ client: this.phClient,
745
+ distinctId: posthogDistinctId ?? traceId,
746
+ traceId,
747
+ model: anthropicParams.model,
748
+ provider: 'anthropic',
749
+ input: mergeSystemPrompt(anthropicParams, 'anthropic'),
750
+ output: formatResponseAnthropic(result),
751
+ latency,
752
+ baseURL: this.baseURL ?? '',
753
+ params: body,
754
+ httpStatus: 200,
755
+ usage: {
756
+ inputTokens: result.usage.input_tokens ?? 0,
757
+ outputTokens: result.usage.output_tokens ?? 0
758
+ }
759
+ });
760
+ }
761
+ return result;
762
+ }, error => {
763
+ sendEventToPosthog({
764
+ client: this.phClient,
765
+ distinctId: posthogDistinctId ?? traceId,
766
+ traceId,
767
+ model: anthropicParams.model,
768
+ provider: 'anthropic',
769
+ input: mergeSystemPrompt(anthropicParams, 'anthropic'),
770
+ output: [],
771
+ latency: 0,
772
+ baseURL: this.baseURL ?? '',
773
+ params: body,
774
+ httpStatus: error?.status ? error.status : 500,
775
+ usage: {
776
+ inputTokens: 0,
777
+ outputTokens: 0
778
+ },
779
+ isError: true,
780
+ error: JSON.stringify(error)
781
+ });
782
+ throw error;
783
+ });
784
+ return wrappedPromise;
785
+ }
786
+ }
787
+ }
788
+
789
+ exports.Anthropic = PostHogAnthropic;
614
790
  exports.AzureOpenAI = PostHogAzureOpenAI;
615
791
  exports.OpenAI = PostHogOpenAI;
616
792
  exports.withTracing = wrapVercelLanguageModel;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/utils.ts","../src/openai/index.ts","../src/openai/azure.ts","../src/vercel/middleware.ts"],"sourcesContent":["import { PostHog } from 'posthog-node'\nimport OpenAIOrignal from 'openai'\n\ntype ChatCompletionCreateParamsBase = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParams\n\nexport interface MonitoringParams {\n posthogDistinctId?: string\n posthogTraceId?: string\n posthogProperties?: Record<string, any>\n posthogPrivacyMode?: boolean\n posthogGroups?: Record<string, any>\n}\n\nexport const getModelParams = (params: ChatCompletionCreateParamsBase & MonitoringParams): Record<string, any> => {\n const modelParams: Record<string, any> = {}\n const paramKeys = [\n 'temperature',\n 'max_tokens',\n 'max_completion_tokens',\n 'top_p',\n 'frequency_penalty',\n 'presence_penalty',\n 'n',\n 'stop',\n 'stream',\n 'streaming',\n ] as const\n\n for (const key of paramKeys) {\n if (key in params && (params as any)[key] !== undefined) {\n modelParams[key] = (params as any)[key]\n }\n }\n return modelParams\n}\n\n/**\n * Helper to format responses (non-streaming) for consumption, mirroring Python's openai vs. anthropic approach.\n */\nexport const formatResponse = (response: any, provider: string): Array<{ role: string; content: string }> => {\n if (!response) {\n return []\n }\n if (provider === 'anthropic') {\n return formatResponseAnthropic(response)\n } else if (provider === 'openai') {\n return formatResponseOpenAI(response)\n }\n return []\n}\n\nexport const formatResponseAnthropic = (response: any): Array<{ role: string; content: string }> => {\n // Example approach if \"response.content\" holds array of text segments, etc.\n const output: Array<{ role: string; content: string }> = []\n for (const choice of response.content ?? []) {\n if (choice?.text) {\n output.push({\n role: 'assistant',\n content: choice.text,\n })\n }\n }\n return output\n}\n\nexport const formatResponseOpenAI = (response: any): Array<{ role: string; content: string }> => {\n const output: Array<{ role: string; content: string }> = []\n for (const choice of response.choices ?? []) {\n if (choice.message?.content) {\n output.push({\n role: choice.message.role,\n content: choice.message.content,\n })\n }\n }\n return output\n}\n\nexport const mergeSystemPrompt = (params: ChatCompletionCreateParamsBase & MonitoringParams, provider: string): any => {\n if (provider == 'anthropic') {\n const messages = params.messages || []\n if (!(params as any).system) {\n return messages\n }\n const systemMessage = (params as any).system\n return [{ role: 'system', content: systemMessage }, ...messages]\n }\n return params.messages\n}\n\nexport const withPrivacyMode = (client: PostHog, privacyMode: boolean, input: any): any => {\n return (client as any).privacy_mode || privacyMode ? null : input\n}\n\nexport type SendEventToPosthogParams = {\n client: PostHog\n distinctId?: string\n traceId: string\n model: string\n provider: string\n input: any\n output: any\n latency: number\n baseURL: string\n httpStatus: number\n usage?: { inputTokens?: number; outputTokens?: number }\n params: ChatCompletionCreateParamsBase & MonitoringParams\n isError?: boolean\n error?: string\n}\n\nexport const sendEventToPosthog = ({\n client,\n distinctId,\n traceId,\n model,\n provider,\n input,\n output,\n latency,\n baseURL,\n params,\n httpStatus = 200,\n usage = {},\n isError = false,\n error,\n}: SendEventToPosthogParams): void => {\n if (client.capture) {\n let errorData = {}\n if (isError) {\n errorData = {\n $ai_is_error: true,\n $ai_error: error,\n }\n }\n client.capture({\n distinctId: distinctId ?? traceId,\n event: '$ai_generation',\n properties: {\n $ai_provider: provider,\n $ai_model: model,\n $ai_model_parameters: getModelParams(params),\n $ai_input: withPrivacyMode(client, params.posthogPrivacyMode ?? false, input),\n $ai_output_choices: withPrivacyMode(client, params.posthogPrivacyMode ?? false, output),\n $ai_http_status: httpStatus,\n $ai_input_tokens: usage.inputTokens ?? 0,\n $ai_output_tokens: usage.outputTokens ?? 0,\n $ai_latency: latency,\n $ai_trace_id: traceId,\n $ai_base_url: baseURL,\n ...params.posthogProperties,\n ...(distinctId ? {} : { $process_person_profile: false }),\n ...errorData,\n },\n groups: params.posthogGroups,\n })\n }\n}\n","import OpenAIOrignal from 'openai'\nimport { PostHog } from 'posthog-node'\nimport { v4 as uuidv4 } from 'uuid'\nimport { PassThrough } from 'stream'\nimport { mergeSystemPrompt, MonitoringParams, sendEventToPosthog } from '../utils'\n\ntype ChatCompletion = OpenAIOrignal.ChatCompletion\ntype ChatCompletionChunk = OpenAIOrignal.ChatCompletionChunk\ntype ChatCompletionCreateParamsBase = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParams\ntype ChatCompletionCreateParamsNonStreaming = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParamsNonStreaming\ntype ChatCompletionCreateParamsStreaming = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParamsStreaming\nimport type { APIPromise, RequestOptions } from 'openai/core'\nimport type { Stream } from 'openai/streaming'\n\ninterface MonitoringOpenAIConfig {\n apiKey: string\n posthog: PostHog\n baseURL?: string\n}\n\nexport class PostHogOpenAI extends OpenAIOrignal {\n private readonly phClient: PostHog\n public chat: WrappedChat\n\n constructor(config: MonitoringOpenAIConfig) {\n const { posthog, ...openAIConfig } = config\n super(openAIConfig)\n this.phClient = posthog\n this.chat = new WrappedChat(this, this.phClient)\n }\n}\n\nexport class WrappedChat extends OpenAIOrignal.Chat {\n constructor(parentClient: PostHogOpenAI, phClient: PostHog) {\n super(parentClient)\n this.completions = new WrappedCompletions(parentClient, phClient)\n }\n\n public completions: WrappedCompletions\n}\n\nexport class WrappedCompletions extends OpenAIOrignal.Chat.Completions {\n private readonly phClient: PostHog\n\n constructor(client: OpenAIOrignal, phClient: PostHog) {\n super(client)\n this.phClient = phClient\n }\n\n // --- Overload #1: Non-streaming\n public create(\n body: ChatCompletionCreateParamsNonStreaming & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<ChatCompletion>\n\n // --- Overload #2: Streaming\n public create(\n body: ChatCompletionCreateParamsStreaming & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<Stream<ChatCompletionChunk>>\n\n // --- Overload #3: Generic base\n public create(\n body: ChatCompletionCreateParamsBase & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<ChatCompletion | Stream<ChatCompletionChunk>>\n\n // --- Implementation Signature\n public create(\n body: ChatCompletionCreateParamsBase & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<ChatCompletion | Stream<ChatCompletionChunk>> {\n const {\n posthogDistinctId,\n posthogTraceId,\n posthogProperties,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n posthogPrivacyMode = false,\n posthogGroups,\n ...openAIParams\n } = body\n\n const traceId = posthogTraceId ?? uuidv4()\n const startTime = Date.now()\n\n const parentPromise = super.create(openAIParams, options)\n\n if (openAIParams.stream) {\n return parentPromise.then((value) => {\n const passThroughStream = new PassThrough({ objectMode: true })\n let accumulatedContent = ''\n let usage: { inputTokens: number; outputTokens: number } = {\n inputTokens: 0,\n outputTokens: 0,\n }\n if ('tee' in value) {\n const openAIStream = value\n ;(async () => {\n try {\n for await (const chunk of openAIStream) {\n const delta = chunk?.choices?.[0]?.delta?.content ?? ''\n accumulatedContent += delta\n if (chunk.usage) {\n usage = {\n inputTokens: chunk.usage.prompt_tokens ?? 0,\n outputTokens: chunk.usage.completion_tokens ?? 0,\n }\n }\n passThroughStream.write(chunk)\n }\n const latency = (Date.now() - startTime) / 1000\n sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model: openAIParams.model,\n provider: 'openai',\n input: mergeSystemPrompt(openAIParams, 'openai'),\n output: [{ content: accumulatedContent, role: 'assistant' }],\n latency,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: 200,\n usage,\n })\n passThroughStream.end()\n } catch (error: any) {\n // error handling\n sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model: openAIParams.model,\n provider: 'openai',\n input: mergeSystemPrompt(openAIParams, 'openai'),\n output: [],\n latency: 0,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: error?.status ? error.status : 500,\n usage: {\n inputTokens: 0,\n outputTokens: 0,\n },\n isError: true,\n error: JSON.stringify(error),\n })\n passThroughStream.emit('error', error)\n }\n })()\n }\n return passThroughStream as unknown as Stream<ChatCompletionChunk>\n }) as APIPromise<Stream<ChatCompletionChunk>>\n } else {\n const wrappedPromise = parentPromise.then(\n (result) => {\n if ('choices' in result) {\n const latency = (Date.now() - startTime) / 1000\n sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model: openAIParams.model,\n provider: 'openai',\n input: mergeSystemPrompt(openAIParams, 'openai'),\n output: [{ content: result.choices[0].message.content, role: 'assistant' }],\n latency,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: 200,\n usage: {\n inputTokens: result.usage?.prompt_tokens ?? 0,\n outputTokens: result.usage?.completion_tokens ?? 0,\n },\n })\n }\n return result\n },\n (error: any) => {\n sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model: openAIParams.model,\n provider: 'openai',\n input: mergeSystemPrompt(openAIParams, 'openai'),\n output: [],\n latency: 0,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: error?.status ? error.status : 500,\n usage: {\n inputTokens: 0,\n outputTokens: 0,\n },\n isError: true,\n error: JSON.stringify(error),\n })\n throw error\n }\n ) as APIPromise<ChatCompletion>\n\n return wrappedPromise\n }\n }\n}\n\nexport default PostHogOpenAI\n","import OpenAIOrignal, { AzureOpenAI } from 'openai'\nimport { PostHog } from 'posthog-node'\nimport { v4 as uuidv4 } from 'uuid'\nimport { PassThrough } from 'stream'\nimport { mergeSystemPrompt, MonitoringParams, sendEventToPosthog } from '../utils'\n\ntype ChatCompletion = OpenAIOrignal.ChatCompletion\ntype ChatCompletionChunk = OpenAIOrignal.ChatCompletionChunk\ntype ChatCompletionCreateParamsBase = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParams\ntype ChatCompletionCreateParamsNonStreaming = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParamsNonStreaming\ntype ChatCompletionCreateParamsStreaming = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParamsStreaming\nimport type { APIPromise, RequestOptions } from 'openai/core'\nimport type { Stream } from 'openai/streaming'\n\ninterface MonitoringOpenAIConfig {\n apiKey: string\n posthog: PostHog\n baseURL?: string\n}\n\nexport class PostHogAzureOpenAI extends AzureOpenAI {\n private readonly phClient: PostHog\n public chat: WrappedChat\n\n constructor(config: MonitoringOpenAIConfig) {\n const { posthog, ...openAIConfig } = config\n super(openAIConfig)\n this.phClient = posthog\n this.chat = new WrappedChat(this, this.phClient)\n }\n}\n\nexport class WrappedChat extends AzureOpenAI.Chat {\n constructor(parentClient: PostHogAzureOpenAI, phClient: PostHog) {\n super(parentClient)\n this.completions = new WrappedCompletions(parentClient, phClient)\n }\n\n public completions: WrappedCompletions\n}\n\nexport class WrappedCompletions extends AzureOpenAI.Chat.Completions {\n private readonly phClient: PostHog\n\n constructor(client: AzureOpenAI, phClient: PostHog) {\n super(client)\n this.phClient = phClient\n }\n\n // --- Overload #1: Non-streaming\n public create(\n body: ChatCompletionCreateParamsNonStreaming & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<ChatCompletion>\n\n // --- Overload #2: Streaming\n public create(\n body: ChatCompletionCreateParamsStreaming & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<Stream<ChatCompletionChunk>>\n\n // --- Overload #3: Generic base\n public create(\n body: ChatCompletionCreateParamsBase & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<ChatCompletion | Stream<ChatCompletionChunk>>\n\n // --- Implementation Signature\n public create(\n body: ChatCompletionCreateParamsBase & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<ChatCompletion | Stream<ChatCompletionChunk>> {\n const {\n posthogDistinctId,\n posthogTraceId,\n posthogProperties,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n posthogPrivacyMode = false,\n posthogGroups,\n ...openAIParams\n } = body\n\n const traceId = posthogTraceId ?? uuidv4()\n const startTime = Date.now()\n const parentPromise = super.create(openAIParams, options)\n\n if (openAIParams.stream) {\n return parentPromise.then((value) => {\n const passThroughStream = new PassThrough({ objectMode: true })\n let accumulatedContent = ''\n let usage: { inputTokens: number; outputTokens: number } = {\n inputTokens: 0,\n outputTokens: 0,\n }\n let model = openAIParams.model\n if ('tee' in value) {\n const openAIStream = value\n ;(async () => {\n try {\n for await (const chunk of openAIStream) {\n const delta = chunk?.choices?.[0]?.delta?.content ?? ''\n accumulatedContent += delta\n if (chunk.usage) {\n if (chunk.model != model) {\n model = chunk.model\n }\n usage = {\n inputTokens: chunk.usage.prompt_tokens ?? 0,\n outputTokens: chunk.usage.completion_tokens ?? 0,\n }\n }\n passThroughStream.write(chunk)\n }\n const latency = (Date.now() - startTime) / 1000\n sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model,\n provider: 'azure',\n input: mergeSystemPrompt(openAIParams, 'azure'),\n output: [{ content: accumulatedContent, role: 'assistant' }],\n latency,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: 200,\n usage,\n })\n passThroughStream.end()\n } catch (error: any) {\n // error handling\n sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model,\n provider: 'azure',\n input: mergeSystemPrompt(openAIParams, 'azure'),\n output: JSON.stringify(error),\n latency: 0,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: error?.status ? error.status : 500,\n usage: {\n inputTokens: 0,\n outputTokens: 0,\n },\n isError: true,\n error: JSON.stringify(error),\n })\n passThroughStream.emit('error', error)\n }\n })()\n }\n return passThroughStream as unknown as Stream<ChatCompletionChunk>\n }) as APIPromise<Stream<ChatCompletionChunk>>\n } else {\n const wrappedPromise = parentPromise.then(\n (result) => {\n if ('choices' in result) {\n const latency = (Date.now() - startTime) / 1000\n let model = openAIParams.model\n if (result.model != model) {\n model = result.model\n }\n sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model,\n provider: '1234',\n input: mergeSystemPrompt(openAIParams, 'azure'),\n output: [{ content: result.choices[0].message.content, role: 'assistant' }],\n latency,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: 200,\n usage: {\n inputTokens: result.usage?.prompt_tokens ?? 0,\n outputTokens: result.usage?.completion_tokens ?? 0,\n },\n })\n }\n return result\n },\n (error: any) => {\n sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model: openAIParams.model,\n provider: 'azure',\n input: mergeSystemPrompt(openAIParams, 'azure'),\n output: [],\n latency: 0,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: error?.status ? error.status : 500,\n usage: {\n inputTokens: 0,\n outputTokens: 0,\n },\n isError: true,\n error: JSON.stringify(error),\n })\n throw error\n }\n ) as APIPromise<ChatCompletion>\n\n return wrappedPromise\n }\n }\n}\n\nexport default PostHogAzureOpenAI\n","import { experimental_wrapLanguageModel as wrapLanguageModel } from 'ai'\nimport type {\n LanguageModelV1,\n Experimental_LanguageModelV1Middleware as LanguageModelV1Middleware,\n LanguageModelV1Prompt,\n LanguageModelV1StreamPart,\n} from 'ai'\nimport { v4 as uuidv4 } from 'uuid'\nimport { PostHog } from 'posthog-node'\nimport { sendEventToPosthog } from '../utils'\n\ninterface ClientOptions {\n posthogDistinctId?: string\n posthogTraceId?: string\n posthogProperties?: Record<string, any>\n posthogPrivacyMode?: boolean\n posthogGroups?: Record<string, any>\n posthogModelOverride?: string\n posthogProviderOverride?: string\n}\n\ninterface CreateInstrumentationMiddlewareOptions {\n posthogDistinctId: string\n posthogTraceId: string\n posthogProperties?: Record<string, any>\n posthogPrivacyMode?: boolean\n posthogGroups?: Record<string, any>\n posthogModelOverride?: string\n posthogProviderOverride?: string\n}\n\ninterface PostHogInput {\n content: string\n role: string\n}\n\nconst mapVercelParams = (params: any): Record<string, any> => {\n return {\n temperature: params.temperature,\n max_tokens: params.maxTokens,\n top_p: params.topP,\n frequency_penalty: params.frequencyPenalty,\n presence_penalty: params.presencePenalty,\n stop: params.stopSequences,\n stream: params.stream,\n }\n}\n\nconst mapVercelPrompt = (prompt: LanguageModelV1Prompt): PostHogInput[] => {\n return prompt.map((p) => {\n let content = ''\n if (Array.isArray(p.content)) {\n content = p.content\n .map((c) => {\n if (c.type === 'text') {\n return c.text\n }\n return ''\n })\n .join('')\n } else {\n content = p.content\n }\n return {\n role: p.role,\n content,\n }\n })\n}\n\nconst extractProvider = (model: LanguageModelV1): string => {\n // vercel provider is in the format of provider.endpoint\n const provider = model.provider.toLowerCase()\n const providerName = provider.split('.')[0]\n return providerName\n}\n\nexport const createInstrumentationMiddleware = (\n phClient: PostHog,\n model: LanguageModelV1,\n options: CreateInstrumentationMiddlewareOptions\n): LanguageModelV1Middleware => {\n const middleware: LanguageModelV1Middleware = {\n wrapGenerate: async ({ doGenerate, params }) => {\n const startTime = Date.now()\n let mergedParams = {\n ...options,\n ...mapVercelParams(params),\n }\n try {\n const result = await doGenerate()\n const latency = (Date.now() - startTime) / 1000\n const modelId =\n options.posthogModelOverride ?? (result.response?.modelId ? result.response.modelId : model.modelId)\n const provider = options.posthogProviderOverride ?? extractProvider(model)\n const baseURL = '' // cannot currently get baseURL from vercel\n\n sendEventToPosthog({\n client: phClient,\n distinctId: options.posthogDistinctId,\n traceId: options.posthogTraceId,\n model: modelId,\n provider: provider,\n input: options.posthogPrivacyMode ? '' : mapVercelPrompt(params.prompt),\n output: [{ content: result.text, role: 'assistant' }],\n latency,\n baseURL,\n params: mergedParams as any,\n httpStatus: 200,\n usage: {\n inputTokens: result.usage.promptTokens,\n outputTokens: result.usage.completionTokens,\n },\n })\n\n return result\n } catch (error: any) {\n const modelId = model.modelId\n sendEventToPosthog({\n client: phClient,\n distinctId: options.posthogDistinctId,\n traceId: options.posthogTraceId,\n model: modelId,\n provider: model.provider,\n input: options.posthogPrivacyMode ? '' : mapVercelPrompt(params.prompt),\n output: [],\n latency: 0,\n baseURL: '',\n params: mergedParams as any,\n httpStatus: error?.status ? error.status : 500,\n usage: {\n inputTokens: 0,\n outputTokens: 0,\n },\n isError: true,\n error: JSON.stringify(error),\n })\n throw error\n }\n },\n\n wrapStream: async ({ doStream, params }) => {\n const startTime = Date.now()\n let generatedText = ''\n let usage: { inputTokens?: number; outputTokens?: number } = {}\n let mergedParams = {\n ...options,\n ...mapVercelParams(params),\n }\n\n const modelId = options.posthogModelOverride ?? model.modelId\n const provider = options.posthogProviderOverride ?? extractProvider(model)\n const baseURL = '' // cannot currently get baseURL from vercel\n try {\n const { stream, ...rest } = await doStream()\n const transformStream = new TransformStream<LanguageModelV1StreamPart, LanguageModelV1StreamPart>({\n transform(chunk, controller) {\n if (chunk.type === 'text-delta') {\n generatedText += chunk.textDelta\n }\n if (chunk.type === 'finish') {\n usage = {\n inputTokens: chunk.usage?.promptTokens,\n outputTokens: chunk.usage?.completionTokens,\n }\n }\n controller.enqueue(chunk)\n },\n\n flush() {\n const latency = (Date.now() - startTime) / 1000\n sendEventToPosthog({\n client: phClient,\n distinctId: options.posthogDistinctId,\n traceId: options.posthogTraceId,\n model: modelId,\n provider: provider,\n input: options.posthogPrivacyMode ? '' : mapVercelPrompt(params.prompt),\n output: [{ content: generatedText, role: 'assistant' }],\n latency,\n baseURL,\n params: mergedParams as any,\n httpStatus: 200,\n usage,\n })\n },\n })\n\n return {\n stream: stream.pipeThrough(transformStream),\n ...rest,\n }\n } catch (error: any) {\n sendEventToPosthog({\n client: phClient,\n distinctId: options.posthogDistinctId,\n traceId: options.posthogTraceId,\n model: modelId,\n provider: provider,\n input: options.posthogPrivacyMode ? '' : mapVercelPrompt(params.prompt),\n output: [],\n latency: 0,\n baseURL: '',\n params: mergedParams as any,\n httpStatus: error?.status ? error.status : 500,\n usage: {\n inputTokens: 0,\n outputTokens: 0,\n },\n isError: true,\n error: JSON.stringify(error),\n })\n throw error\n }\n },\n }\n\n return middleware\n}\n\nexport const wrapVercelLanguageModel = (\n model: LanguageModelV1,\n phClient: PostHog,\n options: ClientOptions\n): LanguageModelV1 => {\n const traceId = options.posthogTraceId ?? uuidv4()\n const middleware = createInstrumentationMiddleware(phClient, model, {\n ...options,\n posthogTraceId: traceId,\n posthogDistinctId: options.posthogDistinctId ?? traceId,\n })\n\n const wrappedModel = wrapLanguageModel({\n model,\n middleware,\n })\n\n return wrappedModel\n}\n"],"names":["getModelParams","params","modelParams","paramKeys","key","undefined","mergeSystemPrompt","provider","messages","system","systemMessage","role","content","withPrivacyMode","client","privacyMode","input","privacy_mode","sendEventToPosthog","distinctId","traceId","model","output","latency","baseURL","httpStatus","usage","isError","error","capture","errorData","$ai_is_error","$ai_error","event","properties","$ai_provider","$ai_model","$ai_model_parameters","$ai_input","posthogPrivacyMode","$ai_output_choices","$ai_http_status","$ai_input_tokens","inputTokens","$ai_output_tokens","outputTokens","$ai_latency","$ai_trace_id","$ai_base_url","posthogProperties","$process_person_profile","groups","posthogGroups","PostHogOpenAI","OpenAIOrignal","constructor","config","posthog","openAIConfig","phClient","chat","WrappedChat","Chat","parentClient","completions","WrappedCompletions","Completions","create","body","options","posthogDistinctId","posthogTraceId","openAIParams","uuidv4","startTime","Date","now","parentPromise","stream","then","value","passThroughStream","PassThrough","objectMode","accumulatedContent","openAIStream","chunk","delta","choices","prompt_tokens","completion_tokens","write","end","status","JSON","stringify","emit","wrappedPromise","result","message","PostHogAzureOpenAI","AzureOpenAI","mapVercelParams","temperature","max_tokens","maxTokens","top_p","topP","frequency_penalty","frequencyPenalty","presence_penalty","presencePenalty","stop","stopSequences","mapVercelPrompt","prompt","map","p","Array","isArray","c","type","text","join","extractProvider","toLowerCase","providerName","split","createInstrumentationMiddleware","middleware","wrapGenerate","doGenerate","mergedParams","modelId","posthogModelOverride","response","posthogProviderOverride","promptTokens","completionTokens","wrapStream","doStream","generatedText","rest","transformStream","TransformStream","transform","controller","textDelta","enqueue","flush","pipeThrough","wrapVercelLanguageModel","wrappedModel","wrapLanguageModel"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/utils.ts","../src/openai/index.ts","../src/openai/azure.ts","../src/vercel/middleware.ts","../src/anthropic/index.ts"],"sourcesContent":["import { PostHog } from 'posthog-node'\nimport OpenAIOrignal from 'openai'\nimport AnthropicOriginal from '@anthropic-ai/sdk'\n\ntype ChatCompletionCreateParamsBase = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParams\ntype MessageCreateParams = AnthropicOriginal.Messages.MessageCreateParams\n\nexport interface MonitoringParams {\n posthogDistinctId?: string\n posthogTraceId?: string\n posthogProperties?: Record<string, any>\n posthogPrivacyMode?: boolean\n posthogGroups?: Record<string, any>\n}\n\nexport const getModelParams = (\n params: (ChatCompletionCreateParamsBase | MessageCreateParams) & MonitoringParams\n): Record<string, any> => {\n const modelParams: Record<string, any> = {}\n const paramKeys = [\n 'temperature',\n 'max_tokens',\n 'max_completion_tokens',\n 'top_p',\n 'frequency_penalty',\n 'presence_penalty',\n 'n',\n 'stop',\n 'stream',\n 'streaming',\n ] as const\n\n for (const key of paramKeys) {\n if (key in params && (params as any)[key] !== undefined) {\n modelParams[key] = (params as any)[key]\n }\n }\n return modelParams\n}\n\n/**\n * Helper to format responses (non-streaming) for consumption, mirroring Python's openai vs. anthropic approach.\n */\nexport const formatResponse = (response: any, provider: string): Array<{ role: string; content: string }> => {\n if (!response) {\n return []\n }\n if (provider === 'anthropic') {\n return formatResponseAnthropic(response)\n } else if (provider === 'openai') {\n return formatResponseOpenAI(response)\n }\n return []\n}\n\nexport const formatResponseAnthropic = (response: any): Array<{ role: string; content: string }> => {\n // Example approach if \"response.content\" holds array of text segments, etc.\n const output: Array<{ role: string; content: string }> = []\n for (const choice of response.content ?? []) {\n if (choice?.text) {\n output.push({\n role: 'assistant',\n content: choice.text,\n })\n }\n }\n return output\n}\n\nexport const formatResponseOpenAI = (response: any): Array<{ role: string; content: string }> => {\n const output: Array<{ role: string; content: string }> = []\n for (const choice of response.choices ?? []) {\n if (choice.message?.content) {\n output.push({\n role: choice.message.role,\n content: choice.message.content,\n })\n }\n }\n return output\n}\n\nexport const mergeSystemPrompt = (params: MessageCreateParams & MonitoringParams, provider: string): any => {\n if (provider == 'anthropic') {\n const messages = params.messages || []\n if (!(params as any).system) {\n return messages\n }\n const systemMessage = (params as any).system\n return [{ role: 'system', content: systemMessage }, ...messages]\n }\n return params.messages\n}\n\nexport const withPrivacyMode = (client: PostHog, privacyMode: boolean, input: any): any => {\n return (client as any).privacy_mode || privacyMode ? null : input\n}\n\nexport type SendEventToPosthogParams = {\n client: PostHog\n distinctId?: string\n traceId: string\n model: string\n provider: string\n input: any\n output: any\n latency: number\n baseURL: string\n httpStatus: number\n usage?: { inputTokens?: number; outputTokens?: number }\n params: (ChatCompletionCreateParamsBase | MessageCreateParams) & MonitoringParams\n isError?: boolean\n error?: string\n}\n\nexport const sendEventToPosthog = ({\n client,\n distinctId,\n traceId,\n model,\n provider,\n input,\n output,\n latency,\n baseURL,\n params,\n httpStatus = 200,\n usage = {},\n isError = false,\n error,\n}: SendEventToPosthogParams): void => {\n if (client.capture) {\n let errorData = {}\n if (isError) {\n errorData = {\n $ai_is_error: true,\n $ai_error: error,\n }\n }\n client.capture({\n distinctId: distinctId ?? traceId,\n event: '$ai_generation',\n properties: {\n $ai_provider: provider,\n $ai_model: model,\n $ai_model_parameters: getModelParams(params),\n $ai_input: withPrivacyMode(client, params.posthogPrivacyMode ?? false, input),\n $ai_output_choices: withPrivacyMode(client, params.posthogPrivacyMode ?? false, output),\n $ai_http_status: httpStatus,\n $ai_input_tokens: usage.inputTokens ?? 0,\n $ai_output_tokens: usage.outputTokens ?? 0,\n $ai_latency: latency,\n $ai_trace_id: traceId,\n $ai_base_url: baseURL,\n ...params.posthogProperties,\n ...(distinctId ? {} : { $process_person_profile: false }),\n ...errorData,\n },\n groups: params.posthogGroups,\n })\n }\n}\n","import OpenAIOrignal from 'openai'\nimport { PostHog } from 'posthog-node'\nimport { v4 as uuidv4 } from 'uuid'\nimport { PassThrough } from 'stream'\nimport { formatResponseOpenAI, MonitoringParams, sendEventToPosthog } from '../utils'\n\ntype ChatCompletion = OpenAIOrignal.ChatCompletion\ntype ChatCompletionChunk = OpenAIOrignal.ChatCompletionChunk\ntype ChatCompletionCreateParamsBase = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParams\ntype ChatCompletionCreateParamsNonStreaming = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParamsNonStreaming\ntype ChatCompletionCreateParamsStreaming = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParamsStreaming\nimport type { APIPromise, RequestOptions } from 'openai/core'\nimport type { Stream } from 'openai/streaming'\n\ninterface MonitoringOpenAIConfig {\n apiKey: string\n posthog: PostHog\n baseURL?: string\n}\n\nexport class PostHogOpenAI extends OpenAIOrignal {\n private readonly phClient: PostHog\n public chat: WrappedChat\n\n constructor(config: MonitoringOpenAIConfig) {\n const { posthog, ...openAIConfig } = config\n super(openAIConfig)\n this.phClient = posthog\n this.chat = new WrappedChat(this, this.phClient)\n }\n}\n\nexport class WrappedChat extends OpenAIOrignal.Chat {\n constructor(parentClient: PostHogOpenAI, phClient: PostHog) {\n super(parentClient)\n this.completions = new WrappedCompletions(parentClient, phClient)\n }\n\n public completions: WrappedCompletions\n}\n\nexport class WrappedCompletions extends OpenAIOrignal.Chat.Completions {\n private readonly phClient: PostHog\n\n constructor(client: OpenAIOrignal, phClient: PostHog) {\n super(client)\n this.phClient = phClient\n }\n\n // --- Overload #1: Non-streaming\n public create(\n body: ChatCompletionCreateParamsNonStreaming & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<ChatCompletion>\n\n // --- Overload #2: Streaming\n public create(\n body: ChatCompletionCreateParamsStreaming & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<Stream<ChatCompletionChunk>>\n\n // --- Overload #3: Generic base\n public create(\n body: ChatCompletionCreateParamsBase & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<ChatCompletion | Stream<ChatCompletionChunk>>\n\n // --- Implementation Signature\n public create(\n body: ChatCompletionCreateParamsBase & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<ChatCompletion | Stream<ChatCompletionChunk>> {\n const {\n posthogDistinctId,\n posthogTraceId,\n posthogProperties,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n posthogPrivacyMode = false,\n posthogGroups,\n ...openAIParams\n } = body\n\n const traceId = posthogTraceId ?? uuidv4()\n const startTime = Date.now()\n\n const parentPromise = super.create(openAIParams, options)\n\n if (openAIParams.stream) {\n return parentPromise.then((value) => {\n const passThroughStream = new PassThrough({ objectMode: true })\n let accumulatedContent = ''\n let usage: { inputTokens: number; outputTokens: number } = {\n inputTokens: 0,\n outputTokens: 0,\n }\n if ('tee' in value) {\n const openAIStream = value\n ;(async () => {\n try {\n for await (const chunk of openAIStream) {\n const delta = chunk?.choices?.[0]?.delta?.content ?? ''\n accumulatedContent += delta\n if (chunk.usage) {\n usage = {\n inputTokens: chunk.usage.prompt_tokens ?? 0,\n outputTokens: chunk.usage.completion_tokens ?? 0,\n }\n }\n passThroughStream.write(chunk)\n }\n const latency = (Date.now() - startTime) / 1000\n sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model: openAIParams.model,\n provider: 'openai',\n input: openAIParams.messages,\n output: [{ content: accumulatedContent, role: 'assistant' }],\n latency,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: 200,\n usage,\n })\n passThroughStream.end()\n } catch (error: any) {\n // error handling\n sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model: openAIParams.model,\n provider: 'openai',\n input: openAIParams.messages,\n output: [],\n latency: 0,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: error?.status ? error.status : 500,\n usage: {\n inputTokens: 0,\n outputTokens: 0,\n },\n isError: true,\n error: JSON.stringify(error),\n })\n passThroughStream.emit('error', error)\n }\n })()\n }\n return passThroughStream as unknown as Stream<ChatCompletionChunk>\n }) as APIPromise<Stream<ChatCompletionChunk>>\n } else {\n const wrappedPromise = parentPromise.then(\n (result) => {\n if ('choices' in result) {\n const latency = (Date.now() - startTime) / 1000\n sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model: openAIParams.model,\n provider: 'openai',\n input: openAIParams.messages,\n output: formatResponseOpenAI(result),\n latency,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: 200,\n usage: {\n inputTokens: result.usage?.prompt_tokens ?? 0,\n outputTokens: result.usage?.completion_tokens ?? 0,\n },\n })\n }\n return result\n },\n (error: any) => {\n sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model: openAIParams.model,\n provider: 'openai',\n input: openAIParams.messages,\n output: [],\n latency: 0,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: error?.status ? error.status : 500,\n usage: {\n inputTokens: 0,\n outputTokens: 0,\n },\n isError: true,\n error: JSON.stringify(error),\n })\n throw error\n }\n ) as APIPromise<ChatCompletion>\n\n return wrappedPromise\n }\n }\n}\n\nexport default PostHogOpenAI\n","import OpenAIOrignal, { AzureOpenAI } from 'openai'\nimport { PostHog } from 'posthog-node'\nimport { v4 as uuidv4 } from 'uuid'\nimport { PassThrough } from 'stream'\nimport { formatResponseOpenAI, MonitoringParams, sendEventToPosthog } from '../utils'\n\ntype ChatCompletion = OpenAIOrignal.ChatCompletion\ntype ChatCompletionChunk = OpenAIOrignal.ChatCompletionChunk\ntype ChatCompletionCreateParamsBase = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParams\ntype ChatCompletionCreateParamsNonStreaming = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParamsNonStreaming\ntype ChatCompletionCreateParamsStreaming = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParamsStreaming\nimport type { APIPromise, RequestOptions } from 'openai/core'\nimport type { Stream } from 'openai/streaming'\n\ninterface MonitoringOpenAIConfig {\n apiKey: string\n posthog: PostHog\n baseURL?: string\n}\n\nexport class PostHogAzureOpenAI extends AzureOpenAI {\n private readonly phClient: PostHog\n public chat: WrappedChat\n\n constructor(config: MonitoringOpenAIConfig) {\n const { posthog, ...openAIConfig } = config\n super(openAIConfig)\n this.phClient = posthog\n this.chat = new WrappedChat(this, this.phClient)\n }\n}\n\nexport class WrappedChat extends AzureOpenAI.Chat {\n constructor(parentClient: PostHogAzureOpenAI, phClient: PostHog) {\n super(parentClient)\n this.completions = new WrappedCompletions(parentClient, phClient)\n }\n\n public completions: WrappedCompletions\n}\n\nexport class WrappedCompletions extends AzureOpenAI.Chat.Completions {\n private readonly phClient: PostHog\n\n constructor(client: AzureOpenAI, phClient: PostHog) {\n super(client)\n this.phClient = phClient\n }\n\n // --- Overload #1: Non-streaming\n public create(\n body: ChatCompletionCreateParamsNonStreaming & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<ChatCompletion>\n\n // --- Overload #2: Streaming\n public create(\n body: ChatCompletionCreateParamsStreaming & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<Stream<ChatCompletionChunk>>\n\n // --- Overload #3: Generic base\n public create(\n body: ChatCompletionCreateParamsBase & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<ChatCompletion | Stream<ChatCompletionChunk>>\n\n // --- Implementation Signature\n public create(\n body: ChatCompletionCreateParamsBase & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<ChatCompletion | Stream<ChatCompletionChunk>> {\n const {\n posthogDistinctId,\n posthogTraceId,\n posthogProperties,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n posthogPrivacyMode = false,\n posthogGroups,\n ...openAIParams\n } = body\n\n const traceId = posthogTraceId ?? uuidv4()\n const startTime = Date.now()\n const parentPromise = super.create(openAIParams, options)\n\n if (openAIParams.stream) {\n return parentPromise.then((value) => {\n const passThroughStream = new PassThrough({ objectMode: true })\n let accumulatedContent = ''\n let usage: { inputTokens: number; outputTokens: number } = {\n inputTokens: 0,\n outputTokens: 0,\n }\n let model = openAIParams.model\n if ('tee' in value) {\n const openAIStream = value\n ;(async () => {\n try {\n for await (const chunk of openAIStream) {\n const delta = chunk?.choices?.[0]?.delta?.content ?? ''\n accumulatedContent += delta\n if (chunk.usage) {\n if (chunk.model != model) {\n model = chunk.model\n }\n usage = {\n inputTokens: chunk.usage.prompt_tokens ?? 0,\n outputTokens: chunk.usage.completion_tokens ?? 0,\n }\n }\n passThroughStream.write(chunk)\n }\n const latency = (Date.now() - startTime) / 1000\n sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model,\n provider: 'azure',\n input: openAIParams.messages,\n output: [{ content: accumulatedContent, role: 'assistant' }],\n latency,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: 200,\n usage,\n })\n passThroughStream.end()\n } catch (error: any) {\n // error handling\n sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model,\n provider: 'azure',\n input: openAIParams.messages,\n output: JSON.stringify(error),\n latency: 0,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: error?.status ? error.status : 500,\n usage: {\n inputTokens: 0,\n outputTokens: 0,\n },\n isError: true,\n error: JSON.stringify(error),\n })\n passThroughStream.emit('error', error)\n }\n })()\n }\n return passThroughStream as unknown as Stream<ChatCompletionChunk>\n }) as APIPromise<Stream<ChatCompletionChunk>>\n } else {\n const wrappedPromise = parentPromise.then(\n (result) => {\n if ('choices' in result) {\n const latency = (Date.now() - startTime) / 1000\n let model = openAIParams.model\n if (result.model != model) {\n model = result.model\n }\n sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model,\n provider: 'azure',\n input: openAIParams.messages,\n output: formatResponseOpenAI(result),\n latency,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: 200,\n usage: {\n inputTokens: result.usage?.prompt_tokens ?? 0,\n outputTokens: result.usage?.completion_tokens ?? 0,\n },\n })\n }\n return result\n },\n (error: any) => {\n sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model: openAIParams.model,\n provider: 'azure',\n input: openAIParams.messages,\n output: [],\n latency: 0,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: error?.status ? error.status : 500,\n usage: {\n inputTokens: 0,\n outputTokens: 0,\n },\n isError: true,\n error: JSON.stringify(error),\n })\n throw error\n }\n ) as APIPromise<ChatCompletion>\n\n return wrappedPromise\n }\n }\n}\n\nexport default PostHogAzureOpenAI\n","import { experimental_wrapLanguageModel as wrapLanguageModel } from 'ai'\nimport type {\n LanguageModelV1,\n Experimental_LanguageModelV1Middleware as LanguageModelV1Middleware,\n LanguageModelV1Prompt,\n LanguageModelV1StreamPart,\n} from 'ai'\nimport { v4 as uuidv4 } from 'uuid'\nimport { PostHog } from 'posthog-node'\nimport { sendEventToPosthog } from '../utils'\n\ninterface ClientOptions {\n posthogDistinctId?: string\n posthogTraceId?: string\n posthogProperties?: Record<string, any>\n posthogPrivacyMode?: boolean\n posthogGroups?: Record<string, any>\n posthogModelOverride?: string\n posthogProviderOverride?: string\n}\n\ninterface CreateInstrumentationMiddlewareOptions {\n posthogDistinctId: string\n posthogTraceId: string\n posthogProperties?: Record<string, any>\n posthogPrivacyMode?: boolean\n posthogGroups?: Record<string, any>\n posthogModelOverride?: string\n posthogProviderOverride?: string\n}\n\ninterface PostHogInput {\n content: string\n role: string\n}\n\nconst mapVercelParams = (params: any): Record<string, any> => {\n return {\n temperature: params.temperature,\n max_tokens: params.maxTokens,\n top_p: params.topP,\n frequency_penalty: params.frequencyPenalty,\n presence_penalty: params.presencePenalty,\n stop: params.stopSequences,\n stream: params.stream,\n }\n}\n\nconst mapVercelPrompt = (prompt: LanguageModelV1Prompt): PostHogInput[] => {\n return prompt.map((p) => {\n let content = ''\n if (Array.isArray(p.content)) {\n content = p.content\n .map((c) => {\n if (c.type === 'text') {\n return c.text\n }\n return ''\n })\n .join('')\n } else {\n content = p.content\n }\n return {\n role: p.role,\n content,\n }\n })\n}\n\nconst extractProvider = (model: LanguageModelV1): string => {\n // vercel provider is in the format of provider.endpoint\n const provider = model.provider.toLowerCase()\n const providerName = provider.split('.')[0]\n return providerName\n}\n\nexport const createInstrumentationMiddleware = (\n phClient: PostHog,\n model: LanguageModelV1,\n options: CreateInstrumentationMiddlewareOptions\n): LanguageModelV1Middleware => {\n const middleware: LanguageModelV1Middleware = {\n wrapGenerate: async ({ doGenerate, params }) => {\n const startTime = Date.now()\n let mergedParams = {\n ...options,\n ...mapVercelParams(params),\n }\n try {\n const result = await doGenerate()\n const latency = (Date.now() - startTime) / 1000\n const modelId =\n options.posthogModelOverride ?? (result.response?.modelId ? result.response.modelId : model.modelId)\n const provider = options.posthogProviderOverride ?? extractProvider(model)\n const baseURL = '' // cannot currently get baseURL from vercel\n\n sendEventToPosthog({\n client: phClient,\n distinctId: options.posthogDistinctId,\n traceId: options.posthogTraceId,\n model: modelId,\n provider: provider,\n input: options.posthogPrivacyMode ? '' : mapVercelPrompt(params.prompt),\n output: [{ content: result.text, role: 'assistant' }],\n latency,\n baseURL,\n params: mergedParams as any,\n httpStatus: 200,\n usage: {\n inputTokens: result.usage.promptTokens,\n outputTokens: result.usage.completionTokens,\n },\n })\n\n return result\n } catch (error: any) {\n const modelId = model.modelId\n sendEventToPosthog({\n client: phClient,\n distinctId: options.posthogDistinctId,\n traceId: options.posthogTraceId,\n model: modelId,\n provider: model.provider,\n input: options.posthogPrivacyMode ? '' : mapVercelPrompt(params.prompt),\n output: [],\n latency: 0,\n baseURL: '',\n params: mergedParams as any,\n httpStatus: error?.status ? error.status : 500,\n usage: {\n inputTokens: 0,\n outputTokens: 0,\n },\n isError: true,\n error: JSON.stringify(error),\n })\n throw error\n }\n },\n\n wrapStream: async ({ doStream, params }) => {\n const startTime = Date.now()\n let generatedText = ''\n let usage: { inputTokens?: number; outputTokens?: number } = {}\n let mergedParams = {\n ...options,\n ...mapVercelParams(params),\n }\n\n const modelId = options.posthogModelOverride ?? model.modelId\n const provider = options.posthogProviderOverride ?? extractProvider(model)\n const baseURL = '' // cannot currently get baseURL from vercel\n try {\n const { stream, ...rest } = await doStream()\n const transformStream = new TransformStream<LanguageModelV1StreamPart, LanguageModelV1StreamPart>({\n transform(chunk, controller) {\n if (chunk.type === 'text-delta') {\n generatedText += chunk.textDelta\n }\n if (chunk.type === 'finish') {\n usage = {\n inputTokens: chunk.usage?.promptTokens,\n outputTokens: chunk.usage?.completionTokens,\n }\n }\n controller.enqueue(chunk)\n },\n\n flush() {\n const latency = (Date.now() - startTime) / 1000\n sendEventToPosthog({\n client: phClient,\n distinctId: options.posthogDistinctId,\n traceId: options.posthogTraceId,\n model: modelId,\n provider: provider,\n input: options.posthogPrivacyMode ? '' : mapVercelPrompt(params.prompt),\n output: [{ content: generatedText, role: 'assistant' }],\n latency,\n baseURL,\n params: mergedParams as any,\n httpStatus: 200,\n usage,\n })\n },\n })\n\n return {\n stream: stream.pipeThrough(transformStream),\n ...rest,\n }\n } catch (error: any) {\n sendEventToPosthog({\n client: phClient,\n distinctId: options.posthogDistinctId,\n traceId: options.posthogTraceId,\n model: modelId,\n provider: provider,\n input: options.posthogPrivacyMode ? '' : mapVercelPrompt(params.prompt),\n output: [],\n latency: 0,\n baseURL: '',\n params: mergedParams as any,\n httpStatus: error?.status ? error.status : 500,\n usage: {\n inputTokens: 0,\n outputTokens: 0,\n },\n isError: true,\n error: JSON.stringify(error),\n })\n throw error\n }\n },\n }\n\n return middleware\n}\n\nexport const wrapVercelLanguageModel = (\n model: LanguageModelV1,\n phClient: PostHog,\n options: ClientOptions\n): LanguageModelV1 => {\n const traceId = options.posthogTraceId ?? uuidv4()\n const middleware = createInstrumentationMiddleware(phClient, model, {\n ...options,\n posthogTraceId: traceId,\n posthogDistinctId: options.posthogDistinctId ?? traceId,\n })\n\n const wrappedModel = wrapLanguageModel({\n model,\n middleware,\n })\n\n return wrappedModel\n}\n","import AnthropicOriginal from '@anthropic-ai/sdk'\nimport { PostHog } from 'posthog-node'\nimport { v4 as uuidv4 } from 'uuid'\nimport { PassThrough } from 'stream'\nimport { formatResponseAnthropic, mergeSystemPrompt, MonitoringParams, sendEventToPosthog } from '../utils'\n\ntype MessageCreateParamsNonStreaming = AnthropicOriginal.Messages.MessageCreateParamsNonStreaming\ntype MessageCreateParamsStreaming = AnthropicOriginal.Messages.MessageCreateParamsStreaming\ntype MessageCreateParams = AnthropicOriginal.Messages.MessageCreateParams\ntype Message = AnthropicOriginal.Messages.Message\ntype RawMessageStreamEvent = AnthropicOriginal.Messages.RawMessageStreamEvent\ntype MessageCreateParamsBase = AnthropicOriginal.Messages.MessageCreateParams\n\nimport type { APIPromise, RequestOptions } from '@anthropic-ai/sdk/core'\nimport type { Stream } from '@anthropic-ai/sdk/streaming'\n\ninterface MonitoringAnthropicConfig {\n apiKey: string\n posthog: PostHog\n baseURL?: string\n}\n\nexport class PostHogAnthropic extends AnthropicOriginal {\n private readonly phClient: PostHog\n public messages: WrappedMessages\n\n constructor(config: MonitoringAnthropicConfig) {\n const { posthog, ...anthropicConfig } = config\n super(anthropicConfig)\n this.phClient = posthog\n this.messages = new WrappedMessages(this, this.phClient)\n }\n}\n\nexport class WrappedMessages extends AnthropicOriginal.Messages {\n private readonly phClient: PostHog\n\n constructor(parentClient: PostHogAnthropic, phClient: PostHog) {\n super(parentClient)\n this.phClient = phClient\n }\n\n public create(body: MessageCreateParamsNonStreaming, options?: RequestOptions): APIPromise<Message>\n public create(\n body: MessageCreateParamsStreaming & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<Stream<RawMessageStreamEvent>>\n public create(\n body: MessageCreateParamsBase & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<Stream<RawMessageStreamEvent> | Message>\n public create(\n body: MessageCreateParams & MonitoringParams,\n options?: RequestOptions\n ): APIPromise<Message> | APIPromise<Stream<RawMessageStreamEvent>> {\n const {\n posthogDistinctId,\n posthogTraceId,\n posthogProperties,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n posthogPrivacyMode = false,\n posthogGroups,\n ...anthropicParams\n } = body\n\n const traceId = posthogTraceId ?? uuidv4()\n const startTime = Date.now()\n\n const parentPromise = super.create(anthropicParams, options)\n\n if (anthropicParams.stream) {\n return parentPromise.then((value) => {\n const passThroughStream = new PassThrough({ objectMode: true })\n let accumulatedContent = ''\n let usage: { inputTokens: number; outputTokens: number } = {\n inputTokens: 0,\n outputTokens: 0,\n }\n if ('tee' in value) {\n const anthropicStream = value\n ;(async () => {\n try {\n for await (const chunk of anthropicStream) {\n if ('delta' in chunk) {\n if ('text' in chunk.delta) {\n const delta = chunk?.delta?.text ?? ''\n accumulatedContent += delta\n }\n }\n if (chunk.type == 'message_start') {\n usage.inputTokens = chunk.message.usage.input_tokens ?? 0\n }\n if ('usage' in chunk) {\n usage.outputTokens = chunk.usage.output_tokens ?? 0\n }\n passThroughStream.write(chunk)\n }\n const latency = (Date.now() - startTime) / 1000\n sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model: anthropicParams.model,\n provider: 'anthropic',\n input: mergeSystemPrompt(anthropicParams, 'anthropic'),\n output: [{ content: accumulatedContent, role: 'assistant' }],\n latency,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: 200,\n usage,\n })\n passThroughStream.end()\n } catch (error: any) {\n // error handling\n sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model: anthropicParams.model,\n provider: 'anthropic',\n input: mergeSystemPrompt(anthropicParams, 'anthropic'),\n output: [],\n latency: 0,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: error?.status ? error.status : 500,\n usage: {\n inputTokens: 0,\n outputTokens: 0,\n },\n isError: true,\n error: JSON.stringify(error),\n })\n passThroughStream.emit('error', error)\n }\n })()\n }\n return passThroughStream as unknown as Stream<RawMessageStreamEvent>\n }) as APIPromise<Stream<RawMessageStreamEvent>>\n } else {\n const wrappedPromise = parentPromise.then(\n (result) => {\n if ('content' in result) {\n const latency = (Date.now() - startTime) / 1000\n sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model: anthropicParams.model,\n provider: 'anthropic',\n input: mergeSystemPrompt(anthropicParams, 'anthropic'),\n output: formatResponseAnthropic(result),\n latency,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: 200,\n usage: {\n inputTokens: result.usage.input_tokens ?? 0,\n outputTokens: result.usage.output_tokens ?? 0,\n },\n })\n }\n return result\n },\n (error: any) => {\n sendEventToPosthog({\n client: this.phClient,\n distinctId: posthogDistinctId ?? traceId,\n traceId,\n model: anthropicParams.model,\n provider: 'anthropic',\n input: mergeSystemPrompt(anthropicParams, 'anthropic'),\n output: [],\n latency: 0,\n baseURL: (this as any).baseURL ?? '',\n params: body,\n httpStatus: error?.status ? error.status : 500,\n usage: {\n inputTokens: 0,\n outputTokens: 0,\n },\n isError: true,\n error: JSON.stringify(error),\n })\n throw error\n }\n ) as APIPromise<Message>\n\n return wrappedPromise\n }\n }\n}\n\nexport default PostHogAnthropic\n"],"names":["getModelParams","params","modelParams","paramKeys","key","undefined","formatResponseAnthropic","response","output","choice","content","text","push","role","formatResponseOpenAI","choices","message","mergeSystemPrompt","provider","messages","system","systemMessage","withPrivacyMode","client","privacyMode","input","privacy_mode","sendEventToPosthog","distinctId","traceId","model","latency","baseURL","httpStatus","usage","isError","error","capture","errorData","$ai_is_error","$ai_error","event","properties","$ai_provider","$ai_model","$ai_model_parameters","$ai_input","posthogPrivacyMode","$ai_output_choices","$ai_http_status","$ai_input_tokens","inputTokens","$ai_output_tokens","outputTokens","$ai_latency","$ai_trace_id","$ai_base_url","posthogProperties","$process_person_profile","groups","posthogGroups","PostHogOpenAI","OpenAIOrignal","constructor","config","posthog","openAIConfig","phClient","chat","WrappedChat","Chat","parentClient","completions","WrappedCompletions","Completions","create","body","options","posthogDistinctId","posthogTraceId","openAIParams","uuidv4","startTime","Date","now","parentPromise","stream","then","value","passThroughStream","PassThrough","objectMode","accumulatedContent","openAIStream","chunk","delta","prompt_tokens","completion_tokens","write","end","status","JSON","stringify","emit","wrappedPromise","result","PostHogAzureOpenAI","AzureOpenAI","mapVercelParams","temperature","max_tokens","maxTokens","top_p","topP","frequency_penalty","frequencyPenalty","presence_penalty","presencePenalty","stop","stopSequences","mapVercelPrompt","prompt","map","p","Array","isArray","c","type","join","extractProvider","toLowerCase","providerName","split","createInstrumentationMiddleware","middleware","wrapGenerate","doGenerate","mergedParams","modelId","posthogModelOverride","posthogProviderOverride","promptTokens","completionTokens","wrapStream","doStream","generatedText","rest","transformStream","TransformStream","transform","controller","textDelta","enqueue","flush","pipeThrough","wrapVercelLanguageModel","wrappedModel","wrapLanguageModel","PostHogAnthropic","AnthropicOriginal","anthropicConfig","WrappedMessages","Messages","anthropicParams","anthropicStream","input_tokens","output_tokens"],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -3,6 +3,9 @@ import { PostHog } from 'posthog-node';
3
3
  import { RequestOptions, APIPromise } from 'openai/core';
4
4
  import { Stream } from 'openai/streaming';
5
5
  import { LanguageModelV1 } from 'ai';
6
+ import AnthropicOriginal from '@anthropic-ai/sdk';
7
+ import { RequestOptions as RequestOptions$1, APIPromise as APIPromise$1 } from '@anthropic-ai/sdk/core';
8
+ import { Stream as Stream$1 } from '@anthropic-ai/sdk/streaming';
6
9
 
7
10
  interface MonitoringParams {
8
11
  posthogDistinctId?: string;
@@ -79,4 +82,28 @@ interface ClientOptions {
79
82
  }
80
83
  declare const wrapVercelLanguageModel: (model: LanguageModelV1, phClient: PostHog, options: ClientOptions) => LanguageModelV1;
81
84
 
82
- export { PostHogAzureOpenAI as AzureOpenAI, PostHogOpenAI as OpenAI, wrapVercelLanguageModel as withTracing };
85
+ type MessageCreateParamsNonStreaming = AnthropicOriginal.Messages.MessageCreateParamsNonStreaming;
86
+ type MessageCreateParamsStreaming = AnthropicOriginal.Messages.MessageCreateParamsStreaming;
87
+ type Message = AnthropicOriginal.Messages.Message;
88
+ type RawMessageStreamEvent = AnthropicOriginal.Messages.RawMessageStreamEvent;
89
+ type MessageCreateParamsBase = AnthropicOriginal.Messages.MessageCreateParams;
90
+
91
+ interface MonitoringAnthropicConfig {
92
+ apiKey: string;
93
+ posthog: PostHog;
94
+ baseURL?: string;
95
+ }
96
+ declare class PostHogAnthropic extends AnthropicOriginal {
97
+ private readonly phClient;
98
+ messages: WrappedMessages;
99
+ constructor(config: MonitoringAnthropicConfig);
100
+ }
101
+ declare class WrappedMessages extends AnthropicOriginal.Messages {
102
+ private readonly phClient;
103
+ constructor(parentClient: PostHogAnthropic, phClient: PostHog);
104
+ create(body: MessageCreateParamsNonStreaming, options?: RequestOptions$1): APIPromise$1<Message>;
105
+ create(body: MessageCreateParamsStreaming & MonitoringParams, options?: RequestOptions$1): APIPromise$1<Stream$1<RawMessageStreamEvent>>;
106
+ create(body: MessageCreateParamsBase & MonitoringParams, options?: RequestOptions$1): APIPromise$1<Stream$1<RawMessageStreamEvent> | Message>;
107
+ }
108
+
109
+ export { PostHogAnthropic as Anthropic, PostHogAzureOpenAI as AzureOpenAI, PostHogOpenAI as OpenAI, wrapVercelLanguageModel as withTracing };