model_family.go

 1package agent
 2
 3import "strings"
 4
 5type ModelFamily string
 6
 7const (
 8	ModelFamilyAnthropic ModelFamily = "anthropic"
 9	ModelFamilyOpenAI    ModelFamily = "openai"
10	ModelFamilyGoogle    ModelFamily = "google"
11	ModelFamilyDefault   ModelFamily = "default"
12)
13
14// DetectModelFamily determines the model family based on the model name.
15func DetectModelFamily(modelName string) ModelFamily {
16	modelLower := strings.ToLower(modelName)
17
18	if strings.Contains(modelLower, "claude") {
19		return ModelFamilyAnthropic
20	}
21
22	if strings.HasPrefix(modelLower, "gpt-") ||
23		strings.HasPrefix(modelLower, "o1-") ||
24		strings.HasPrefix(modelLower, "o3-") ||
25		strings.HasPrefix(modelLower, "o4-") ||
26		strings.Contains(modelLower, "chatgpt") {
27		return ModelFamilyOpenAI
28	}
29
30	if strings.HasPrefix(modelLower, "gemini") {
31		return ModelFamilyGoogle
32	}
33
34	return ModelFamilyDefault
35}