UNPKG

@posthog/ai

Version:
66 lines (62 loc) 3.41 kB
import { OpenAI, APIPromise, ClientOptions } from 'openai'; import { PostHog } from 'posthog-node'; import { Stream } from 'openai/streaming'; import { ParsedResponse } from 'openai/resources/responses/responses'; interface MonitoringParams { posthogDistinctId?: string; posthogTraceId?: string; posthogProperties?: Record<string, any>; posthogPrivacyMode?: boolean; posthogGroups?: Record<string, any>; posthogModelOverride?: string; posthogProviderOverride?: string; posthogCostOverride?: CostOverride; posthogCaptureImmediate?: boolean; } interface CostOverride { inputCost: number; outputCost: number; } declare const Chat: typeof OpenAI.Chat; declare const Completions: typeof OpenAI.Chat.Completions; declare const Responses: typeof OpenAI.Responses; type ChatCompletion = OpenAI.ChatCompletion; type ChatCompletionChunk = OpenAI.ChatCompletionChunk; type ChatCompletionCreateParamsBase = OpenAI.Chat.Completions.ChatCompletionCreateParams; type ChatCompletionCreateParamsNonStreaming = OpenAI.Chat.Completions.ChatCompletionCreateParamsNonStreaming; type ChatCompletionCreateParamsStreaming = OpenAI.Chat.Completions.ChatCompletionCreateParamsStreaming; type ResponsesCreateParamsBase = OpenAI.Responses.ResponseCreateParams; type ResponsesCreateParamsNonStreaming = OpenAI.Responses.ResponseCreateParamsNonStreaming; type ResponsesCreateParamsStreaming = OpenAI.Responses.ResponseCreateParamsStreaming; interface MonitoringOpenAIConfig extends ClientOptions { apiKey: string; posthog: PostHog; baseURL?: string; } type RequestOptions = Record<string, any>; declare class PostHogOpenAI extends OpenAI { private readonly phClient; chat: WrappedChat; responses: WrappedResponses; constructor(config: MonitoringOpenAIConfig); } declare class WrappedChat extends Chat { constructor(parentClient: PostHogOpenAI, phClient: PostHog); completions: WrappedCompletions; } declare class WrappedCompletions extends Completions { private readonly phClient; constructor(client: OpenAI, phClient: PostHog); create(body: ChatCompletionCreateParamsNonStreaming & MonitoringParams, options?: RequestOptions): APIPromise<ChatCompletion>; create(body: ChatCompletionCreateParamsStreaming & MonitoringParams, options?: RequestOptions): APIPromise<Stream<ChatCompletionChunk>>; create(body: ChatCompletionCreateParamsBase & MonitoringParams, options?: RequestOptions): APIPromise<ChatCompletion | Stream<ChatCompletionChunk>>; } declare class WrappedResponses extends Responses { private readonly phClient; constructor(client: OpenAI, phClient: PostHog); create(body: ResponsesCreateParamsNonStreaming & MonitoringParams, options?: RequestOptions): APIPromise<OpenAI.Responses.Response>; create(body: ResponsesCreateParamsStreaming & MonitoringParams, options?: RequestOptions): APIPromise<Stream<OpenAI.Responses.ResponseStreamEvent>>; create(body: ResponsesCreateParamsBase & MonitoringParams, options?: RequestOptions): APIPromise<OpenAI.Responses.Response | Stream<OpenAI.Responses.ResponseStreamEvent>>; parse<Params extends ResponsesCreateParamsBase, ParsedT = any>(body: Params & MonitoringParams, options?: RequestOptions): APIPromise<ParsedResponse<ParsedT>>; } export { PostHogOpenAI as OpenAI, PostHogOpenAI, WrappedChat, WrappedCompletions, WrappedResponses, PostHogOpenAI as default };