export const LLM_FACTORY_LIST = Object.freeze({
  TongYiQianWen: 'Tongyi-Qianwen',
  Moonshot: 'Moonshot',
  OpenAI: 'OpenAI',
  ZhipuAI: 'ZHIPU-AI',
  WenXinYiYan: '文心一言',
  Ollama: 'Ollama',
  Xinference: 'Xinference',
  ModelScope: 'ModelScope',
  DeepSeek: 'DeepSeek',
  VolcEngine: 'VolcEngine',
  BaiChuan: 'BaiChuan',
  Jina: 'Jina',
  MiniMax: 'MiniMax',
  Mistral: 'Mistral',
  AzureOpenAI: 'Azure-OpenAI',
  Bedrock: 'Bedrock',
  Gemini: 'Gemini',
  Groq: 'Groq',
  OpenRouter: 'OpenRouter',
  LocalAI: 'LocalAI',
  StepFun: 'StepFun',
  NVIDIA: 'NVIDIA',
  LMStudio: 'LM-Studio',
  OpenAiAPICompatible: 'OpenAI-API-Compatible',
  Cohere: 'Cohere',
  LeptonAI: 'LeptonAI',
  TogetherAI: 'TogetherAI',
  PerfXCloud: 'PerfXCloud',
  Upstage: 'Upstage',
  NovitaAI: 'NovitaAI',
  SILICONFLOW: 'SILICONFLOW',
  PPIO: 'PPIO',
  ZeroOneAI: '01.AI',
  Replicate: 'Replicate',
  TencentHunYuan: 'Tencent Hunyuan',
  XunFeiSpark: 'XunFei Spark',
  BaiduYiYan: 'BaiduYiyan',
  FishAudio: 'Fish Audio',
  TencentCloud: 'Tencent Cloud',
  Anthropic: 'Anthropic',
  VoyageAI: 'Voyage AI',
  GoogleCloud: 'Google Cloud',
  HuggingFace: 'HuggingFace',
  YouDao: 'Youdao',
  BAAI: 'BAAI',
  NomicAI: 'nomic-ai',
  JinaAI: 'jinaai',
  SentenceTransformers: 'sentence-transformers',
  GPUStack: 'GPUStack',
  VLLM: 'VLLM',
  GiteeAI: 'GiteeAI',
  Ai302: '302.AI',
  DeepInfra: 'DeepInfra',
  Grok: 'Grok',
  XAI: 'xAI',
  TokenPony: 'TokenPony',
  Meituan: 'Meituan',
  CometAPI: 'CometAPI',
  DeerAPI: 'DeerAPI',
} as const);

export type LLMFactory = (typeof LLM_FACTORY_LIST)[keyof typeof LLM_FACTORY_LIST];

