UNPKG

@helicone/helpers

Version:

A Node.js wrapper for some of Helicone's common functionalities

116 lines 4.83 kB
import { IHeliconeManualLogger, HeliconeLogRequest } from "./types"; import { HeliconeLogBuilder } from "./HeliconeLogBuilder"; export { HeliconeLogBuilder }; export declare class HeliconeManualLogger { private apiKey; private headers; private LOGGING_ENDPOINT; constructor(opts: IHeliconeManualLogger); /** * Creates a log builder for more flexible stream handling with error management * @param request - The request object to log * @param additionalHeaders - Additional headers to send with the request * @returns A HeliconeLogBuilder instance */ logBuilder(request: HeliconeLogRequest, additionalHeaders?: Record<string, string>): HeliconeLogBuilder; /** * Logs a custom request to Helicone * @param request - The request object to log * @param operation - The operation which will be executed and logged * @param additionalHeaders - Additional headers to send with the request * @returns The result of the `operation` function */ logRequest<T>(request: HeliconeLogRequest, operation: (resultRecorder: HeliconeResultRecorder) => Promise<T>, additionalHeaders?: Record<string, string>): Promise<T>; /** * Logs a single stream to Helicone * @param request - The request object to log * @param stream - The ReadableStream to consume and log * @param additionalHeaders - Additional headers to send with the request * @returns A Promise that resolves when logging is complete */ logSingleStream(request: HeliconeLogRequest, stream: ReadableStream, additionalHeaders?: Record<string, string>): Promise<void>; /** * Logs a single request with a response body to Helicone * @param request - The request object to log * @param body - The response body as a string * @param additionalHeaders - Additional headers to send with the request * @param latencyMs - The latency of the request in milliseconds * @returns A Promise that resolves when logging is complete * * @example * ```typescript * helicone.logSingleRequest(request, body, { additionalHeaders: { "Helicone-User-Id": userId }, latencyMs: 1000 }); * ``` */ logSingleRequest(request: HeliconeLogRequest, body: string, options: { additionalHeaders?: Record<string, string>; latencyMs?: number; }): Promise<void>; /** * Logs a streaming operation to Helicone * @param request - The request object to log * @param operation - The operation which will be executed and logged, with access to a stream recorder * @param additionalHeaders - Additional headers to send with the request * @returns The result of the `operation` function * * @example * ```typescript * const response = await llmProvider.createChatCompletion({ stream: true, ... }); * const [stream1, stream2] = response.tee(); * * helicone.logStream( * requestBody, * async (resultRecorder) => { * resultRecorder.attachStream(stream2.toReadableStream()); * return stream1; * }, * { "Helicone-User-Id": userId } * ); * ``` */ logStream<T>(request: HeliconeLogRequest, operation: (resultRecorder: HeliconeStreamResultRecorder) => Promise<T>, additionalHeaders?: Record<string, string>): Promise<T>; sendLog(request: HeliconeLogRequest, response: Record<string, any> | string, options: { startTime: number; endTime: number; additionalHeaders?: Record<string, string>; timeToFirstToken?: number; status?: number; }): Promise<void>; } /** * Recorder for handling and processing streams in Helicone logging * Used to capture and process streaming responses from LLM providers */ declare class HeliconeStreamResultRecorder { private streams; firstChunkTimeUnix: number | null; constructor(); /** * Attaches a ReadableStream to be processed * @param stream - The ReadableStream to attach */ attachStream(stream: ReadableStream): void; /** * Processes all attached streams and returns their contents as strings * @returns Promise resolving to an array of strings containing the content of each stream */ getStreamTexts(): Promise<string[]>; } /** * Recorder for handling and storing results in Helicone logging * Used to capture non-streaming responses from operations */ declare class HeliconeResultRecorder { private results; /** * Appends data to the results object * @param data - The data to append to the results */ appendResults(data: Record<string, any>): void; /** * Gets the current results * @returns The current results object */ getResults(): Record<string, any>; } //# sourceMappingURL=HeliconeManualLogger.d.ts.map