diff --git a/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.ts b/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.ts index 7efa540f94f15..923a00bca06c2 100644 --- a/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.ts @@ -11,7 +11,7 @@ import { DomScrollableElement } from '../../../../../base/browser/ui/scrollbar/s import { ScrollbarVisibility } from '../../../../../base/common/scrollable.js'; import { Button, IButtonOptions } from '../../../../../base/browser/ui/button/button.js'; import { ThemeIcon } from '../../../../../base/common/themables.js'; -import { ILanguageModelsService, ILanguageModelProviderDescriptor } from '../../../chat/common/languageModels.js'; +import { ILanguageModelsService, ILanguageModelProviderDescriptor, ILanguageModelConfigurationSchema } from '../../../chat/common/languageModels.js'; import { localize } from '../../../../../nls.js'; import { defaultButtonStyles } from '../../../../../platform/theme/browser/defaultStyles.js'; import { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js'; @@ -673,13 +673,30 @@ class TokenLimitsColumnRenderer extends ModelsTableColumnRenderer defaultInputTokens) { + const maxTotalTokens = maxConfigurableInput + outputTokens; + const maxDiv = DOM.append(templateData.tokenLimitsElement, $('.token-limit-item.token-limit-max')); + const maxText = DOM.append(maxDiv, $('span')); + maxText.textContent = localize('models.configurableContextSize', "Configurable to {0}", formatTokenCount(maxTotalTokens)); + + markdown.appendText(`\n`); + markdown.appendMarkdown(`${localize('models.configurableContextSize', "Configurable to {0}", formatTokenCount(maxTotalTokens))}`); + } } templateData.elementDisposables.add(this.hoverService.setupDelayedHoverAtMouse(templateData.container, () => ({ @@ -692,6 +709,21 @@ class TokenLimitsColumnRenderer extends ModelsTableColumnRenderer typeof v === 'number'); + if (numericValues.length < 2) { + return undefined; + } + const max = Math.max(...numericValues); + const min = Math.min(...numericValues); + const schemaDefault = typeof contextSizeSchema.default === 'number' ? contextSizeSchema.default : undefined; + return { default: schemaDefault ?? min, max }; +} + interface ICapabilitiesColumnTemplateData extends IModelTableColumnTemplateData { readonly metadataRow: HTMLElement; } @@ -1208,14 +1240,6 @@ export class ChatModelsWidget extends Disposable { const isUBB = this.chatEntitlementService.quotas.usageBasedBilling === true; columns.push( - { - label: localize('tokenLimits', 'Context Size'), - tooltip: '', - weight: 0.1, - minimumWidth: 140, - templateId: TokenLimitsColumnRenderer.TEMPLATE_ID, - project(row: IViewModelEntry): IViewModelEntry { return row; } - }, { label: localize('capabilities', 'Capabilities'), tooltip: '', @@ -1224,6 +1248,14 @@ export class ChatModelsWidget extends Disposable { templateId: CapabilitiesColumnRenderer.TEMPLATE_ID, project(row: IViewModelEntry): IViewModelEntry { return row; } }, + { + label: localize('tokenLimits', 'Default Context Size'), + tooltip: '', + weight: 0.18, + minimumWidth: 240, + templateId: TokenLimitsColumnRenderer.TEMPLATE_ID, + project(row: IViewModelEntry): IViewModelEntry { return row; } + }, { label: isUBB ? localize('cost', 'Cost (Credits per 1M Tokens)') : localize('pricing', 'Pricing'), tooltip: '', diff --git a/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css b/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css index 98da5fd4940f0..24994dd6e9786 100644 --- a/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +++ b/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css @@ -182,6 +182,10 @@ min-width: 48px; } +.models-widget .models-table-container .monaco-table-td .model-token-limits .token-limit-item.token-limit-max { + min-width: 0; +} + .models-widget .models-table-container .monaco-table-td .model-token-limits .codicon { font-size: 12px; }