Member Junction
    Preparing search index...

    VertexLLM - Google Vertex AI implementation

    Extends GeminiLLM and reuses all its logic (chat, streaming, thinking, parameters, multimodal content, message alternation, error handling, etc.).

    The only difference is authentication - this class overrides the constructor to handle GCP authentication instead of API keys.

    // Option 1: ADC (Application Default Credentials)
    // Set GOOGLE_APPLICATION_CREDENTIALS env var or use gcloud auth
    const llm = new VertexLLM(JSON.stringify({
    project: 'my-project',
    location: 'us-central1'
    }));
    // Option 2: Service account JSON as string (from credential system)
    const serviceAccountJson = JSON.stringify({
    type: 'service_account',
    project_id: 'my-project',
    private_key: '-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n',
    client_email: 'sa@my-project.iam.gserviceaccount.com',
    client_id: '123456789'
    // ... other service account fields
    });
    const llm = new VertexLLM(JSON.stringify({
    project: 'my-project',
    location: 'us-central1',
    serviceAccountJson: serviceAccountJson
    }));
    // Option 3: Service account JSON inline
    const llm = new VertexLLM(JSON.stringify({
    type: 'service_account',
    project_id: 'my-project',
    private_key: '-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n',
    client_email: 'sa@my-project.iam.gserviceaccount.com',
    client_id: '123456789',
    // ... other service account fields
    location: 'us-central1'
    }));
    // Option 4: Key file path reference
    const llm = new VertexLLM(JSON.stringify({
    keyFilePath: '/path/to/service-account.json',
    project: 'my-project',
    location: 'us-central1'
    }));

    Hierarchy (View Summary)

    Index

    Constructors

    • Create a new VertexLLM instance

      Parameters

      • credentialsJson: string

        JSON string containing Vertex AI credentials. Must include at minimum: { project: 'id', location?: 'region' } Can include full service account JSON or keyFilePath for authentication.

        If neither service account fields nor keyFilePath are provided, will use Application Default Credentials (ADC).

      Returns VertexLLM

    Properties

    _additionalSettings: Record<string, any>

    Protected property to store additional provider-specific settings

    _gemini: GoogleGenAI
    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

    • get GeminiClient(): GoogleGenAI

      Read only getter method to get the Gemini client instance Note: This is async now because the client may not be initialized yet

      Returns GoogleGenAI

    • 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

      Gemini supports streaming

      Returns boolean

    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

    • Parameters

      • params: any

      Returns Promise<any>

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

      Returns void

    • Override parent's createClient() factory method to create Vertex AI client

      This factory method is called lazily on first use, so _credentials will always be set. The rest of the functionality (chat, streaming, etc.) remains identical.

      Returns Promise<GoogleGenAI>

    • 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 from streaming results for Gemini

      Parameters

      • accumulatedContent: string
      • lastChunk: any
      • usage: any

      Returns ChatResult

    • Returns (and clears) any user-visible content the thinking-tag stripper is still holding back at the end of a stream. Mid-stream, processStreamChunkWithThinking holds back a trailing fragment that could be the start of a <think>/</think> tag so a split tag never leaks as partial text; once the stream ends, such a fragment is real content and must be emitted (bug A5).

      Only flushes when NOT inside a thinking block: an unterminated <think> block's buffered text is reasoning, not answer, and is left held back (never surfaced as visible content). Returns '' when thinking extraction isn't active (no state) or there's nothing to flush.

      Returns string

    • Parameters

      • messages: Content[]

      Returns Content[]

    • 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

    • Process a streaming chunk from Gemini

      Parameters

      • chunk: any

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

    • Reset streaming state for a new request

      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