Member Junction
    Preparing search index...

    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

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

    Accessors

    • get AdditionalSettings(): Record<string, any>

      Get the current additional settings

      Returns Record<string, any>

    • get apiKey(): string

      Only sub-classes can access the API key

      Returns string

    Methods

    • Process a chat completion request. If streaming is enabled and supported, this will route to the streaming implementation.

      Parameters

      Returns Promise<ChatResult>

    • 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

    • Utility method to map a MemberJunction role to OpenAI role

      • user maps to user
      • assistant maps to assistant
      • anything else maps to user While the above is a direct 1:1 mapping, it is possible that OpenAI may have more roles in the future and this method will need to be updated for flexibility

      Parameters

      Returns "assistant" | "user"

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

      Parameters

      • content: string

      Returns { content: string; thinking?: string }

    • Format messages for Anthropic API with caching support. Handles both text and multi-modal content (images).

      Parameters

      • messages: ChatMessage[]

        Messages to format

      • enableCaching: boolean = true

        Whether to enable caching

      Returns any[]

      Formatted messages

    • Format system messages for Anthropic API with caching support. System messages support multi-modal content (images).

      Parameters

      • messages: ChatMessage[]

        Messages to format

      • enableCaching: boolean = true

        Whether to enable caching

      Returns any[]

      Flattened array of formatted content blocks

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

      Returns { close: string; open: string }

    • Template method for handling streaming chat completion This implements the common pattern across providers while delegating provider-specific logic to abstract methods.

      Parameters

      Returns Promise<ChatResult>

    • Initialize thinking stream state for streaming extraction

      Returns void

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

      Parameters

      • rawContent: string

      Returns string

    • Reset streaming state for a new request. Overrides the base-class hook so BaseLLM.handleStreamingChatCompletion calls this both at the start of a request AND in its finally block — the latter releases accumulated thinking buffers (which can grow to 100k+ chars on extended-thinking outputs) and prevents state from a prior request bleeding into the next. See audit R2-C5.

      Returns void

    • Reset thinking stream state

      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