UNPKG

@posthog/ai

Version:
102 lines (98 loc) 3.44 kB
import { PostHog } from 'posthog-node'; import { Trace, TracingProcessor, Span, SpanData } from '@openai/agents-core'; type DistinctIdResolver = string | ((trace: Trace) => string | null | undefined); interface PostHogTracingProcessorOptions { client: PostHog; distinctId?: DistinctIdResolver; privacyMode?: boolean; groups?: Record<string, any>; properties?: Record<string, any>; } /** * A tracing processor that sends OpenAI Agents SDK traces to PostHog. * * Implements the TracingProcessor interface from the OpenAI Agents SDK * and maps agent traces, spans, and generations to PostHog's LLM analytics events. * * @example * ```typescript * import { PostHogTracingProcessor } from '@posthog/ai/openai-agents' * import { addTraceProcessor } from '@openai/agents' * * const processor = new PostHogTracingProcessor({ * client: posthog, * distinctId: 'user@example.com', * }) * addTraceProcessor(processor) * ``` */ declare class PostHogTracingProcessor implements TracingProcessor { private _client; private _distinctId; private _privacyMode; private _groups; private _properties; private _spanStartTimes; private _traceMetadata; private _maxTrackedEntries; constructor(options: PostHogTracingProcessorOptions); private _getDistinctId; private _withPrivacyMode; private _prepareCapturedValue; private _evictStaleEntries; private _captureEvent; private _baseProperties; private _getErrorProperties; onTraceStart(trace: Trace): Promise<void>; onTraceEnd(trace: Trace): Promise<void>; onSpanStart(span: Span<SpanData>): Promise<void>; onSpanEnd(span: Span<SpanData>): Promise<void>; shutdown(): Promise<void>; forceFlush(): Promise<void>; private _handleGenerationSpan; private _handleResponseSpan; private _handleFunctionSpan; private _handleAgentSpan; private _handleHandoffSpan; private _handleGuardrailSpan; private _handleCustomSpan; private _handleAudioSpan; private _handleMcpSpan; private _handleGenericSpan; } type InstrumentOptions = PostHogTracingProcessorOptions; /** * One-liner to instrument OpenAI Agents SDK with PostHog tracing. * * This registers a PostHogTracingProcessor with the OpenAI Agents SDK, * automatically capturing traces, spans, and LLM generations. * * @param options - Configuration options * @returns The registered processor instance * * @example * ```typescript * import { instrument } from '@posthog/ai/openai-agents' * import PostHog from 'posthog-node' * * const phClient = new PostHog('<API_KEY>') * * // Simple setup — await before running agents * await instrument({ client: phClient, distinctId: 'user@example.com' }) * * // With dynamic distinct ID * await instrument({ * client: phClient, * distinctId: (trace) => trace.metadata?.userId, * privacyMode: true, * properties: { environment: 'production' }, * }) * * // Now run agents as normal - traces automatically sent to PostHog * import { Agent, run } from '@openai/agents' * const agent = new Agent({ name: 'Assistant', instructions: 'You are helpful.' }) * const result = await run(agent, 'Hello!') * ``` */ declare function instrument(options: InstrumentOptions): Promise<PostHogTracingProcessor>; export { type DistinctIdResolver, type InstrumentOptions, PostHogTracingProcessor, type PostHogTracingProcessorOptions, instrument };