78 lines
2 KiB
Go
78 lines
2 KiB
Go
package cliproxy
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/router-for-me/CLIProxyAPI/v7/internal/config"
|
|
"github.com/router-for-me/CLIProxyAPI/v7/internal/registry"
|
|
)
|
|
|
|
func TestBuildOpenAICompatibilityConfigModels_InputModalities(t *testing.T) {
|
|
compat := &config.OpenAICompatibility{
|
|
Name: "mimo",
|
|
Models: []config.OpenAICompatibilityModel{
|
|
{
|
|
Name: "upstream-vision",
|
|
Alias: "mimo-v2.5-pro",
|
|
DisplayName: "Mimo Vision",
|
|
InputModalities: []string{"TEXT", "image", "image"},
|
|
},
|
|
{
|
|
Name: "upstream-image",
|
|
Alias: "compat-image",
|
|
Image: true,
|
|
},
|
|
},
|
|
}
|
|
|
|
models := buildOpenAICompatibilityConfigModels(compat)
|
|
if len(models) != 2 {
|
|
t.Fatalf("model count = %d, want 2", len(models))
|
|
}
|
|
|
|
var vision *ModelInfo
|
|
var imageModel *ModelInfo
|
|
for _, model := range models {
|
|
if model == nil {
|
|
continue
|
|
}
|
|
switch model.ID {
|
|
case "mimo-v2.5-pro":
|
|
vision = model
|
|
case "compat-image":
|
|
imageModel = model
|
|
}
|
|
}
|
|
if vision == nil {
|
|
t.Fatal("expected vision model")
|
|
}
|
|
if vision.DisplayName != "Mimo Vision" {
|
|
t.Fatalf("DisplayName = %q, want Mimo Vision", vision.DisplayName)
|
|
}
|
|
if got := joinModalities(vision.SupportedInputModalities); got != "text,image" {
|
|
t.Fatalf("SupportedInputModalities = %q, want text,image", got)
|
|
}
|
|
if imageModel == nil {
|
|
t.Fatal("expected image model")
|
|
}
|
|
if imageModel.DisplayName != "compat-image" {
|
|
t.Fatalf("image DisplayName = %q, want compat-image", imageModel.DisplayName)
|
|
}
|
|
if imageModel.Type != registry.OpenAIImageModelType {
|
|
t.Fatalf("image model type = %q, want %q", imageModel.Type, registry.OpenAIImageModelType)
|
|
}
|
|
if len(imageModel.SupportedInputModalities) != 0 {
|
|
t.Fatalf("image model input modalities = %+v, want none", imageModel.SupportedInputModalities)
|
|
}
|
|
}
|
|
|
|
func joinModalities(modalities []string) string {
|
|
if len(modalities) == 0 {
|
|
return ""
|
|
}
|
|
out := modalities[0]
|
|
for i := 1; i < len(modalities); i++ {
|
|
out += "," + modalities[i]
|
|
}
|
|
return out
|
|
}
|