import AnthropicIcon from '@/components/icons/AnthropicIcon';
import AgentstackIcon from '@/components/icons/AgentstackIcon';
import ChatgptIcon from '@/components/icons/ChatgptIcon';
import CohereIcon from '@/components/icons/CohereIcon';
import CrewIcon from '@/components/icons/CrewIcon';
import GeminiIcon from '@/components/icons/GeminiIcon';
import GroqIcon from '@/components/icons/GroqIcon';
import LangchainIcon from '@/components/icons/LangchainIcon';
import LitellmIcon from '@/components/icons/LitellmIcon';
import LlamaIndexIcon from '@/components/icons/LlamaIndexIcon';
import MicrosoftIcon from '@/components/icons/MicrosoftIcon';
import MistralAiIcon from '@/components/icons/MistralAiIcon';
import MultionIcon from '@/components/icons/MultionIcon';
import OllamaIcon from '@/components/icons/OllamaIcon';
import DeepseekIcon from '@/components/icons/DeepseekIcon';
import QwenIcon from '@/components/icons/QwenIcon';
import AG2Icon from '@/components/icons/AG2Icon';
import XAIIcon from '@/components/icons/XAIIcon';
import Logo from '@/components/icons/Logo';
import PerplexityIcon from '@/components/icons/PerplexityIcon';
import AgnoIcon from '@/components/icons/AgnoIcon/AgnoIcon';
import XpanderIcon from '@/components/icons/XpanderIcon';
import IBMIcon from '@/components/icons/IBMIcon';
import Mem0Icon from '@/components/icons/Mem0Icon';
const iconMap = {
agentstack: ,
crewai: ,
openai: ,
swarm: ,
gpt: ,
cohere: ,
langchain: ,
ollama: ,
deepseek: ,
qwen: ,
groq: ,
mistralai: ,
mixtral: ,
anthropic: ,
claude: ,
multion: ,
llama: ,
autogen: ,
ag2: ,
litellm: ,
gemini: ,
xai: ,
perplexity: ,
agno: ,
xpander: ,
watson: ,
mem0: ,
};
export const getIconForModel = (model: string): React.ReactNode | null => {
if (!model || typeof model !== 'string') {
return ;
}
const lowerModel = model.toLowerCase();
// Check for specific model name patterns
if (lowerModel.includes('grok')) {
return iconMap.xai || ;
}
// Check for o1, o2, o3, etc. pattern (GPT models)
if (/o[0-9]/.test(lowerModel)) {
return iconMap.gpt || ;
}
// Check for -ada pattern (GPT models)
if (lowerModel.includes('-ada')) {
return iconMap.gpt || ;
}
// Check for gemma pattern (Gemini models)
if (lowerModel.includes('gemma')) {
return iconMap.gemini || ;
}
// Check for mixtral pattern (Mistral models)
if (lowerModel.includes('mixtral') || lowerModel.includes('mistral')) {
return iconMap.mistralai || ;
}
if (lowerModel.includes('perplexity')) {
return iconMap.perplexity || ;
}
if (lowerModel.includes('sonar')) {
return iconMap.perplexity || ;
}
// Check for GCP/Vertex/ADK patterns (Gemini models)
if (
lowerModel.includes('gcp') ||
lowerModel.includes('google') ||
lowerModel.includes('gemini') ||
lowerModel.includes('vertex') ||
lowerModel.includes('adk')
) {
return iconMap.gemini || ;
}
// String includes matching for other models
const match = Object.keys(iconMap).find((key) => lowerModel.includes(key));
return match ? iconMap[match as keyof typeof iconMap] : ;
};