Table of Contents

Sağlayıcılar (TR)

Bu sayfayı neden okuyorsunuz? Bu sayfa embedding sağlayıcılarını (Mock, OpenAI, Gemini, Mistral, Azure, Claude) açıklar: ne zaman hangisini kullanacağınız, env değişkenleri ve minimal kod. İlk projenizde hangi sağlayıcıyı seçeceğinizi veya production'da nasıl yapılandıracağınızı merak ediyorsanız doğru yerdesiniz.

Intentum, davranışı (örn. "user:login") vektörlere çevirmek için embedding sağlayıcıları kullanır; böylece intent modeli güven skorunu çıkarabilir. Yerel çalıştırma ve testler için mock sağlayıcı (API anahtarı yok) veya production için gerçek sağlayıcı (OpenAI, Gemini, Mistral, Azure OpenAI, Claude) kullanabilirsin.

Bu sayfa her sağlayıcıyı açıklar: ne yapar, env var’lar, minimal kod ve DI kurulumu. Kolay / orta / zor kullanım örnekleri için AI sağlayıcılarını kullanma sayfasına bak. Genel akış (Observe → Infer → Decide) için API Referansı ve Kurulum.


Hangisini ne zaman kullanmalı

Sağlayıcı Ne zaman
MockEmbeddingProvider (Intentum.AI) Yerel çalıştırma, test, demo — API anahtarı yok.
OpenAI Zaten OpenAI kullanıyorsan; iyi model seçimi ve doküman.
Gemini Google tercih ediyorsan; genelde iyi gecikme ve fiyat.
Mistral Avrupa odaklı veya Mistral modelleri istiyorsan.
Azure OpenAI Azure kullanıyorsan veya kurumsal SLA gerekiyorsa.
Claude Anthropic kullanıyorsan; mesaj tabanlı intent skoru destekler.

Uygulama başına tek embedding sağlayıcı yeterli; stack ve bölgene uyanı seç. Hepsi aynı akışı kullanır: LlmIntentModel(embeddingProvider, similarityEngine) sonra Infer(space).


OpenAI

Ne yapar: Davranış anahtarlarını vektörlere çevirmek için OpenAI embedding API’sini (örn. text-embedding-3-large) çağırır.

Env var: OPENAI_API_KEY, OPENAI_EMBEDDING_MODEL, OPENAI_BASE_URL (opsiyonel, örn. proxy).

Minimal kod (DI yok):

using Intentum.AI.OpenAI;
using Intentum.AI.Models;
using Intentum.AI.Similarity;

var options = OpenAIOptions.FromEnvironment();
options.Validate();

var httpClient = new HttpClient
{
    BaseAddress = new Uri(options.BaseUrl ?? "https://api.openai.com/v1/")
};
httpClient.DefaultRequestHeaders.Authorization =
    new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", options.ApiKey);

var provider = new OpenAIEmbeddingProvider(options, httpClient);
var model = new LlmIntentModel(provider, new SimpleAverageSimilarityEngine());

var space = new BehaviorSpace().Observe("user", "login").Observe("user", "submit");
var intent = model.Infer(space);

DI (örn. ASP.NET Core):

using Intentum.AI.OpenAI;
using Microsoft.Extensions.DependencyInjection;

var options = OpenAIOptions.FromEnvironment();
services.AddIntentumOpenAI(options);

// Sonra IIntentEmbeddingProvider (veya OpenAIEmbeddingProvider) inject et ve LlmIntentModel kur.

Gemini

Ne yapar: Davranış anahtarlarını vektörlere çevirmek için Google Gemini embedding API’sini (örn. text-embedding-004) çağırır.

Env var: GEMINI_API_KEY, GEMINI_EMBEDDING_MODEL, GEMINI_BASE_URL (opsiyonel).

Minimal kod (DI yok):

using Intentum.AI.Gemini;
using Intentum.AI.Models;
using Intentum.AI.Similarity;

var options = GeminiOptions.FromEnvironment();
var httpClient = new HttpClient { BaseAddress = new Uri(options.BaseUrl ?? "https://generativelanguage.googleapis.com/v1beta/") };
var provider = new GeminiEmbeddingProvider(options, httpClient);
var model = new LlmIntentModel(provider, new SimpleAverageSimilarityEngine());

DI:

using Intentum.AI.Gemini;
using Microsoft.Extensions.DependencyInjection;

var options = GeminiOptions.FromEnvironment();
services.AddIntentumGemini(options);

Mistral

Ne yapar: Davranış anahtarlarını vektörlere çevirmek için Mistral embedding API’sini (örn. mistral-embed) çağırır.

Env var: MISTRAL_API_KEY, MISTRAL_EMBEDDING_MODEL, MISTRAL_BASE_URL (opsiyonel).

Minimal kod (DI yok):

using Intentum.AI.Mistral;
using Intentum.AI.Models;
using Intentum.AI.Similarity;

var options = MistralOptions.FromEnvironment();
var httpClient = new HttpClient { BaseAddress = new Uri(options.BaseUrl ?? "https://api.mistral.ai/v1/") };
httpClient.DefaultRequestHeaders.Authorization =
    new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", options.ApiKey);
