@posthog/ai 3.3.2 → 4.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/CHANGELOG.md +4 -0
- package/lib/anthropic/index.cjs.js +293 -0
- package/lib/anthropic/index.cjs.js.map +1 -0
- package/lib/anthropic/index.d.ts +45 -0
- package/lib/anthropic/index.esm.js +282 -0
- package/lib/anthropic/index.esm.js.map +1 -0
- package/lib/index.cjs.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.esm.js.map +1 -1
- package/lib/langchain/index.cjs.js +1003 -0
- package/lib/langchain/index.cjs.js.map +1 -0
- package/lib/langchain/index.d.ts +68 -0
- package/lib/langchain/index.esm.js +979 -0
- package/lib/langchain/index.esm.js.map +1 -0
- package/lib/openai/index.cjs.js +286 -0
- package/lib/openai/index.cjs.js.map +1 -0
- package/lib/openai/index.d.ts +49 -0
- package/lib/openai/index.esm.js +274 -0
- package/lib/openai/index.esm.js.map +1 -0
- package/lib/posthog-ai/src/anthropic/index.d.ts +1 -0
- package/lib/posthog-ai/src/langchain/index.d.ts +1 -0
- package/lib/posthog-ai/src/openai/index.d.ts +3 -2
- package/lib/posthog-ai/src/vercel/index.d.ts +1 -0
- package/lib/vercel/index.cjs.js +408 -0
- package/lib/vercel/index.cjs.js.map +1 -0
- package/lib/vercel/index.d.ts +21 -0
- package/lib/vercel/index.esm.js +404 -0
- package/lib/vercel/index.esm.js.map +1 -0
- package/package.json +28 -1
- package/src/anthropic/index.ts +2 -0
- package/src/langchain/index.ts +1 -0
- package/src/openai/index.ts +4 -2
- package/src/vercel/index.ts +1 -0
- package/tsconfig.json +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../src/utils.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 posthogModelOverride?: string\n posthogProviderOverride?: string\n posthogCostOverride?: CostOverride\n}\n\nexport interface CostOverride {\n inputCost: number\n outputCost: number\n}\n\nexport const getModelParams = (\n params: ((ChatCompletionCreateParamsBase | MessageCreateParams) & MonitoringParams) | null\n): Record<string, any> => {\n if (!params) {\n return {}\n }\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?: {\n inputTokens?: number\n outputTokens?: number\n reasoningTokens?: any\n cacheReadInputTokens?: any\n cacheCreationInputTokens?: any\n }\n params: (ChatCompletionCreateParamsBase | MessageCreateParams) & MonitoringParams\n isError?: boolean\n error?: string\n tools?: any\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 tools,\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 let costOverrideData = {}\n if (params.posthogCostOverride) {\n const inputCostUSD = (params.posthogCostOverride.inputCost ?? 0) * (usage.inputTokens ?? 0)\n const outputCostUSD = (params.posthogCostOverride.outputCost ?? 0) * (usage.outputTokens ?? 0)\n costOverrideData = {\n $ai_input_cost_usd: inputCostUSD,\n $ai_output_cost_usd: outputCostUSD,\n $ai_total_cost_usd: inputCostUSD + outputCostUSD,\n }\n }\n\n const additionalTokenValues = {\n ...(usage.reasoningTokens ? { $ai_reasoning_tokens: usage.reasoningTokens } : {}),\n ...(usage.cacheReadInputTokens ? { $ai_cache_read_input_tokens: usage.cacheReadInputTokens } : {}),\n ...(usage.cacheCreationInputTokens ? { $ai_cache_creation_input_tokens: usage.cacheCreationInputTokens } : {}),\n }\n\n client.capture({\n distinctId: distinctId ?? traceId,\n event: '$ai_generation',\n properties: {\n $ai_provider: params.posthogProviderOverride ?? provider,\n $ai_model: params.posthogModelOverride ?? 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 ...additionalTokenValues,\n $ai_latency: latency,\n $ai_trace_id: traceId,\n $ai_base_url: baseURL,\n ...params.posthogProperties,\n ...(distinctId ? {} : { $process_person_profile: false }),\n ...(tools ? { $ai_tools: tools } : {}),\n ...errorData,\n ...costOverrideData,\n },\n groups: params.posthogGroups,\n })\n }\n}\n","import AnthropicOriginal from '@anthropic-ai/sdk'\nimport { PostHog } from 'posthog-node'\nimport { v4 as uuidv4 } from 'uuid'\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 let accumulatedContent = ''\n const usage: {\n inputTokens: number\n outputTokens: number\n cacheCreationInputTokens?: number\n cacheReadInputTokens?: number\n } = {\n inputTokens: 0,\n outputTokens: 0,\n cacheCreationInputTokens: 0,\n cacheReadInputTokens: 0,\n }\n if ('tee' in value) {\n const [stream1, stream2] = value.tee()\n ;(async () => {\n try {\n for await (const chunk of stream1) {\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 usage.cacheCreationInputTokens = chunk.message.usage.cache_creation_input_tokens ?? 0\n usage.cacheReadInputTokens = chunk.message.usage.cache_read_input_tokens ?? 0\n }\n if ('usage' in chunk) {\n usage.outputTokens = chunk.usage.output_tokens ?? 0\n }\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 } 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 }\n })()\n\n // Return the other stream to the user\n return stream2\n }\n return value\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 cacheCreationInputTokens: result.usage.cache_creation_input_tokens ?? 0,\n cacheReadInputTokens: result.usage.cache_read_input_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\nexport { PostHogAnthropic as Anthropic }\n"],"names":["getModelParams","params","modelParams","paramKeys","key","undefined","formatResponseAnthropic","response","output","choice","content","text","push","role","mergeSystemPrompt","provider","messages","system","systemMessage","withPrivacyMode","client","privacyMode","input","privacy_mode","sendEventToPosthog","distinctId","traceId","model","latency","baseURL","httpStatus","usage","isError","error","tools","capture","errorData","$ai_is_error","$ai_error","costOverrideData","posthogCostOverride","inputCostUSD","inputCost","inputTokens","outputCostUSD","outputCost","outputTokens","$ai_input_cost_usd","$ai_output_cost_usd","$ai_total_cost_usd","additionalTokenValues","reasoningTokens","$ai_reasoning_tokens","cacheReadInputTokens","$ai_cache_read_input_tokens","cacheCreationInputTokens","$ai_cache_creation_input_tokens","event","properties","$ai_provider","posthogProviderOverride","$ai_model","posthogModelOverride","$ai_model_parameters","$ai_input","posthogPrivacyMode","$ai_output_choices","$ai_http_status","$ai_input_tokens","$ai_output_tokens","$ai_latency","$ai_trace_id","$ai_base_url","posthogProperties","$process_person_profile","$ai_tools","groups","posthogGroups","PostHogAnthropic","AnthropicOriginal","constructor","config","posthog","anthropicConfig","phClient","WrappedMessages","Messages","parentClient","create","body","options","posthogDistinctId","posthogTraceId","anthropicParams","uuidv4","startTime","Date","now","parentPromise","stream","then","value","accumulatedContent","stream1","stream2","tee","chunk","delta","type","message","input_tokens","cache_creation_input_tokens","cache_read_input_tokens","output_tokens","status","JSON","stringify","wrappedPromise","result"],"mappings":"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"}
|