@posthog/ai
Version:
PostHog Node.js AI integrations
47 lines (42 loc) • 1.99 kB
TypeScript
import AnthropicOriginal from '@anthropic-ai/sdk';
import { PostHog } from 'posthog-node';
import { RequestOptions, APIPromise } from '@anthropic-ai/sdk/core';
import { Stream } from '@anthropic-ai/sdk/streaming';
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 MessageCreateParamsNonStreaming = AnthropicOriginal.Messages.MessageCreateParamsNonStreaming;
type MessageCreateParamsStreaming = AnthropicOriginal.Messages.MessageCreateParamsStreaming;
type Message = AnthropicOriginal.Messages.Message;
type RawMessageStreamEvent = AnthropicOriginal.Messages.RawMessageStreamEvent;
type MessageCreateParamsBase = AnthropicOriginal.Messages.MessageCreateParams;
interface MonitoringAnthropicConfig {
apiKey: string;
posthog: PostHog;
baseURL?: string;
}
declare class PostHogAnthropic extends AnthropicOriginal {
private readonly phClient;
messages: WrappedMessages;
constructor(config: MonitoringAnthropicConfig);
}
declare class WrappedMessages extends AnthropicOriginal.Messages {
private readonly phClient;
constructor(parentClient: PostHogAnthropic, phClient: PostHog);
create(body: MessageCreateParamsNonStreaming, options?: RequestOptions): APIPromise<Message>;
create(body: MessageCreateParamsStreaming & MonitoringParams, options?: RequestOptions): APIPromise<Stream<RawMessageStreamEvent>>;
create(body: MessageCreateParamsBase & MonitoringParams, options?: RequestOptions): APIPromise<Stream<RawMessageStreamEvent> | Message>;
}
export { PostHogAnthropic as Anthropic, PostHogAnthropic, WrappedMessages, PostHogAnthropic as default };