@posthog/ai
Version:
PostHog Node.js AI integrations
63 lines (59 loc) • 3.42 kB
TypeScript
import OpenAIOrignal, { 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;
}
type ChatCompletion = OpenAIOrignal.ChatCompletion;
type ChatCompletionChunk = OpenAIOrignal.ChatCompletionChunk;
type ChatCompletionCreateParamsBase = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParams;
type ChatCompletionCreateParamsNonStreaming = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParamsNonStreaming;
type ChatCompletionCreateParamsStreaming = OpenAIOrignal.Chat.Completions.ChatCompletionCreateParamsStreaming;
type ResponsesCreateParamsBase = OpenAIOrignal.Responses.ResponseCreateParams;
type ResponsesCreateParamsNonStreaming = OpenAIOrignal.Responses.ResponseCreateParamsNonStreaming;
type ResponsesCreateParamsStreaming = OpenAIOrignal.Responses.ResponseCreateParamsStreaming;
interface MonitoringOpenAIConfig extends ClientOptions {
apiKey: string;
posthog: PostHog;
baseURL?: string;
}
type RequestOptions = Record<string, any>;
declare class PostHogOpenAI extends OpenAIOrignal {
private readonly phClient;
chat: WrappedChat;
responses: WrappedResponses;
constructor(config: MonitoringOpenAIConfig);
}
declare class WrappedChat extends OpenAIOrignal.Chat {
constructor(parentClient: PostHogOpenAI, phClient: PostHog);
completions: WrappedCompletions;
}
declare class WrappedCompletions extends OpenAIOrignal.Chat.Completions {
private readonly phClient;
constructor(client: OpenAIOrignal, 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 OpenAIOrignal.Responses {
private readonly phClient;
constructor(client: OpenAIOrignal, phClient: PostHog);
create(body: ResponsesCreateParamsNonStreaming & MonitoringParams, options?: RequestOptions): APIPromise<OpenAIOrignal.Responses.Response>;
create(body: ResponsesCreateParamsStreaming & MonitoringParams, options?: RequestOptions): APIPromise<Stream<OpenAIOrignal.Responses.ResponseStreamEvent>>;
create(body: ResponsesCreateParamsBase & MonitoringParams, options?: RequestOptions): APIPromise<OpenAIOrignal.Responses.Response | Stream<OpenAIOrignal.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 };