Files
EasyFlow/easyflow-ui-admin/app/src/views/ai/model/modelUtils/defaultIcon.ts

67 lines
1.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import providerList from './providerList.json';
export interface ProviderModelPreset {
description: string;
label: string;
llmModel: string;
supportChat?: boolean;
supportEmbed?: boolean;
supportFunctionCalling?: boolean;
supportRerank?: boolean;
}
export interface ProviderPreset {
description: string;
icon: string;
label: string;
mode: 'hosted' | 'self-hosted';
options: {
chatPath?: string;
embedPath?: string;
llmEndpoint?: string;
modelList?: ProviderModelPreset[];
rerankPath?: string;
};
tags?: string[];
value: string;
}
const providerOptions = providerList as ProviderPreset[];
export const getProviderPresetByValue = (targetValue?: string) =>
providerOptions.find((item) => item.value === targetValue);
/**
* 根据传入的value返回对应的icon属性
* @param targetValue 要匹配的value值
* @returns 匹配到的icon字符串未匹配到返回空字符串
*/
export const getIconByValue = (targetValue: string): string =>
getProviderPresetByValue(targetValue)?.icon || '';
export const isSvgString = (icon: any) => {
if (typeof icon !== 'string') return false;
// 简单判断:是否包含 SVG 根标签
return icon.trim().startsWith('<svg') && icon.trim().endsWith('</svg>');
};
export const getProviderBadgeText = (
providerName?: string,
providerType?: string,
) => {
const preset = getProviderPresetByValue(providerType);
const source = providerName || preset?.label || providerType || 'AI';
const ascii = source
.replaceAll(/[^a-z]/gi, '')
.slice(0, 2)
.toUpperCase();
if (ascii) {
return ascii;
}
return source.replaceAll(/\s+/g, '').slice(0, 2).toUpperCase();
};
export const providerPresets = providerOptions;