150 lines
4.2 KiB
Go
150 lines
4.2 KiB
Go
package llmtests
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/maximhq/bifrost/core/schemas"
|
|
)
|
|
|
|
func TestCrossProviderScenarios(t *testing.T) {
|
|
t.Parallel()
|
|
t.Skip("Skipping cross provider scenarios test")
|
|
|
|
client, ctx, cancel, err := SetupTest()
|
|
if err != nil {
|
|
t.Fatalf("Error initializing test setup: %v", err)
|
|
}
|
|
defer cancel()
|
|
defer client.Shutdown()
|
|
|
|
// Define available providers for cross-provider testing
|
|
providers := []ProviderConfig{
|
|
{
|
|
Provider: schemas.OpenAI,
|
|
ChatModel: "gpt-4o-mini",
|
|
VisionModel: "gpt-4o",
|
|
ToolsSupported: true,
|
|
VisionSupported: true,
|
|
StreamSupported: true,
|
|
Available: true,
|
|
},
|
|
{
|
|
Provider: schemas.Anthropic,
|
|
ChatModel: "claude-3-5-sonnet-20241022",
|
|
VisionModel: "claude-3-5-sonnet-20241022",
|
|
ToolsSupported: true,
|
|
VisionSupported: true,
|
|
StreamSupported: true,
|
|
Available: true,
|
|
},
|
|
{
|
|
Provider: schemas.Groq,
|
|
ChatModel: "llama-3.1-70b-versatile",
|
|
VisionModel: "", // No vision support
|
|
ToolsSupported: true,
|
|
VisionSupported: false,
|
|
StreamSupported: true,
|
|
Available: true,
|
|
},
|
|
{
|
|
Provider: schemas.Gemini,
|
|
ChatModel: "gemini-1.5-pro",
|
|
VisionModel: "gemini-1.5-pro",
|
|
ToolsSupported: true,
|
|
VisionSupported: true,
|
|
StreamSupported: true,
|
|
Available: true,
|
|
},
|
|
{
|
|
Provider: schemas.Bedrock,
|
|
ChatModel: "claude-sonnet-4",
|
|
VisionModel: "claude-sonnet-4",
|
|
ToolsSupported: true,
|
|
VisionSupported: true,
|
|
StreamSupported: false,
|
|
Available: true,
|
|
},
|
|
{
|
|
Provider: schemas.Vertex,
|
|
ChatModel: "gemini-1.5-pro",
|
|
VisionModel: "gemini-1.5-pro",
|
|
ToolsSupported: true,
|
|
VisionSupported: true,
|
|
StreamSupported: false,
|
|
Available: true,
|
|
},
|
|
}
|
|
|
|
// Test configuration
|
|
testConfig := CrossProviderTestConfig{
|
|
Providers: providers,
|
|
ConversationSettings: ConversationSettings{
|
|
MaxMessages: 25,
|
|
ConversationGeneratorModel: "gpt-4o",
|
|
RequiredMessageTypes: []MessageModality{
|
|
ModalityText,
|
|
ModalityTool,
|
|
ModalityVision,
|
|
},
|
|
},
|
|
TestSettings: TestSettings{
|
|
EnableRetries: true,
|
|
MaxRetriesPerMessage: 2,
|
|
ValidationStrength: ValidationModerate,
|
|
},
|
|
}
|
|
|
|
// Get predefined scenarios
|
|
scenariosList := GetPredefinedScenarios()
|
|
|
|
for _, scenario := range scenariosList {
|
|
// Test each scenario with both Chat Completions and Responses API
|
|
t.Run(scenario.Name+"_ChatCompletions", func(t *testing.T) {
|
|
bfCtx := schemas.NewBifrostContext(ctx, schemas.NoDeadline)
|
|
RunCrossProviderScenarioTest(t, client, bfCtx, testConfig, scenario, false) // false = Chat Completions API
|
|
})
|
|
|
|
t.Run(scenario.Name+"_ResponsesAPI", func(t *testing.T) {
|
|
bfCtx := schemas.NewBifrostContext(ctx, schemas.NoDeadline)
|
|
RunCrossProviderScenarioTest(t, client, bfCtx, testConfig, scenario, true) // true = Responses API
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestCrossProviderConsistency(t *testing.T) {
|
|
t.Parallel()
|
|
t.Skip("Skipping cross provider consistency test")
|
|
|
|
client, ctx, cancel, err := SetupTest()
|
|
if err != nil {
|
|
t.Fatalf("Error initializing test setup: %v", err)
|
|
}
|
|
defer cancel()
|
|
defer client.Shutdown()
|
|
|
|
providers := []ProviderConfig{
|
|
{Provider: schemas.OpenAI, ChatModel: "gpt-4o-mini", Available: true},
|
|
{Provider: schemas.Anthropic, ChatModel: "claude-3-5-sonnet-20241022", Available: true},
|
|
{Provider: schemas.Groq, ChatModel: "llama-3.1-70b-versatile", Available: true},
|
|
{Provider: schemas.Gemini, ChatModel: "gemini-1.5-pro", Available: true},
|
|
}
|
|
|
|
testConfig := CrossProviderTestConfig{
|
|
Providers: providers,
|
|
TestSettings: TestSettings{
|
|
ValidationStrength: ValidationLenient, // More lenient for consistency testing
|
|
},
|
|
}
|
|
|
|
// Test same prompt across different providers
|
|
t.Run("SamePrompt_DifferentProviders_ChatCompletions", func(t *testing.T) {
|
|
bfCtx := schemas.NewBifrostContext(ctx, schemas.NoDeadline)
|
|
RunCrossProviderConsistencyTest(t, client, bfCtx, testConfig, false) // Chat Completions
|
|
})
|
|
|
|
t.Run("SamePrompt_DifferentProviders_ResponsesAPI", func(t *testing.T) {
|
|
bfCtx := schemas.NewBifrostContext(ctx, schemas.NoDeadline)
|
|
RunCrossProviderConsistencyTest(t, client, bfCtx, testConfig, true) // Responses API
|
|
})
|
|
}
|