mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-01-01 08:08:49 +01:00
* # * - refactor: simplified getCustomConfig func * # * - feature: persist values for parameters with optionType of custom * # * - refactor: moved `Parameters/settings.ts` into `data-provider` so that both frontend and backend code can use it. * - feature: loadCustomConfig can now parse and validate customParams property for `endpoints.custom` in `librechat.yaml` * # fixed linter * # removed .strict() in config.ts * change: added packages/data-provider/src to SOURCE_DIRS for i18n check * # removed unnecessary lodash imports * # addressed PR comments # fixed lint for updated files * # better import for lodash (w/o relying on tree-shaking)
65 lines
1.7 KiB
TypeScript
65 lines
1.7 KiB
TypeScript
import { useMemo } from 'react';
|
|
import { getSettingsKeys } from 'librechat-data-provider';
|
|
import type { SettingDefinition } from 'librechat-data-provider';
|
|
import type { TModelSelectProps } from '~/common';
|
|
import { componentMapping } from '~/components/SidePanel/Parameters/components';
|
|
import { presetSettings } from 'librechat-data-provider';
|
|
|
|
export default function OpenAISettings({
|
|
conversation,
|
|
setOption,
|
|
models,
|
|
readonly,
|
|
}: TModelSelectProps) {
|
|
const parameters = useMemo(() => {
|
|
const [combinedKey, endpointKey] = getSettingsKeys(
|
|
conversation?.endpointType ?? conversation?.endpoint ?? '',
|
|
conversation?.model ?? '',
|
|
);
|
|
return presetSettings[combinedKey] ?? presetSettings[endpointKey];
|
|
}, [conversation]);
|
|
|
|
if (!parameters) {
|
|
return null;
|
|
}
|
|
|
|
const renderComponent = (setting: SettingDefinition | undefined) => {
|
|
if (!setting) {
|
|
return null;
|
|
}
|
|
const Component = componentMapping[setting.component];
|
|
if (!Component) {
|
|
return null;
|
|
}
|
|
const { key, default: defaultValue, ...rest } = setting;
|
|
|
|
const props = {
|
|
key,
|
|
settingKey: key,
|
|
defaultValue,
|
|
...rest,
|
|
readonly,
|
|
setOption,
|
|
conversation,
|
|
};
|
|
|
|
if (key === 'model') {
|
|
return <Component {...props} options={models} />;
|
|
}
|
|
|
|
return <Component {...props} />;
|
|
};
|
|
|
|
return (
|
|
<div className="h-auto max-w-full overflow-x-hidden p-3">
|
|
<div className="grid grid-cols-1 gap-6 md:grid-cols-5">
|
|
<div className="flex flex-col gap-6 md:col-span-3">
|
|
{parameters.col1.map(renderComponent)}
|
|
</div>
|
|
<div className="flex flex-col gap-6 md:col-span-2">
|
|
{parameters.col2.map(renderComponent)}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|