helper

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 23, 2026 License: MIT Imports: 6 Imported by: 0

README

helper

Utility functions for relay provider adaptors, covering SSE streaming, response ID generation, and streaming response construction.

Key Functions

  • SetEventStreamHeaders -- sets SSE headers (text/event-stream, no-cache, keep-alive) on an http.ResponseWriter.
  • StringData / ObjectData -- write an SSE data: line to the writer and flush.
  • Done -- writes the SSE [DONE] marker.
  • GetResponseID -- generates a chatcmpl-<id> response ID from a request ID.
  • GenerateStartEmptyResponse -- creates an empty start chunk for streaming chat completions.
  • GenerateStopResponse -- creates a stop chunk with finish_reason: "stop".
  • GenerateFinalUsageResponse -- creates a final chunk carrying usage stats.

StreamScanner

  • StreamScanner -- reads SSE data: lines from an io.Reader.
  • StreamScannerHandler -- iterates SSE lines from an http.Response, calling a handler per line until [DONE] or EOF.

Usage

helper.SetEventStreamHeaders(w)
helper.ObjectData(w, helper.GenerateStartEmptyResponse(id, createdAt, model, nil))
helper.Done(w)

Documentation

Overview

Package helper provides utility functions for relay providers, adapted from LingRein's pkg/relay/helper with gin.Context dependencies removed.

These helpers handle SSE streaming, response ID generation, and other common tasks that provider adaptors need.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Done

func Done(w http.ResponseWriter)

Done writes the SSE [DONE] marker.

func GenerateFinalUsageResponse

func GenerateFinalUsageResponse(id string, createAt int64, model string, usage *dto.Usage) *dto.ChatCompletionsStreamResponse

GenerateFinalUsageResponse creates a final usage response for streaming.

func GenerateStartEmptyResponse

func GenerateStartEmptyResponse(id string, createAt int64, model string, systemFingerprint *string) *dto.ChatCompletionsStreamResponse

GenerateStartEmptyResponse creates an empty start response for streaming.

func GenerateStopResponse

func GenerateStopResponse(id string, createAt int64, model string, systemFingerprint *string) *dto.ChatCompletionsStreamResponse

GenerateStopResponse creates a stop response for streaming.

func GetResponseID

func GetResponseID(requestID string) string

GetResponseID generates a response ID from a request ID.

func ObjectData

func ObjectData(w http.ResponseWriter, object any) error

ObjectData marshals an object to JSON and writes it as an SSE data line.

func SetEventStreamHeaders

func SetEventStreamHeaders(w http.ResponseWriter)

SetEventStreamHeaders sets SSE headers on an http.ResponseWriter.

func StreamScannerHandler

func StreamScannerHandler(resp *http.Response, handler func(data string) error) error

StreamScannerHandler processes a streaming response, calling the handler for each data line. Returns when the stream is done or an error occurs.

func StringData

func StringData(w http.ResponseWriter, str string) error

StringData writes an SSE data line to the writer.

Types

type StreamResult

type StreamResult struct {
	Data string
	Done bool
}

StreamResult holds the result of a stream scan.

type StreamScanner

type StreamScanner struct {
	// contains filtered or unexported fields
}

StreamScanner wraps an io.Reader to scan SSE lines.

func NewStreamScanner

func NewStreamScanner(reader io.Reader) *StreamScanner

NewStreamScanner creates a new StreamScanner.

func (*StreamScanner) Scan

func (s *StreamScanner) Scan() (string, error)

Scan returns the next SSE data line. Returns io.EOF at end.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL