2025-06-13 01:25:42 -07:00
|
|
|
/**
|
|
|
|
|
* @license
|
|
|
|
|
* Copyright 2025 Google LLC
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
*/
|
|
|
|
|
|
2025-06-17 23:08:04 -07:00
|
|
|
export const DEFAULT_GEMINI_MODEL = 'gemini-2.5-pro';
|
2025-06-19 22:54:00 -07:00
|
|
|
export const DEFAULT_GEMINI_FLASH_MODEL = 'gemini-2.5-flash';
|
2025-07-27 17:40:55 -04:00
|
|
|
export const DEFAULT_GEMINI_FLASH_LITE_MODEL = 'gemini-2.5-flash-lite';
|
2025-08-01 17:11:51 -04:00
|
|
|
|
2025-09-12 15:57:07 -04:00
|
|
|
export const DEFAULT_GEMINI_MODEL_AUTO = 'auto';
|
|
|
|
|
|
2025-06-13 01:25:42 -07:00
|
|
|
export const DEFAULT_GEMINI_EMBEDDING_MODEL = 'gemini-embedding-001';
|
2025-08-29 09:20:50 -07:00
|
|
|
|
|
|
|
|
// Some thinking models do not default to dynamic thinking which is done by a value of -1
|
|
|
|
|
export const DEFAULT_THINKING_MODE = -1;
|
2025-09-11 13:38:50 -04:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Determines the effective model to use, applying fallback logic if necessary.
|
|
|
|
|
*
|
|
|
|
|
* When fallback mode is active, this function enforces the use of the standard
|
|
|
|
|
* fallback model. However, it makes an exception for "lite" models (any model
|
|
|
|
|
* with "lite" in its name), allowing them to be used to preserve cost savings.
|
|
|
|
|
* This ensures that "pro" models are always downgraded, while "lite" model
|
|
|
|
|
* requests are honored.
|
|
|
|
|
*
|
|
|
|
|
* @param isInFallbackMode Whether the application is in fallback mode.
|
|
|
|
|
* @param requestedModel The model that was originally requested.
|
|
|
|
|
* @returns The effective model name.
|
|
|
|
|
*/
|
|
|
|
|
export function getEffectiveModel(
|
|
|
|
|
isInFallbackMode: boolean,
|
|
|
|
|
requestedModel: string,
|
|
|
|
|
): string {
|
|
|
|
|
// If we are not in fallback mode, simply use the requested model.
|
|
|
|
|
if (!isInFallbackMode) {
|
|
|
|
|
return requestedModel;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// If a "lite" model is requested, honor it. This allows for variations of
|
|
|
|
|
// lite models without needing to list them all as constants.
|
|
|
|
|
if (requestedModel.includes('lite')) {
|
|
|
|
|
return requestedModel;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Default fallback for Gemini CLI.
|
|
|
|
|
return DEFAULT_GEMINI_FLASH_MODEL;
|
|
|
|
|
}
|