Yerel entegrasyon testleri ve VerifyAI
Bu sayfayı neden okuyorsunuz? Bu sayfa gerçek API entegrasyon testlerini (OpenAI, Mistral, Gemini, Azure OpenAI) ve VerifyAI uygulamasını yerelde nasıl çalıştıracağınızı anlatır. API anahtarı ile sağlayıcı doğrulaması yapmak istiyorsanız doğru yerdesiniz.
Bu sayfa gerçek API entegrasyon testlerini (OpenAI, Mistral, Gemini, Azure OpenAI) ve VerifyAI uygulamasını yerelde nasıl çalıştıracağınızı anlatır. API anahtarı gerektirir; CI'da varsayılan olarak çalıştırılmaz (CI Category=Integration hariç tutar); yalnızca kendi makinenizde kullanın.
VerifyAI (tek uygulama: tüm sağlayıcılar, embedding + tam pipeline)
VerifyAI, anahtar tanımladığınız her sağlayıcı için Intentum’un çalıştığını doğrulayan tek giriş noktasıdır. Her sağlayıcı için embedding ve tam pipeline (BehaviorSpace → Infer → Policy) çalıştırır.
Tek seferlik kurulum
- Şablonu reponun kökünde
.envolarak kopyalayın:cp .env.example .env .envdosyasını düzenleyip en az bir sağlayıcının anahtarını yazın (değişken adları için.env.example’a bakın):- OpenAI:
OPENAI_API_KEY, isteğe bağlıOPENAI_BASE_URL,OPENAI_EMBEDDING_MODEL - Mistral:
MISTRAL_API_KEY, isteğe bağlıMISTRAL_BASE_URL,MISTRAL_EMBEDDING_MODEL - Gemini:
GEMINI_API_KEY, isteğe bağlıGEMINI_BASE_URL,GEMINI_EMBEDDING_MODEL - Azure OpenAI:
AZURE_OPENAI_ENDPOINT,AZURE_OPENAI_API_KEY, isteğe bağlıAZURE_OPENAI_EMBEDDING_DEPLOYMENT,AZURE_OPENAI_API_VERSION
- OpenAI:
VerifyAI çalıştırma
Reponun kökünden:
dotnet run --project samples/Intentum.VerifyAI
Uygulama .env’i yükler; anahtarı olan her sağlayıcı için: (1) embedding API’yi çağırır, (2) tam intent pipeline’ını (Infer + Policy) çalıştırır ve [OK] SağlayıcıAdı veya [FAIL] / [SKIP] ile mesaj yazar.
Sadece belirli sağlayıcıları çalıştırma
Gereksiz istek atmamak için yalnızca seçtiğiniz sağlayıcıları çalıştırabilirsiniz. Ortam değişkeni: VERIFY_AI_PROVIDERS, virgülle ayrılmış: OpenAI, Azure, Gemini, Mistral.
Örnek — sadece Mistral:
VERIFY_AI_PROVIDERS=Mistral dotnet run --project samples/Intentum.VerifyAI
Örnek — Mistral ve OpenAI:
VERIFY_AI_PROVIDERS=Mistral,OpenAI dotnet run --project samples/Intentum.VerifyAI
Belirtilmezse .env'de anahtarı olan tüm sağlayıcılar çalıştırılır.
Verbose: istek/yanıt gövdesini görme
HTTP istek ve yanıt gövdesini (örn. hata ayıklama için) görmek için VERIFY_AI_VERBOSE=1 kullanın. Sadece bir sağlayıcının gelen/giden datasını görmek için VERIFY_AI_PROVIDERS ile birlikte kullanın:
VERIFY_AI_PROVIDERS=Mistral VERIFY_AI_VERBOSE=1 dotnet run --project samples/Intentum.VerifyAI
Tüm sağlayıcılar için verbose:
VERIFY_AI_VERBOSE=1 dotnet run --project samples/Intentum.VerifyAI
Veya .env’e VERIFY_AI_VERBOSE=1 ekleyebilirsiniz.
Entegrasyon testleri (xUnit, sağlayıcı bazlı)
Entegrasyon test sınıfları, ilgili env değişkenleri set edildiğinde gerçek API’yi çağırır. Anahtar yoksa açık mesajla fail eder (sessiz atlama yok). İndirilen veri gerektiren testler (örn. Mendeley Excel veya HTML için GreenwashingCaseStudyTests) de Category=Integration kullanır. CI hepsini --filter "Category!=Integration" ile hariç tutar.
| Sağlayıcı | Gerekli env değişkenleri | Script |
|---|---|---|
| OpenAI | OPENAI_API_KEY |
./scripts/run-integration-tests.sh |
| Mistral | MISTRAL_API_KEY |
./scripts/run-mistral-integration-tests.sh |
| Gemini | GEMINI_API_KEY |
./scripts/run-gemini-integration-tests.sh |
| Azure OpenAI | AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_API_KEY |
./scripts/run-azure-integration-tests.sh |
Her script, reponun kökünde .env varsa yükler ve yalnızca o sağlayıcının entegrasyon testlerini çalıştırır.
Entegrasyon testlerini çalıştırma (her seferinde)
Reponun kökünden, .env’de ilgili anahtarları set ettikten sonra:
# OpenAI
./scripts/run-integration-tests.sh
# Mistral
./scripts/run-mistral-integration-tests.sh
# Gemini
./scripts/run-gemini-integration-tests.sh
# Azure OpenAI
./scripts/run-azure-integration-tests.sh
Veya dotnet test ve filter ile (.env yüklemeden; değişkenleri shell’de set edin veya script kullanın):
dotnet test tests/Intentum.Tests/Intentum.Tests.csproj --filter "FullyQualifiedName~OpenAIIntegrationTests"
dotnet test tests/Intentum.Tests/Intentum.Tests.csproj --filter "FullyQualifiedName~MistralIntegrationTests"
dotnet test tests/Intentum.Tests/Intentum.Tests.csproj --filter "FullyQualifiedName~GeminiIntegrationTests"
dotnet test tests/Intentum.Tests/Intentum.Tests.csproj --filter "FullyQualifiedName~AzureOpenAIIntegrationTests"
Tüm entegrasyon testlerini hariç tutmak (örn. anahtar yokken):
dotnet test tests/Intentum.Tests/Intentum.Tests.csproj --filter "Category!=Integration"
Kurallar (güvenlik)
- API anahtarınızı asla commit etmeyin. Versiyon kontrolü altındaki hiçbir dosyaya yazmayın.
- Anahtar içeren bir dosyayı asla push etmeyin.
.env.gitignore’dadır ve commit edilmez. - Anahtarı yalnızca bu repo içinde, kendi makinenizde, test veya VerifyAI çalıştırmak için kullanın.
Özet
| Adım | Eylem |
|---|---|
| Tek seferlik | cp .env.example .env → .env düzenle, en az bir sağlayıcının anahtarını set et (bkz. .env.example) |
| Tümünü doğrula (önerilen) | dotnet run --project samples/Intentum.VerifyAI (sağlayıcı başına embedding + tam pipeline) |
| Verbose | VERIFY_AI_VERBOSE=1 dotnet run --project samples/Intentum.VerifyAI |
| Sağlayıcı bazlı testler | ./scripts/run-integration-tests.sh (OpenAI), run-mistral-integration-tests.sh, run-gemini-integration-tests.sh, run-azure-integration-tests.sh |
| Entegrasyon testlerini hariç tut | dotnet test ... --filter "Category!=Integration" |
| Asla commit etme | .env .gitignore'da; eklemeyin veya push etmeyin. |
Sonraki adım: Bu sayfayı bitirdiyseniz → Test veya Sağlayıcılar.