var provider = new MistralEmbeddingProvider(options, httpClient);
var model = new LlmIntentModel(provider, new SimpleAverageSimilarityEngine());

DI:

using Intentum.AI.Mistral;
using Microsoft.Extensions.DependencyInjection;

var options = MistralOptions.FromEnvironment();
services.AddIntentumMistral(options);

Azure OpenAI

Ne yapar: Davranış anahtarlarını vektörlere çevirmek için Azure OpenAI embedding deployment’ını çağırır. Endpoint + API key + deployment adı kullanır.

Env var: AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_API_KEY, AZURE_OPENAI_EMBEDDING_DEPLOYMENT, AZURE_OPENAI_API_VERSION (opsiyonel).

Minimal kod (DI yok):

using Intentum.AI.AzureOpenAI;
using Intentum.AI.Models;
using Intentum.AI.Similarity;

var options = AzureOpenAIOptions.FromEnvironment();
var httpClient = new HttpClient();
// Azure header’da ApiKey kullanır; extension genelde ayarlar.
var provider = new AzureOpenAIEmbeddingProvider(options, httpClient);
var model = new LlmIntentModel(provider, new SimpleAverageSimilarityEngine());

DI:

using Intentum.AI.AzureOpenAI;
using Microsoft.Extensions.DependencyInjection;

var options = AzureOpenAIOptions.FromEnvironment();
services.AddIntentumAzureOpenAI(options);

DeepSeek

Ne yapar: Davranış anahtarlarını vektörlere çevirmek için DeepSeek embedding API'sini çağırır. OpenAI ile uyumlu API formatı kullanır (https://api.deepseek.com/v1).

Kurulum

dotnet add package Intentum.AI.DeepSeek

Ayarlar (opsiyonel)

Ortam değişkeni Varsayılan Açıklama
DEEPSEEK_API_KEY Zorunlu. DeepSeek API anahtarı
DEEPSEEK_BASE_URL https://api.deepseek.com/v1 API base URL
DEEPSEEK_EMBEDDING_MODEL deepseek-embedding Embedding model adı

Kullanım

using Intentum.AI;
using Intentum.AI.DeepSeek;

services.AddIntentumDeepSeek(DeepSeekOptions.FromEnvironment());

// veya manuel:
var options = new DeepSeekOptions
{
    ApiKey = "your-api-key",
    EmbeddingModel = "deepseek-embedding"
};
services.AddIntentumDeepSeek(options);

Notlar

  • OpenAI ile aynı API formatını kullandığı için Intentum.AI.OpenAI'ye çok benzer
  • Rate limit (429) durumunda DeepSeekRateLimitException fırlatılır, EmbeddingHttpRetryHandler ile otomatik tekrar dener
  • Embedding çıktısı EmbeddingScore.Normalize() ile normalize edilir

Claude

Ne yapar: Anthropic Claude mesaj tabanlı intent skoru (ClaudeMessageIntentModel) için kullanılabilir; sadece embedding değil. Varsayılan olarak Claude paketi embedding için stub kullanabilir; tam intent çıkarımı için mesaj skorunu kullan.

Env var: CLAUDE_API_KEY, CLAUDE_MODEL, CLAUDE_BASE_URL, CLAUDE_API_VERSION, CLAUDE_USE_MESSAGES_SCORING (opsiyonel).

DI (önerilen):

using Intentum.AI.Claude;
using Microsoft.Extensions.DependencyInjection;

var options = ClaudeOptions.FromEnvironment();
services.AddIntentumClaude(options);

Sonra intent modelini (örn. ClaudeMessageIntentModel) ihtiyaca göre inject et. Mesaj tabanlı skor kullanımı için paket dokümanına bak.


ONNX (Yerel)

Ne yapar: ONNX Runtime kullanarak yerel olarak intent çıkarımı çalıştırır. API anahtarı gerekmez — model makinenizde çalışır. Çevrimdışı veya düşük gecikme senaryoları için kullanışlıdır.

Env var: Gerekmez (model yolu OnnxIntentModelOptions ile yapılandırılır).

Minimal kod:

using Intentum.AI.ONNX;

var options = new OnnxIntentModelOptions
{
    ModelPath = "path/to/model.onnx"
};
var model = new OnnxIntentModel(options);
var intent = model.Infer(space);

Ne zaman kullanılır: Harici API çağrısı olmadan yerel çıkarım gerektiğinde veya edge/embedded senaryoları için.

Kural tabanlı veya LLM modelleriyle birleştirme için Hibrit mod ve kural tabanlı yedekleme bölümüne bakın.


Güvenlik ve yapılandırma

  • API anahtarlarını asla commit etme. Ortam değişkenleri veya secret manager kullan.
  • Production’da ham istek/cevap gövdesini loglama.
  • Bölge ve gecikme: Gecikme önemliyse kullanıcılara yakın sağlayıcı ve endpoint seç.
  • Rate limit: Her sağlayıcının limitine uy; production için retry ve backoff (veya ayrı middleware) düşün.

Tam env var isimleri ve opsiyonel alanlar için her sağlayıcının *Options sınıfı ve repodaki FromEnvironment() kullanımına bak.

Sonraki adım: Bu sayfayı bitirdiyseniz → AI sağlayıcılarını kullanma veya API Referansı.