@posthog/ai
Version:
PostHog Node.js AI integrations
63 lines (59 loc) • 1.84 kB
TypeScript
import { GoogleGenAI } from '@google/genai';
import { PostHog } from 'posthog-node';
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 GenerateContentRequest = {
model: string;
contents: any;
config?: any;
[key: string]: any;
};
type GenerateContentResponse = {
text?: string;
candidates?: any[];
usageMetadata?: {
promptTokenCount?: number;
candidatesTokenCount?: number;
totalTokenCount?: number;
thoughtsTokenCount?: number;
cachedContentTokenCount?: number;
};
[key: string]: any;
};
interface MonitoringGeminiConfig {
apiKey?: string;
vertexai?: boolean;
project?: string;
location?: string;
apiVersion?: string;
posthog: PostHog;
}
declare class PostHogGoogleGenAI {
private readonly phClient;
private readonly client;
models: WrappedModels;
constructor(config: MonitoringGeminiConfig);
}
declare class WrappedModels {
private readonly phClient;
private readonly client;
constructor(client: GoogleGenAI, phClient: PostHog);
generateContent(params: GenerateContentRequest & MonitoringParams): Promise<GenerateContentResponse>;
generateContentStream(params: GenerateContentRequest & MonitoringParams): AsyncGenerator<any, void, unknown>;
private formatInput;
private formatInputForPostHog;
}
export { PostHogGoogleGenAI as Gemini, PostHogGoogleGenAI, WrappedModels, PostHogGoogleGenAI as default };