UNPKG

@maximai/maxim-js

Version:

Maxim AI JS SDK. Visit https://getmaxim.ai for more info.

99 lines (98 loc) 3.24 kB
import type OpenAI from "openai"; import type { MaximLogger } from "../logger"; import type { Generation, Trace } from "../components"; type ResponseCreateParamsNonStreaming = OpenAI.Responses.ResponseCreateParamsNonStreaming; type ResponseCreateParamsStreaming = OpenAI.Responses.ResponseCreateParamsStreaming; type Response = OpenAI.Responses.Response; /** * Async stream wrapper that logs to Maxim when the stream completes. * Wraps the OpenAI ResponseStream and captures the final response for logging. * Also tracks streaming metrics like time to first token and tokens per second. */ declare class ResponseStreamWrapper implements AsyncIterable<OpenAI.Responses.ResponseStreamEvent> { private streamManager; private generation; private trace; private isLocalTrace; private capturedResponse; private consumed; private startTime; private firstTokenTime; private endTime; constructor(streamManager: ReturnType<OpenAI["responses"]["stream"]>, generation: Generation | null, trace: Trace | null, isLocalTrace: boolean); [Symbol.asyncIterator](): AsyncIterator<OpenAI.Responses.ResponseStreamEvent>; /** * Check if the event has actual content (text delta). */ private hasContent; /** * Get output tokens from the final response usage. */ private getOutputTokens; private finalizeLoggingAsync; } /** * Wrapped OpenAI Responses that automatically logs to Maxim. * * @example * ```typescript * const client = new MaximOpenAIClient(openai, logger); * * // Non-streaming * const response = await client.responses.create({ * model: "gpt-4.1", * input: "Hello, world!" * }); * * // Streaming * const stream = await client.responses.stream({ * model: "gpt-4.1", * input: "Tell me a story" * }); * for await (const event of stream) { * // process events * } * // Logging happens automatically when stream completes * ``` */ export declare class MaximOpenAIResponses { private client; private logger; constructor(client: OpenAI, logger: MaximLogger); /** * Start a trace and generation for a Responses API call. */ private startTraceAndGeneration; /** * Creates a response with automatic Maxim logging. * * @example * ```typescript * const response = await client.responses.create({ * model: "gpt-4.1", * input: "What is the meaning of life?" * }); * ``` */ create(params: ResponseCreateParamsNonStreaming, options?: OpenAI.RequestOptions): Promise<Response>; /** * Creates a streaming response with automatic Maxim logging. * Logging happens automatically when the stream is consumed. * * @example * ```typescript * const stream = client.responses.stream({ * model: "gpt-4.1", * input: "Tell me a story" * }); * for await (const event of stream) { * if (event.type === 'response.output_text.delta') { * process.stdout.write(event.delta); * } * } * // Logging happens automatically when stream completes * ``` */ stream(params: ResponseCreateParamsStreaming, options?: OpenAI.RequestOptions): ResponseStreamWrapper; } export {};