| | import { |
| | Verbosity, |
| | ImageDetail, |
| | EModelEndpoint, |
| | openAISettings, |
| | googleSettings, |
| | ReasoningEffort, |
| | ReasoningSummary, |
| | BedrockProviders, |
| | anthropicSettings, |
| | } from './types'; |
| | import { SettingDefinition, SettingsConfiguration } from './generate'; |
| |
|
| | |
| | const baseDefinitions: Record<string, SettingDefinition> = { |
| | model: { |
| | key: 'model', |
| | label: 'com_ui_model', |
| | labelCode: true, |
| | type: 'string', |
| | component: 'dropdown', |
| | optionType: 'model', |
| | selectPlaceholder: 'com_ui_select_model', |
| | searchPlaceholder: 'com_ui_select_search_model', |
| | searchPlaceholderCode: true, |
| | selectPlaceholderCode: true, |
| | columnSpan: 4, |
| | }, |
| | temperature: { |
| | key: 'temperature', |
| | label: 'com_endpoint_temperature', |
| | labelCode: true, |
| | description: 'com_endpoint_openai_temp', |
| | descriptionCode: true, |
| | type: 'number', |
| | component: 'slider', |
| | optionType: 'model', |
| | columnSpan: 4, |
| | }, |
| | topP: { |
| | key: 'topP', |
| | label: 'com_endpoint_top_p', |
| | labelCode: true, |
| | description: 'com_endpoint_anthropic_topp', |
| | descriptionCode: true, |
| | type: 'number', |
| | component: 'slider', |
| | optionType: 'model', |
| | columnSpan: 4, |
| | }, |
| | stop: { |
| | key: 'stop', |
| | label: 'com_endpoint_stop', |
| | labelCode: true, |
| | description: 'com_endpoint_openai_stop', |
| | descriptionCode: true, |
| | placeholder: 'com_endpoint_stop_placeholder', |
| | placeholderCode: true, |
| | type: 'array', |
| | default: [], |
| | component: 'tags', |
| | optionType: 'conversation', |
| | minTags: 0, |
| | maxTags: 4, |
| | }, |
| | imageDetail: { |
| | key: 'imageDetail', |
| | label: 'com_endpoint_plug_image_detail', |
| | labelCode: true, |
| | description: 'com_endpoint_openai_detail', |
| | descriptionCode: true, |
| | type: 'enum', |
| | default: ImageDetail.auto, |
| | component: 'slider', |
| | options: [ImageDetail.low, ImageDetail.auto, ImageDetail.high], |
| | enumMappings: { |
| | [ImageDetail.low]: 'com_ui_low', |
| | [ImageDetail.auto]: 'com_ui_auto', |
| | [ImageDetail.high]: 'com_ui_high', |
| | }, |
| | optionType: 'conversation', |
| | columnSpan: 2, |
| | }, |
| | }; |
| |
|
| | const createDefinition = ( |
| | base: Partial<SettingDefinition>, |
| | overrides: Partial<SettingDefinition>, |
| | ): SettingDefinition => { |
| | return { ...base, ...overrides } as SettingDefinition; |
| | }; |
| |
|
| | export const librechat = { |
| | modelLabel: { |
| | key: 'modelLabel', |
| | label: 'com_endpoint_custom_name', |
| | labelCode: true, |
| | type: 'string', |
| | default: '', |
| | component: 'input', |
| | placeholder: 'com_endpoint_openai_custom_name_placeholder', |
| | placeholderCode: true, |
| | optionType: 'conversation', |
| | } as const, |
| | maxContextTokens: { |
| | key: 'maxContextTokens', |
| | label: 'com_endpoint_context_tokens', |
| | labelCode: true, |
| | type: 'number', |
| | component: 'input', |
| | placeholder: 'com_nav_theme_system', |
| | placeholderCode: true, |
| | description: 'com_endpoint_context_info', |
| | descriptionCode: true, |
| | optionType: 'model', |
| | columnSpan: 2, |
| | } as const, |
| | resendFiles: { |
| | key: 'resendFiles', |
| | label: 'com_endpoint_plug_resend_files', |
| | labelCode: true, |
| | description: 'com_endpoint_openai_resend_files', |
| | descriptionCode: true, |
| | type: 'boolean', |
| | default: true, |
| | component: 'switch', |
| | optionType: 'conversation', |
| | showDefault: false, |
| | columnSpan: 2, |
| | } as const, |
| | promptPrefix: { |
| | key: 'promptPrefix', |
| | label: 'com_endpoint_prompt_prefix', |
| | labelCode: true, |
| | type: 'string', |
| | default: '', |
| | component: 'textarea', |
| | placeholder: 'com_endpoint_openai_prompt_prefix_placeholder', |
| | placeholderCode: true, |
| | optionType: 'model', |
| | } as const, |
| | fileTokenLimit: { |
| | key: 'fileTokenLimit', |
| | label: 'com_ui_file_token_limit', |
| | labelCode: true, |
| | description: 'com_ui_file_token_limit_desc', |
| | descriptionCode: true, |
| | placeholder: 'com_nav_theme_system', |
| | placeholderCode: true, |
| | type: 'number', |
| | component: 'input', |
| | columnSpan: 2, |
| | } as const, |
| | }; |
| |
|
| | const openAIParams: Record<string, SettingDefinition> = { |
| | chatGptLabel: { |
| | ...librechat.modelLabel, |
| | key: 'chatGptLabel', |
| | }, |
| | promptPrefix: librechat.promptPrefix, |
| | temperature: createDefinition(baseDefinitions.temperature, { |
| | default: openAISettings.temperature.default, |
| | range: { |
| | min: openAISettings.temperature.min, |
| | max: openAISettings.temperature.max, |
| | step: openAISettings.temperature.step, |
| | }, |
| | }), |
| | top_p: createDefinition(baseDefinitions.topP, { |
| | key: 'top_p', |
| | default: openAISettings.top_p.default, |
| | range: { |
| | min: openAISettings.top_p.min, |
| | max: openAISettings.top_p.max, |
| | step: openAISettings.top_p.step, |
| | }, |
| | }), |
| | frequency_penalty: { |
| | key: 'frequency_penalty', |
| | label: 'com_endpoint_frequency_penalty', |
| | labelCode: true, |
| | description: 'com_endpoint_openai_freq', |
| | descriptionCode: true, |
| | type: 'number', |
| | default: openAISettings.frequency_penalty.default, |
| | range: { |
| | min: openAISettings.frequency_penalty.min, |
| | max: openAISettings.frequency_penalty.max, |
| | step: openAISettings.frequency_penalty.step, |
| | }, |
| | component: 'slider', |
| | optionType: 'model', |
| | columnSpan: 4, |
| | }, |
| | presence_penalty: { |
| | key: 'presence_penalty', |
| | label: 'com_endpoint_presence_penalty', |
| | labelCode: true, |
| | description: 'com_endpoint_openai_pres', |
| | descriptionCode: true, |
| | type: 'number', |
| | default: openAISettings.presence_penalty.default, |
| | range: { |
| | min: openAISettings.presence_penalty.min, |
| | max: openAISettings.presence_penalty.max, |
| | step: openAISettings.presence_penalty.step, |
| | }, |
| | component: 'slider', |
| | optionType: 'model', |
| | columnSpan: 4, |
| | }, |
| | max_tokens: { |
| | key: 'max_tokens', |
| | label: 'com_endpoint_max_output_tokens', |
| | labelCode: true, |
| | type: 'number', |
| | component: 'input', |
| | description: 'com_endpoint_openai_max_tokens', |
| | descriptionCode: true, |
| | placeholder: 'com_nav_theme_system', |
| | placeholderCode: true, |
| | optionType: 'model', |
| | columnSpan: 2, |
| | }, |
| | reasoning_effort: { |
| | key: 'reasoning_effort', |
| | label: 'com_endpoint_reasoning_effort', |
| | labelCode: true, |
| | description: 'com_endpoint_openai_reasoning_effort', |
| | descriptionCode: true, |
| | type: 'enum', |
| | default: ReasoningEffort.unset, |
| | component: 'slider', |
| | options: [ |
| | ReasoningEffort.unset, |
| | ReasoningEffort.none, |
| | ReasoningEffort.minimal, |
| | ReasoningEffort.low, |
| | ReasoningEffort.medium, |
| | ReasoningEffort.high, |
| | ], |
| | enumMappings: { |
| | [ReasoningEffort.unset]: 'com_ui_auto', |
| | [ReasoningEffort.none]: 'com_ui_none', |
| | [ReasoningEffort.minimal]: 'com_ui_minimal', |
| | [ReasoningEffort.low]: 'com_ui_low', |
| | [ReasoningEffort.medium]: 'com_ui_medium', |
| | [ReasoningEffort.high]: 'com_ui_high', |
| | }, |
| | optionType: 'model', |
| | columnSpan: 4, |
| | }, |
| | useResponsesApi: { |
| | key: 'useResponsesApi', |
| | label: 'com_endpoint_use_responses_api', |
| | labelCode: true, |
| | description: 'com_endpoint_openai_use_responses_api', |
| | descriptionCode: true, |
| | type: 'boolean', |
| | default: false, |
| | component: 'switch', |
| | optionType: 'model', |
| | showDefault: false, |
| | columnSpan: 2, |
| | }, |
| | web_search: { |
| | key: 'web_search', |
| | label: 'com_ui_web_search', |
| | labelCode: true, |
| | description: 'com_endpoint_openai_use_web_search', |
| | descriptionCode: true, |
| | type: 'boolean', |
| | default: false, |
| | component: 'switch', |
| | optionType: 'model', |
| | showDefault: false, |
| | columnSpan: 2, |
| | }, |
| | reasoning_summary: { |
| | key: 'reasoning_summary', |
| | label: 'com_endpoint_reasoning_summary', |
| | labelCode: true, |
| | description: 'com_endpoint_openai_reasoning_summary', |
| | descriptionCode: true, |
| | type: 'enum', |
| | default: ReasoningSummary.none, |
| | component: 'slider', |
| | options: [ |
| | ReasoningSummary.none, |
| | ReasoningSummary.auto, |
| | ReasoningSummary.concise, |
| | ReasoningSummary.detailed, |
| | ], |
| | enumMappings: { |
| | [ReasoningSummary.none]: 'com_ui_unset', |
| | [ReasoningSummary.auto]: 'com_ui_auto', |
| | [ReasoningSummary.concise]: 'com_ui_concise', |
| | [ReasoningSummary.detailed]: 'com_ui_detailed', |
| | }, |
| | optionType: 'model', |
| | columnSpan: 4, |
| | }, |
| | verbosity: { |
| | key: 'verbosity', |
| | label: 'com_endpoint_verbosity', |
| | labelCode: true, |
| | description: 'com_endpoint_openai_verbosity', |
| | descriptionCode: true, |
| | type: 'enum', |
| | default: Verbosity.none, |
| | component: 'slider', |
| | options: [Verbosity.none, Verbosity.low, Verbosity.medium, Verbosity.high], |
| | enumMappings: { |
| | [Verbosity.none]: 'com_ui_none', |
| | [Verbosity.low]: 'com_ui_low', |
| | [Verbosity.medium]: 'com_ui_medium', |
| | [Verbosity.high]: 'com_ui_high', |
| | }, |
| | optionType: 'model', |
| | columnSpan: 4, |
| | }, |
| | disableStreaming: { |
| | key: 'disableStreaming', |
| | label: 'com_endpoint_disable_streaming_label', |
| | labelCode: true, |
| | description: 'com_endpoint_disable_streaming', |
| | descriptionCode: true, |
| | type: 'boolean', |
| | default: false, |
| | component: 'switch', |
| | optionType: 'model', |
| | showDefault: false, |
| | columnSpan: 2, |
| | } as const, |
| | }; |
| |
|
| | const anthropic: Record<string, SettingDefinition> = { |
| | maxOutputTokens: { |
| | key: 'maxOutputTokens', |
| | label: 'com_endpoint_max_output_tokens', |
| | labelCode: true, |
| | type: 'number', |
| | component: 'input', |
| | description: 'com_endpoint_anthropic_maxoutputtokens', |
| | descriptionCode: true, |
| | placeholder: 'com_nav_theme_system', |
| | placeholderCode: true, |
| | range: { |
| | min: anthropicSettings.maxOutputTokens.min, |
| | max: anthropicSettings.maxOutputTokens.max, |
| | step: anthropicSettings.maxOutputTokens.step, |
| | }, |
| | optionType: 'model', |
| | columnSpan: 2, |
| | }, |
| | temperature: createDefinition(baseDefinitions.temperature, { |
| | default: anthropicSettings.temperature.default, |
| | range: { |
| | min: anthropicSettings.temperature.min, |
| | max: anthropicSettings.temperature.max, |
| | step: anthropicSettings.temperature.step, |
| | }, |
| | }), |
| | topP: createDefinition(baseDefinitions.topP, { |
| | default: anthropicSettings.topP.default, |
| | range: { |
| | min: anthropicSettings.topP.min, |
| | max: anthropicSettings.topP.max, |
| | step: anthropicSettings.topP.step, |
| | }, |
| | }), |
| | topK: { |
| | key: 'topK', |
| | label: 'com_endpoint_top_k', |
| | labelCode: true, |
| | description: 'com_endpoint_anthropic_topk', |
| | descriptionCode: true, |
| | type: 'number', |
| | default: anthropicSettings.topK.default, |
| | range: { |
| | min: anthropicSettings.topK.min, |
| | max: anthropicSettings.topK.max, |
| | step: anthropicSettings.topK.step, |
| | }, |
| | component: 'slider', |
| | optionType: 'model', |
| | columnSpan: 4, |
| | }, |
| | promptCache: { |
| | key: 'promptCache', |
| | label: 'com_endpoint_prompt_cache', |
| | labelCode: true, |
| | description: 'com_endpoint_anthropic_prompt_cache', |
| | descriptionCode: true, |
| | type: 'boolean', |
| | default: anthropicSettings.promptCache.default, |
| | component: 'switch', |
| | optionType: 'conversation', |
| | showDefault: false, |
| | columnSpan: 2, |
| | }, |
| | thinking: { |
| | key: 'thinking', |
| | label: 'com_endpoint_thinking', |
| | labelCode: true, |
| | description: 'com_endpoint_anthropic_thinking', |
| | descriptionCode: true, |
| | type: 'boolean', |
| | default: anthropicSettings.thinking.default, |
| | component: 'switch', |
| | optionType: 'conversation', |
| | showDefault: false, |
| | columnSpan: 2, |
| | }, |
| | thinkingBudget: { |
| | key: 'thinkingBudget', |
| | label: 'com_endpoint_thinking_budget', |
| | labelCode: true, |
| | description: 'com_endpoint_anthropic_thinking_budget', |
| | descriptionCode: true, |
| | type: 'number', |
| | component: 'input', |
| | default: anthropicSettings.thinkingBudget.default, |
| | range: { |
| | min: anthropicSettings.thinkingBudget.min, |
| | max: anthropicSettings.thinkingBudget.max, |
| | step: anthropicSettings.thinkingBudget.step, |
| | }, |
| | optionType: 'conversation', |
| | columnSpan: 2, |
| | }, |
| | web_search: { |
| | key: 'web_search', |
| | label: 'com_ui_web_search', |
| | labelCode: true, |
| | description: 'com_endpoint_anthropic_use_web_search', |
| | descriptionCode: true, |
| | type: 'boolean', |
| | default: anthropicSettings.web_search.default, |
| | component: 'switch', |
| | optionType: 'conversation', |
| | showDefault: false, |
| | columnSpan: 2, |
| | }, |
| | }; |
| |
|
| | const bedrock: Record<string, SettingDefinition> = { |
| | system: { |
| | key: 'system', |
| | label: 'com_endpoint_prompt_prefix', |
| | labelCode: true, |
| | type: 'string', |
| | default: '', |
| | component: 'textarea', |
| | placeholder: 'com_endpoint_openai_prompt_prefix_placeholder', |
| | placeholderCode: true, |
| | optionType: 'model', |
| | }, |
| | region: { |
| | key: 'region', |
| | type: 'string', |
| | label: 'com_ui_region', |
| | labelCode: true, |
| | component: 'combobox', |
| | optionType: 'conversation', |
| | selectPlaceholder: 'com_ui_select_region', |
| | searchPlaceholder: 'com_ui_select_search_region', |
| | searchPlaceholderCode: true, |
| | selectPlaceholderCode: true, |
| | columnSpan: 2, |
| | }, |
| | maxTokens: { |
| | key: 'maxTokens', |
| | label: 'com_endpoint_max_output_tokens', |
| | labelCode: true, |
| | type: 'number', |
| | component: 'input', |
| | description: 'com_endpoint_anthropic_maxoutputtokens', |
| | descriptionCode: true, |
| | placeholder: 'com_nav_theme_system', |
| | placeholderCode: true, |
| | optionType: 'model', |
| | columnSpan: 2, |
| | }, |
| | temperature: createDefinition(baseDefinitions.temperature, { |
| | default: 1, |
| | range: { min: 0, max: 1, step: 0.01 }, |
| | }), |
| | topK: createDefinition(anthropic.topK, { |
| | range: { min: 0, max: 500, step: 1 }, |
| | }), |
| | topP: createDefinition(baseDefinitions.topP, { |
| | default: 0.999, |
| | range: { min: 0, max: 1, step: 0.01 }, |
| | }), |
| | promptCache: { |
| | key: 'promptCache', |
| | label: 'com_endpoint_prompt_cache', |
| | labelCode: true, |
| | type: 'boolean', |
| | description: 'com_endpoint_anthropic_prompt_cache', |
| | descriptionCode: true, |
| | default: true, |
| | component: 'switch', |
| | optionType: 'conversation', |
| | showDefault: false, |
| | columnSpan: 2, |
| | }, |
| | }; |
| |
|
| | const mistral: Record<string, SettingDefinition> = { |
| | temperature: createDefinition(baseDefinitions.temperature, { |
| | default: 0.7, |
| | range: { min: 0, max: 1, step: 0.01 }, |
| | }), |
| | topP: createDefinition(baseDefinitions.topP, { |
| | range: { min: 0, max: 1, step: 0.01 }, |
| | }), |
| | }; |
| |
|
| | const cohere: Record<string, SettingDefinition> = { |
| | temperature: createDefinition(baseDefinitions.temperature, { |
| | default: 0.3, |
| | range: { min: 0, max: 1, step: 0.01 }, |
| | }), |
| | topP: createDefinition(baseDefinitions.topP, { |
| | default: 0.75, |
| | range: { min: 0.01, max: 0.99, step: 0.01 }, |
| | }), |
| | }; |
| |
|
| | const meta: Record<string, SettingDefinition> = { |
| | temperature: createDefinition(baseDefinitions.temperature, { |
| | default: 0.5, |
| | range: { min: 0, max: 1, step: 0.01 }, |
| | }), |
| | topP: createDefinition(baseDefinitions.topP, { |
| | default: 0.9, |
| | range: { min: 0, max: 1, step: 0.01 }, |
| | }), |
| | }; |
| |
|
| | const google: Record<string, SettingDefinition> = { |
| | temperature: createDefinition(baseDefinitions.temperature, { |
| | default: googleSettings.temperature.default, |
| | range: { |
| | min: googleSettings.temperature.min, |
| | max: googleSettings.temperature.max, |
| | step: googleSettings.temperature.step, |
| | }, |
| | }), |
| | topP: createDefinition(baseDefinitions.topP, { |
| | default: googleSettings.topP.default, |
| | range: { |
| | min: googleSettings.topP.min, |
| | max: googleSettings.topP.max, |
| | step: googleSettings.topP.step, |
| | }, |
| | }), |
| | topK: { |
| | key: 'topK', |
| | label: 'com_endpoint_top_k', |
| | labelCode: true, |
| | description: 'com_endpoint_google_topk', |
| | descriptionCode: true, |
| | type: 'number', |
| | default: googleSettings.topK.default, |
| | range: { |
| | min: googleSettings.topK.min, |
| | max: googleSettings.topK.max, |
| | step: googleSettings.topK.step, |
| | }, |
| | component: 'slider', |
| | optionType: 'model', |
| | columnSpan: 4, |
| | }, |
| | maxOutputTokens: { |
| | key: 'maxOutputTokens', |
| | label: 'com_endpoint_max_output_tokens', |
| | labelCode: true, |
| | type: 'number', |
| | component: 'input', |
| | description: 'com_endpoint_google_maxoutputtokens', |
| | descriptionCode: true, |
| | placeholder: 'com_nav_theme_system', |
| | placeholderCode: true, |
| | default: googleSettings.maxOutputTokens.default, |
| | range: { |
| | min: googleSettings.maxOutputTokens.min, |
| | max: googleSettings.maxOutputTokens.max, |
| | step: googleSettings.maxOutputTokens.step, |
| | }, |
| | optionType: 'model', |
| | columnSpan: 2, |
| | }, |
| | thinking: { |
| | key: 'thinking', |
| | label: 'com_endpoint_thinking', |
| | labelCode: true, |
| | description: 'com_endpoint_google_thinking', |
| | descriptionCode: true, |
| | type: 'boolean', |
| | default: googleSettings.thinking.default, |
| | component: 'switch', |
| | optionType: 'conversation', |
| | showDefault: false, |
| | columnSpan: 2, |
| | }, |
| | thinkingBudget: { |
| | key: 'thinkingBudget', |
| | label: 'com_endpoint_thinking_budget', |
| | labelCode: true, |
| | description: 'com_endpoint_google_thinking_budget', |
| | descriptionCode: true, |
| | placeholder: 'com_ui_auto', |
| | placeholderCode: true, |
| | type: 'number', |
| | component: 'input', |
| | range: { |
| | min: googleSettings.thinkingBudget.min, |
| | max: googleSettings.thinkingBudget.max, |
| | step: googleSettings.thinkingBudget.step, |
| | }, |
| | optionType: 'conversation', |
| | columnSpan: 2, |
| | }, |
| | web_search: { |
| | key: 'web_search', |
| | label: 'com_endpoint_use_search_grounding', |
| | labelCode: true, |
| | description: 'com_endpoint_google_use_search_grounding', |
| | descriptionCode: true, |
| | type: 'boolean', |
| | default: false, |
| | component: 'switch', |
| | optionType: 'model', |
| | showDefault: false, |
| | columnSpan: 2, |
| | }, |
| | }; |
| |
|
| | const googleConfig: SettingsConfiguration = [ |
| | librechat.modelLabel, |
| | librechat.promptPrefix, |
| | librechat.maxContextTokens, |
| | google.maxOutputTokens, |
| | google.temperature, |
| | google.topP, |
| | google.topK, |
| | librechat.resendFiles, |
| | google.thinking, |
| | google.thinkingBudget, |
| | google.web_search, |
| | librechat.fileTokenLimit, |
| | ]; |
| |
|
| | const googleCol1: SettingsConfiguration = [ |
| | baseDefinitions.model as SettingDefinition, |
| | librechat.modelLabel, |
| | librechat.promptPrefix, |
| | ]; |
| |
|
| | const googleCol2: SettingsConfiguration = [ |
| | librechat.maxContextTokens, |
| | google.maxOutputTokens, |
| | google.temperature, |
| | google.topP, |
| | google.topK, |
| | librechat.resendFiles, |
| | google.thinking, |
| | google.thinkingBudget, |
| | google.web_search, |
| | librechat.fileTokenLimit, |
| | ]; |
| |
|
| | const openAI: SettingsConfiguration = [ |
| | librechat.modelLabel, |
| | librechat.promptPrefix, |
| | librechat.maxContextTokens, |
| | openAIParams.max_tokens, |
| | openAIParams.temperature, |
| | openAIParams.top_p, |
| | openAIParams.frequency_penalty, |
| | openAIParams.presence_penalty, |
| | baseDefinitions.stop, |
| | librechat.resendFiles, |
| | baseDefinitions.imageDetail, |
| | openAIParams.web_search, |
| | openAIParams.reasoning_effort, |
| | openAIParams.useResponsesApi, |
| | openAIParams.reasoning_summary, |
| | openAIParams.verbosity, |
| | openAIParams.disableStreaming, |
| | librechat.fileTokenLimit, |
| | ]; |
| |
|
| | const openAICol1: SettingsConfiguration = [ |
| | baseDefinitions.model as SettingDefinition, |
| | librechat.modelLabel, |
| | librechat.promptPrefix, |
| | ]; |
| |
|
| | const openAICol2: SettingsConfiguration = [ |
| | librechat.maxContextTokens, |
| | openAIParams.max_tokens, |
| | openAIParams.temperature, |
| | openAIParams.top_p, |
| | openAIParams.frequency_penalty, |
| | openAIParams.presence_penalty, |
| | baseDefinitions.stop, |
| | librechat.resendFiles, |
| | baseDefinitions.imageDetail, |
| | openAIParams.reasoning_effort, |
| | openAIParams.reasoning_summary, |
| | openAIParams.verbosity, |
| | openAIParams.useResponsesApi, |
| | openAIParams.web_search, |
| | openAIParams.disableStreaming, |
| | librechat.fileTokenLimit, |
| | ]; |
| |
|
| | const anthropicConfig: SettingsConfiguration = [ |
| | librechat.modelLabel, |
| | librechat.promptPrefix, |
| | librechat.maxContextTokens, |
| | anthropic.maxOutputTokens, |
| | anthropic.temperature, |
| | anthropic.topP, |
| | anthropic.topK, |
| | librechat.resendFiles, |
| | anthropic.promptCache, |
| | anthropic.thinking, |
| | anthropic.thinkingBudget, |
| | anthropic.web_search, |
| | librechat.fileTokenLimit, |
| | ]; |
| |
|
| | const anthropicCol1: SettingsConfiguration = [ |
| | baseDefinitions.model as SettingDefinition, |
| | librechat.modelLabel, |
| | librechat.promptPrefix, |
| | ]; |
| |
|
| | const anthropicCol2: SettingsConfiguration = [ |
| | librechat.maxContextTokens, |
| | anthropic.maxOutputTokens, |
| | anthropic.temperature, |
| | anthropic.topP, |
| | anthropic.topK, |
| | librechat.resendFiles, |
| | anthropic.promptCache, |
| | anthropic.thinking, |
| | anthropic.thinkingBudget, |
| | anthropic.web_search, |
| | librechat.fileTokenLimit, |
| | ]; |
| |
|
| | const bedrockAnthropic: SettingsConfiguration = [ |
| | librechat.modelLabel, |
| | bedrock.system, |
| | librechat.maxContextTokens, |
| | bedrock.maxTokens, |
| | bedrock.temperature, |
| | bedrock.topP, |
| | bedrock.topK, |
| | baseDefinitions.stop, |
| | librechat.resendFiles, |
| | bedrock.region, |
| | bedrock.promptCache, |
| | anthropic.thinking, |
| | anthropic.thinkingBudget, |
| | librechat.fileTokenLimit, |
| | ]; |
| |
|
| | const bedrockMistral: SettingsConfiguration = [ |
| | librechat.modelLabel, |
| | librechat.promptPrefix, |
| | librechat.maxContextTokens, |
| | bedrock.maxTokens, |
| | mistral.temperature, |
| | mistral.topP, |
| | librechat.resendFiles, |
| | bedrock.region, |
| | librechat.fileTokenLimit, |
| | ]; |
| |
|
| | const bedrockCohere: SettingsConfiguration = [ |
| | librechat.modelLabel, |
| | librechat.promptPrefix, |
| | librechat.maxContextTokens, |
| | bedrock.maxTokens, |
| | cohere.temperature, |
| | cohere.topP, |
| | librechat.resendFiles, |
| | bedrock.region, |
| | librechat.fileTokenLimit, |
| | ]; |
| |
|
| | const bedrockGeneral: SettingsConfiguration = [ |
| | librechat.modelLabel, |
| | librechat.promptPrefix, |
| | librechat.maxContextTokens, |
| | meta.temperature, |
| | meta.topP, |
| | librechat.resendFiles, |
| | bedrock.region, |
| | bedrock.promptCache, |
| | librechat.fileTokenLimit, |
| | ]; |
| |
|
| | const bedrockAnthropicCol1: SettingsConfiguration = [ |
| | baseDefinitions.model as SettingDefinition, |
| | librechat.modelLabel, |
| | bedrock.system, |
| | baseDefinitions.stop, |
| | ]; |
| |
|
| | const bedrockAnthropicCol2: SettingsConfiguration = [ |
| | librechat.maxContextTokens, |
| | bedrock.maxTokens, |
| | bedrock.temperature, |
| | bedrock.topP, |
| | bedrock.topK, |
| | librechat.resendFiles, |
| | bedrock.region, |
| | bedrock.promptCache, |
| | anthropic.thinking, |
| | anthropic.thinkingBudget, |
| | librechat.fileTokenLimit, |
| | ]; |
| |
|
| | const bedrockMistralCol1: SettingsConfiguration = [ |
| | baseDefinitions.model as SettingDefinition, |
| | librechat.modelLabel, |
| | librechat.promptPrefix, |
| | ]; |
| |
|
| | const bedrockMistralCol2: SettingsConfiguration = [ |
| | librechat.maxContextTokens, |
| | bedrock.maxTokens, |
| | mistral.temperature, |
| | mistral.topP, |
| | librechat.resendFiles, |
| | bedrock.region, |
| | librechat.fileTokenLimit, |
| | ]; |
| |
|
| | const bedrockCohereCol1: SettingsConfiguration = [ |
| | baseDefinitions.model as SettingDefinition, |
| | librechat.modelLabel, |
| | librechat.promptPrefix, |
| | ]; |
| |
|
| | const bedrockCohereCol2: SettingsConfiguration = [ |
| | librechat.maxContextTokens, |
| | bedrock.maxTokens, |
| | cohere.temperature, |
| | cohere.topP, |
| | librechat.resendFiles, |
| | bedrock.region, |
| | librechat.fileTokenLimit, |
| | ]; |
| |
|
| | const bedrockGeneralCol1: SettingsConfiguration = [ |
| | baseDefinitions.model as SettingDefinition, |
| | librechat.modelLabel, |
| | librechat.promptPrefix, |
| | ]; |
| |
|
| | const bedrockGeneralCol2: SettingsConfiguration = [ |
| | librechat.maxContextTokens, |
| | meta.temperature, |
| | meta.topP, |
| | librechat.resendFiles, |
| | bedrock.region, |
| | bedrock.promptCache, |
| | librechat.fileTokenLimit, |
| | ]; |
| |
|
| | export const paramSettings: Record<string, SettingsConfiguration | undefined> = { |
| | [EModelEndpoint.openAI]: openAI, |
| | [EModelEndpoint.azureOpenAI]: openAI, |
| | [EModelEndpoint.custom]: openAI, |
| | [EModelEndpoint.anthropic]: anthropicConfig, |
| | [`${EModelEndpoint.bedrock}-${BedrockProviders.Anthropic}`]: bedrockAnthropic, |
| | [`${EModelEndpoint.bedrock}-${BedrockProviders.MistralAI}`]: bedrockMistral, |
| | [`${EModelEndpoint.bedrock}-${BedrockProviders.Cohere}`]: bedrockCohere, |
| | [`${EModelEndpoint.bedrock}-${BedrockProviders.Meta}`]: bedrockGeneral, |
| | [`${EModelEndpoint.bedrock}-${BedrockProviders.AI21}`]: bedrockGeneral, |
| | [`${EModelEndpoint.bedrock}-${BedrockProviders.Amazon}`]: bedrockGeneral, |
| | [`${EModelEndpoint.bedrock}-${BedrockProviders.DeepSeek}`]: bedrockGeneral, |
| | [EModelEndpoint.google]: googleConfig, |
| | }; |
| |
|
| | const openAIColumns = { |
| | col1: openAICol1, |
| | col2: openAICol2, |
| | }; |
| |
|
| | const bedrockGeneralColumns = { |
| | col1: bedrockGeneralCol1, |
| | col2: bedrockGeneralCol2, |
| | }; |
| |
|
| | export const presetSettings: Record< |
| | string, |
| | | { |
| | col1: SettingsConfiguration; |
| | col2: SettingsConfiguration; |
| | } |
| | | undefined |
| | > = { |
| | [EModelEndpoint.openAI]: openAIColumns, |
| | [EModelEndpoint.azureOpenAI]: openAIColumns, |
| | [EModelEndpoint.custom]: openAIColumns, |
| | [EModelEndpoint.anthropic]: { |
| | col1: anthropicCol1, |
| | col2: anthropicCol2, |
| | }, |
| | [`${EModelEndpoint.bedrock}-${BedrockProviders.Anthropic}`]: { |
| | col1: bedrockAnthropicCol1, |
| | col2: bedrockAnthropicCol2, |
| | }, |
| | [`${EModelEndpoint.bedrock}-${BedrockProviders.MistralAI}`]: { |
| | col1: bedrockMistralCol1, |
| | col2: bedrockMistralCol2, |
| | }, |
| | [`${EModelEndpoint.bedrock}-${BedrockProviders.Cohere}`]: { |
| | col1: bedrockCohereCol1, |
| | col2: bedrockCohereCol2, |
| | }, |
| | [`${EModelEndpoint.bedrock}-${BedrockProviders.Meta}`]: bedrockGeneralColumns, |
| | [`${EModelEndpoint.bedrock}-${BedrockProviders.AI21}`]: bedrockGeneralColumns, |
| | [`${EModelEndpoint.bedrock}-${BedrockProviders.Amazon}`]: bedrockGeneralColumns, |
| | [`${EModelEndpoint.bedrock}-${BedrockProviders.DeepSeek}`]: bedrockGeneralColumns, |
| | [EModelEndpoint.google]: { |
| | col1: googleCol1, |
| | col2: googleCol2, |
| | }, |
| | }; |
| |
|
| | export const agentParamSettings: Record<string, SettingsConfiguration | undefined> = Object.entries( |
| | presetSettings, |
| | ).reduce<Record<string, SettingsConfiguration | undefined>>((acc, [key, value]) => { |
| | if (value) { |
| | acc[key] = value.col2; |
| | } |
| | return acc; |
| | }, {}); |
| |
|