first commit

This commit is contained in:
Beyhan Oğur
2026-04-26 21:52:23 +03:00
commit 880f412e2c
2662 changed files with 866266 additions and 0 deletions

View File

@@ -0,0 +1,80 @@
package llmtests
import (
"context"
"os"
"testing"
bifrost "github.com/maximhq/bifrost/core"
"github.com/maximhq/bifrost/core/schemas"
)
// RunTextCompletionTest tests text completion functionality
func RunTextCompletionTest(t *testing.T, client *bifrost.Bifrost, ctx context.Context, testConfig ComprehensiveTestConfig) {
if !testConfig.Scenarios.TextCompletion || testConfig.TextModel == "" {
t.Logf("⏭️ Text completion not supported for provider %s", testConfig.Provider)
return
}
t.Run("TextCompletion", func(t *testing.T) {
if os.Getenv("SKIP_PARALLEL_TESTS") != "true" {
t.Parallel()
}
prompt := "In fruits, A is for apple and B is for"
request := &schemas.BifrostTextCompletionRequest{
Provider: testConfig.Provider,
Model: testConfig.TextModel,
Input: &schemas.TextCompletionInput{
PromptStr: &prompt,
},
Params: &schemas.TextCompletionParameters{
MaxTokens: bifrost.Ptr(100),
},
Fallbacks: testConfig.TextCompletionFallbacks,
}
// Use retry framework with enhanced validation
retryConfig := GetTestRetryConfigForScenario("TextCompletion", testConfig)
retryContext := TestRetryContext{
ScenarioName: "TextCompletion",
ExpectedBehavior: map[string]interface{}{
"should_continue_prompt": true,
"should_be_coherent": true,
},
TestMetadata: map[string]interface{}{
"provider": testConfig.Provider,
"model": testConfig.TextModel,
"prompt": prompt,
},
}
// Enhanced validation expectations
expectations := GetExpectationsForScenario("TextCompletion", testConfig, map[string]interface{}{})
expectations = ModifyExpectationsForProvider(expectations, testConfig.Provider)
// Note: Removed strict keyword checks as LLMs are non-deterministic
// Tests focus on functionality, not exact content
// Create TextCompletion retry config
textCompletionRetryConfig := TextCompletionRetryConfig{
MaxAttempts: retryConfig.MaxAttempts,
BaseDelay: retryConfig.BaseDelay,
MaxDelay: retryConfig.MaxDelay,
Conditions: []TextCompletionRetryCondition{}, // Add specific text completion retry conditions as needed
OnRetry: retryConfig.OnRetry,
OnFinalFail: retryConfig.OnFinalFail,
}
response, bifrostErr := WithTextCompletionTestRetry(t, textCompletionRetryConfig, retryContext, expectations, "TextCompletion", func() (*schemas.BifrostTextCompletionResponse, *schemas.BifrostError) {
bfCtx := schemas.NewBifrostContext(ctx, schemas.NoDeadline)
return client.TextCompletionRequest(bfCtx, request)
})
if bifrostErr != nil {
t.Fatalf("❌ TextCompletion request failed after retries: %v", GetErrorMessage(bifrostErr))
}
content := GetTextCompletionContent(response)
t.Logf("✅ Text completion result: %s", content)
})
}