Skip to main content

TypeScript Manual Logger

Logging calls to custom models is supported via the Helicone NodeJS SDK.
1

To get started, install the `@helicone/helpers` package

2

Set `HELICONE_API_KEY` as an environment variable

You can also set the Helicone API Key in your code (See below)
3

Create a new HeliconeManualLogger instance

4

Log your request

API Reference

HeliconeManualLogger

HeliconeLogBuilder

The HeliconeLogBuilder provides a simplified way to handle streaming LLM responses with better error handling and async support. It’s created using the logBuilder method of HeliconeManualLogger.

Methods

  • setError(error: any): Sets an error that occurred during the request
  • toReadableStream<T>(stream: Stream<T>): Collects streaming responses and converts them to a readable stream while capturing the response for logging
  • setResponse(body: string): Sets the response body for non-streaming responses
  • sendLog(): Sends the log to Helicone

logRequest

Parameters

  1. request: HeliconeLogRequest - The request object to log
  1. operation: (resultRecorder: HeliconeResultRecorder) => Promise<T> - The operation to be executed and logged
  1. additionalHeaders: Record<string, string>

Available Methods

The HeliconeManualLogger class provides several methods for logging different types of requests and responses. Here’s a comprehensive overview of each method:

logRequest

Used for logging non-streaming requests and responses with full control over the operation.
Parameters:
  • request: The request object to log
  • operation: A function that performs the actual API call and records the results
  • additionalHeaders: Optional additional headers to include with the log request
Example:

logStream

Used for logging streaming operations with full control over stream handling.
Parameters:
  • request: The request object to log
  • operation: A function that performs the streaming API call and attaches the stream to the recorder
  • additionalHeaders: Optional additional headers to include with the log request
Example:

logSingleStream

A simplified method for logging a single ReadableStream without needing to manage the operation.
Parameters:
  • request: The request object to log
  • stream: The ReadableStream to consume and log
  • additionalHeaders: Optional additional headers to include with the log request
Example:

logSingleRequest

Used for logging a single request with a response body without needing to manage the operation.
Parameters:
  • request: The request object to log
  • body: The response body as a string
  • additionalHeaders: Optional additional headers to include with the log request
Example:

logBuilder

The recommended method for handling streaming responses with better error handling and simplified workflow.
Parameters:
  • request: The request object to log
  • additionalHeaders: Optional additional headers to include with the log request
Example:

Streaming Examples

Using the Async Stream Parser

Helicone provides an asynchronous stream parser for efficient handling of streamed responses. This is particularly useful when working with custom integrations that support streaming. Here’s an example of how to use the async stream parser with a custom integration:
The async stream parser offers several benefits:
  • Processes stream chunks asynchronously for better performance
  • Reduces latency when handling large streamed responses
  • Provides more reliable token counting for streamed content

Using Vercel’s after Function with Streaming

When building applications with Next.js App Router on Vercel, you can use the after function to log streaming responses without blocking the client response:
For a comprehensive guide on using the Manual Logger with streaming functionality, check out our Manual Logger with Streaming cookbook.