Member Junction
    Preparing search index...

    Class BaseLLMAbstract

    Base class for all LLM sub-class implementations. Not all sub-classes will support all methods. If a method is not supported an exception will be thrown.

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    _additionalSettings: Record<string, any> = {}

    Protected property to store additional provider-specific settings

    thinkingStreamState: ThinkingStreamState = null

    State tracking for streaming thinking extraction Providers should initialize this if they support thinking models

    Accessors

    • get SupportsPrefill(): boolean

      Whether this LLM provider supports assistant prefill (pre-seeding the start of the model's response). Providers that support prefill should override this to return true. This is used as a code-level default when database metadata (AIModelType/AIModel/AIModelVendor.SupportsPrefill) is null. Database values of true/false override this getter.

      Returns boolean

    • get SupportsStreaming(): boolean

      Check if this provider supports streaming

      Returns boolean

      true if streaming is supported, false otherwise

    Methods

    • Process multiple chat completion requests in parallel. This is useful for:

      • Generating multiple variations with different parameters (temperature, etc.)
      • Getting multiple responses to compare or select from
      • Improving reliability by sending the same request multiple times

      Parameters

      Returns Promise<ChatResult[]>

      Promise resolving to an array of ChatResults in the same order as the input params

    • Clear all additional settings This is useful for resetting the state of the provider or when switching between different configurations.

      Returns void

    • Extract thinking content from non-streaming content This method handles case-insensitive extraction of thinking blocks

      Parameters

      • content: string

      Returns { content: string; thinking?: string }

    • Create the final response object from streaming results

      Parameters

      • accumulatedContent: string

        The complete content accumulated from all chunks

      • lastChunk: any

        The last chunk received from the stream

      • usage: any

        The usage information (tokens, etc.)

      Returns ChatResult

      A complete ChatResult object

    • Get the thinking tag format for this provider Providers can override this to customize the thinking tag format

      Returns { close: string; open: string }

    • Process streaming chunk with thinking extraction This method handles case-insensitive extraction across chunk boundaries

      Parameters

      • rawContent: string

      Returns string

    • Process a streaming chunk from the provider

      Parameters

      • chunk: any

        The raw chunk from the provider

      Returns { content: string; finishReason?: string; usage?: any }

      Processed content and metadata

    • Hook invoked at the start AND end (in finally) of every streaming chat completion to reset per-request streaming state. Default is a no-op; providers that maintain instance-level streaming state (e.g., Anthropic / OpenAI thinking-block accumulators) MUST override this. See audit R2-C5 for context — without this, state from a prior request bleeds into the next one and accumulated buffers grow unbounded across the singleton's lifetime.

      Returns void

    • Set additional provider-specific settings Subclasses should override this method to validate required settings

      Parameters

      • settings: Record<string, any>

        Provider-specific settings

      Returns void

    • Check if the provider supports thinking models Providers should override this to return true if they support thinking extraction

      Returns boolean