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
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 requesttoReadableStream<T>(stream: Stream<T>)
: Collects streaming responses and converts them to a readable stream while capturing the response for loggingsetResponse(body: string)
: Sets the response body for non-streaming responsessendLog()
: Sends the log to Helicone
logRequest
Parameters
request
:HeliconeLogRequest
- The request object to log
operation
:(resultRecorder: HeliconeResultRecorder) => Promise<T>
- The operation to be executed and logged
additionalHeaders
:Record<string, string>
- Additional headers to be sent with the request
- This can be used to use features like session management, custom properties, etc.
Available Methods
TheHeliconeManualLogger
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.request
: The request object to logoperation
: A function that performs the actual API call and records the resultsadditionalHeaders
: Optional additional headers to include with the log request
logStream
Used for logging streaming operations with full control over stream handling.request
: The request object to logoperation
: A function that performs the streaming API call and attaches the stream to the recorderadditionalHeaders
: Optional additional headers to include with the log request
logSingleStream
A simplified method for logging a single ReadableStream without needing to manage the operation.request
: The request object to logstream
: The ReadableStream to consume and logadditionalHeaders
: Optional additional headers to include with the log request
logSingleRequest
Used for logging a single request with a response body without needing to manage the operation.request
: The request object to logbody
: The response body as a stringadditionalHeaders
: Optional additional headers to include with the log request
logBuilder
The recommended method for handling streaming responses with better error handling and simplified workflow.request
: The request object to logadditionalHeaders
: Optional additional headers to include with the log request
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:- 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: