Ana içeriğe geç

AI Knowledge Base ve LLM Gateway Service API Referansı

AI KNOWLEDGE SERVICE (/api/knowledge)

KnowledgeController — /api/knowledge

#MethodRouteAuthDescription
1GET/api/knowledge?page={int}&pageSize={int}RequiredKnowledge base listesi (PaginatedList<KnowledgeBaseDto>)
2POST/api/knowledgeRequiredYeni KB oluştur — 201 Created (CreateKnowledgeBaseCommand: name, description, embeddingBackendId, embeddingModelId)
3GET/api/knowledge/{kbId:guid}RequiredKB detayı (KnowledgeBaseDetailDto — chunk sayısı, embedding bilgisi)
4PUT/api/knowledge/{kbId:guid}RequiredKB güncelle
5DELETE/api/knowledge/{kbId:guid}RequiredKB sil (soft delete)

Knowledge Base Chunk Endpoints

#MethodRouteAuthDescription
6POST/api/knowledge/{kbId}/documents/uploadRequiredBelgeleri yükle ve vektörize et — 202 Accepted (multipart/form-data: PDF, DOCX, TXT, Markdown)
7GET/api/knowledge/{kbId}/documents?page={int}&pageSize={int}RequiredYüklenen belgeler listesi (PaginatedList<DocumentDto>)
8DELETE/api/knowledge/{kbId}/documents/{documentId:guid}RequiredBelge sil
#MethodRouteAuthDescription
9POST/api/knowledge/{kbId}/searchRequiredSemantik arama — 200 OK (SearchQueryCommand: query, topK=5, similarityThreshold=0.75)

Response:

{
"success": true,
"result": {
"chunks": [{
"text": "string",
"score": 0.92,
"sourceDocumentName": "string",
"startLine": 42,
"endLine": 58
}],
"totalResults": 5
}
}

Internal Knowledge Controller — internal routing

#MethodRouteAuthDescription
10GET/api/knowledge/internal/{kbId:guid}/embedding-infoInternalAPI KeyEmbedding backend bilgisi (RAG için)

AI LLM GATEWAY (/api/llm-gateway)

LlmGatewayController — public-facing proxy

#MethodRouteAuthDescription
1POST/api/llm-gateway/completionsRequiredCompletion proxy (routing yapar) — 200 OK (ApiResponse<CompletionResponseDto>)
2POST/api/llm-gateway/embeddingsRequiredEmbedding proxy — 200 OK (ApiResponse<EmbeddingResponseDto>)

Gateway Request Body

{
"model": "string (optional, if null: auto-select based on routing strategy)",
"messages": [
{ "role": "system|user|assistant", "content": "string" }
],
"temperature": 0.7,
"maxTokens": 4096,
"routingStrategy": "cost | latency | quality | manual (optional)",
"budgetLimit": 100.0,
"allowedModels": ["string[]"],
"semanticCacheKey": "string | null"
}

Gateway Response Body

{
"success": true,
"result": {
"responseText": "string",
"modelUsed": "string (e.g., gpt-4o-mini)",
"backendUsed": "string (e.g., ollama-local)",
"tokenUsage": { "promptTokens": 128, "completionTokens": 256, "totalTokens": 384 },
"latencyMs": 450,
"cached": false,
"fallbackChain": ["openrouter", "ollama-macstudio"]
}
}

Routing Strategy Enum

ValueNameDescription
0CostOptimizeEn ucuz model seç
1LatencyOptimizeEn hızlı yanıt veren model seç
2QualityPriorityEn yetkin model seç
3ManualBelirli backend'e kilitle

Fallback Zinciri (Chain)

Ana Model (örn: gpt-4o via OpenRouter) → Timeout/Error?
→ Yedek Model (örn: claude-haiku via Ollama-MacStudio) → Timeout/Error?
→ Son Çare (örn: gemma via Ollama-local)

Internal LLM Controller — internal routing

#MethodRouteAuthDescription
3GET/api/llm-gateway/internal/backendsInternalAPI KeyBackend listesi + sağlık durumu
4POST/api/llm-gateway/internal/routeInternalAPI KeyManuel routing ({ model, strategy })

LLM Backend Config (via LLM Settings API)

#MethodRouteAuthDescription
5GET/api/admin/llm/backends?page={int}&pageSize={int}RequiredBackend listesi (PaginatedList<LlmBackendDto>)
6POST/api/admin/llm/backendsRequiredYeni backend — 201 Created (CreateLlmBackendCommand: name, displayName, provider, defaultModel, availableModels: string[], baseUri, apiKey, priority, retryCount, timeoutSeconds)
7PUT/api/admin/llm/backends/{backendId:guid}RequiredBackend güncelle
8DELETE/api/admin/llm/backends/{backendId:guid}RequiredBackend sil

LlmBackendDto

{
"id": "guid",
"name": "ollama-local",
"displayName": "Local Ollama",
"provider": "Ollama",
"baseUri": "http://host.docker.internal:11434",
"defaultModel": "qwen3.5:cloud",
"availableModels": ["embeddinggemma:latest", "gemma4:e4b", "qwen3.5:cloud"],
"priority": 3,
"retryCount": 2,
"timeoutSeconds": 180,
"isActive": true,
"currentCost": 0.00,
"totalTokensProcessed": 239524
}