// Please lowercase the file name
export const IconMap = {
  [LLM_FACTORY_LIST.TongYiQianWen]: 'tongyi',
  [LLM_FACTORY_LIST.Moonshot]: 'moonshot',
  [LLM_FACTORY_LIST.OpenAI]: 'openai',
  [LLM_FACTORY_LIST.ZhipuAI]: 'zhipu',
  [LLM_FACTORY_LIST.WenXinYiYan]: 'wenxin',
  [LLM_FACTORY_LIST.Ollama]: 'ollama',
  [LLM_FACTORY_LIST.Xinference]: 'xinference',
  [LLM_FACTORY_LIST.ModelScope]: 'modelscope',
  [LLM_FACTORY_LIST.DeepSeek]: 'deepseek',
  [LLM_FACTORY_LIST.VolcEngine]: 'volc_engine',
  [LLM_FACTORY_LIST.BaiChuan]: 'baichuan',
  [LLM_FACTORY_LIST.Jina]: 'jina',
  [LLM_FACTORY_LIST.MiniMax]: 'chat-minimax',
  [LLM_FACTORY_LIST.Mistral]: 'mistral',
  [LLM_FACTORY_LIST.AzureOpenAI]: 'azure',
  [LLM_FACTORY_LIST.Bedrock]: 'bedrock',
  [LLM_FACTORY_LIST.Gemini]: 'gemini',
  [LLM_FACTORY_LIST.Groq]: 'groq-next',
  [LLM_FACTORY_LIST.OpenRouter]: 'open-router',
  [LLM_FACTORY_LIST.LocalAI]: 'local-ai',
  [LLM_FACTORY_LIST.StepFun]: 'stepfun',
  [LLM_FACTORY_LIST.NVIDIA]: 'nvidia',
  [LLM_FACTORY_LIST.LMStudio]: 'lm-studio',
  [LLM_FACTORY_LIST.OpenAiAPICompatible]: 'openai-api',
  [LLM_FACTORY_LIST.Cohere]: 'cohere',
  [LLM_FACTORY_LIST.LeptonAI]: 'lepton-ai',
  [LLM_FACTORY_LIST.TogetherAI]: 'together-ai',
  [LLM_FACTORY_LIST.PerfXCloud]: 'perfx-cloud',
  [LLM_FACTORY_LIST.Upstage]: 'upstage',
  [LLM_FACTORY_LIST.NovitaAI]: 'novita-ai',
  [LLM_FACTORY_LIST.SILICONFLOW]: 'siliconflow',
  [LLM_FACTORY_LIST.PPIO]: 'ppio',
  [LLM_FACTORY_LIST.ZeroOneAI]: 'yi',
  [LLM_FACTORY_LIST.Replicate]: 'replicate',
  [LLM_FACTORY_LIST.TencentHunYuan]: 'hunyuan',
  [LLM_FACTORY_LIST.XunFeiSpark]: 'spark',
  [LLM_FACTORY_LIST.BaiduYiYan]: 'yiyan',
  [LLM_FACTORY_LIST.FishAudio]: 'fish-audio',
  [LLM_FACTORY_LIST.TencentCloud]: 'tencent-cloud',
  [LLM_FACTORY_LIST.Anthropic]: 'anthropic',
  [LLM_FACTORY_LIST.VoyageAI]: 'voyage',
  [LLM_FACTORY_LIST.GoogleCloud]: 'google-cloud',
  [LLM_FACTORY_LIST.HuggingFace]: 'huggingface',
  [LLM_FACTORY_LIST.YouDao]: 'youdao',
  [LLM_FACTORY_LIST.BAAI]: 'baai',
  [LLM_FACTORY_LIST.NomicAI]: 'nomic-ai',
  [LLM_FACTORY_LIST.JinaAI]: 'jina',
  [LLM_FACTORY_LIST.SentenceTransformers]: 'sentence-transformers',
  [LLM_FACTORY_LIST.GPUStack]: 'gpustack',
  [LLM_FACTORY_LIST.VLLM]: 'vllm',
  [LLM_FACTORY_LIST.GiteeAI]: 'gitee-ai',
  [LLM_FACTORY_LIST.Ai302]: 'ai302',
  [LLM_FACTORY_LIST.DeepInfra]: 'deepinfra',
  [LLM_FACTORY_LIST.Grok]: 'grok',
  [LLM_FACTORY_LIST.XAI]: 'xai',
  [LLM_FACTORY_LIST.TokenPony]: 'token-pony',
  [LLM_FACTORY_LIST.Meituan]: 'longcat',
  [LLM_FACTORY_LIST.CometAPI]: 'cometapi',
  [LLM_FACTORY_LIST.DeerAPI]: 'deerapi',
};

export const LocalLlmFactories: LLMFactory[] = [
  LLM_FACTORY_LIST.LocalAI,
  LLM_FACTORY_LIST.Ollama,
  LLM_FACTORY_LIST.LMStudio,
  LLM_FACTORY_LIST.Xinference,
  LLM_FACTORY_LIST.VLLM,
  LLM_FACTORY_LIST.OpenAiAPICompatible,
  LLM_FACTORY_LIST.TogetherAI,
  LLM_FACTORY_LIST.Replicate,
  LLM_FACTORY_LIST.OpenRouter,
  LLM_FACTORY_LIST.HuggingFace,
  LLM_FACTORY_LIST.GPUStack,
  LLM_FACTORY_LIST.ModelScope,
]
