Ana içeriğe geç

AI Prompt Manager ve Tool Registry Service API Referansı

AI PROMPT SERVICE (/api/prompts)

PromptsController — /api/prompts

#MethodRouteAuthDescription
1GET/api/prompts?page={int}&pageSize={int}RequiredPrompt listesi (lifecycle: Draft → Review → Approved → Active → Archived) — PaginatedList<PromptDto>
2POST/api/promptsRequiredYeni prompt oluştur — 201 Created (CreatePromptCommand: title, content, modelId, temperature, tags)
3GET/api/prompts/{promptId:guid}RequiredPrompt detayı + versiyon geçmişi — ApiResponse<PromptDetailDto>
4PUT/api/prompts/{promptId:guid}RequiredPrompt güncelle (UpdatePromptCommand)
5DELETE/api/prompts/{promptId:guid}RequiredPrompt sil (soft delete, Archived)

Prompt Version Management

#MethodRouteAuthDescription
6POST/api/prompts/{promptId}/new-versionRequiredYeni versiyon kaydet — 201 Created (CreateNewVersionCommand: versionNote)
7GET/api/prompts/{promptId}/versions?page={int}&pageSize={int}RequiredVersiyon listesi — ApiResponse<List<PromptVersionDto>>
8PUT/api/prompts/{promptId}/versions/{versionId:guid}/reviewRequiredİnceleme (Review) — 204 No Content
9PUT/api/prompts/{promptId}/versions/{versionId:guid}/approveRequiredOnaylama (Approved/Active) — 204 No Content

Prompt Detail Response

{
"id": "guid",
"title": "string",
"content": "string (system prompt içeriği)",
"modelId": "guid | null",
"temperature": 0.7,
"lifecycleStatus": "Active",
"versions": [{
"id": "guid",
"versionNumber": "v3",
"content": "string",
"status": "Active",
"changedBy": "string",
"createdAt": "datetime"
}],
"tags": ["string[]"],
"abTestConfig": { "variantA": true, "variantB": false },
"autoEvaluationScores": { "quality": 0.85, "safety": 0.92 }
}

Dynamic Variables (Runtime Render)

Prompt template'inde {{variable_name}} placeholder kullanılır:

Template:

Sen {{sirket_adi}} için çalışan bir asistansın.
{{musteri_adi}} adlı müşteriye {{dil}} dilinde yardım et.

Runtime Render:

{ "sirket_adi": "Acme Ltd.", "musteri_adi": "Ali Yılmaz", "dil": "Türkçe" }

"Sen Acme Ltd. için çalışan bir asistansın. Ali Yılmaz adlı müşteriye Türkçe dilinde yardım et."


AI TOOL REGISTRY (/api/tools)

ToolsController — /api/tools

#MethodRouteAuthDescription
1GET/api/tools?agentId={guid}&search={string}&kbStatus={int}&page={int}&pageSize={int}RequiredTool listesi — ApiResponse<List<TenantConfiguredToolDto>>
2POST/api/toolsRequiredYeni tool oluştur/güncelle — 201 Created (CreateOrUpdateToolCommand: displayName, baseToolId, description, configParams)
3GET/api/tools/built-in?page={int}&pageSize={int}RequiredBuilt-in tool listesi (Browser Action, Db Execute, Db Query, HTTP Request, Manage Schedule, Send Discord Message, Send Email, Send Slack Message, Send Teams Message, Send Telegram Message, Send WhatsApp Message)
4POST/api/tools/built-in/selectRequiredBuilt-in tool'dan yeni tool oluştur — 201 Created ({ baseToolId: "guid" })
5PUT/api/tools/{toolId:guid}RequiredTool güncelle
6DELETE/api/tools/{toolId:guid}RequiredTool sil (soft delete)

Tool Configuration — Multi-step Setup Flow

Step 1: Display & Schema Config (GET/PUT /api/tools/{id}/config)

{
"id": "guid",
"displayName": "Db Query",
"description": "Natural language to SQL SELECT query and structured results.",
"baseToolId": "db_query",
"type": "Built-in",
"status": "Active",
"schema": {
"databaseType": "postgresql",
"schemaName": "public",
"tables": ["products", "orders", "customers"],
"connectionString": "Vault Secret reference"
},
"kbStatus": { "hasChunks": true, "chunkCount": 152 }
}

Step 2: Parameters Config (GET/PUT /api/tools/{id}/config-params)

{
"maxRows": 100,
"readOnly": true,
"timeoutSeconds": 30
}

Status Lifecycle

PENDING → [Admin Onayı] → APPROVED → ACTIVE

REJECTED

AI ANALYTICS SERVICE (/api/analytics)

AnalyticsController — /api/analytics

#MethodRouteAuthDescription
1GET/api/analytics/llm?startDate={date}&endDate={date}RequiredLLM maliyet & token analizi — 200 OK (ApiResponse<LLMAnalyticsDto>)

Response:

{
"success": true,
"result": {
"totalRequests": 15420,
"totalTokensUsed": 45000000,
"totalCostUSD": 1234.00,
"avgLatencyMs": 850,
"errorRatePercent": 2.0,
"activeAgentCount": 5,
"modelBreakdown": [{
"modelName": "gpt-4o",
"dailyCosts": [{ "date": "2026-03-01", "cost": 45.20, "tokens": 500000 }],
"p95LatencyMs": 1800,
"p99LatencyMs": 3200
}, {
"modelName": "claude-sonnet-4-6",
"dailyCosts": [{ "date": "2026-03-01", "cost": 12.80, "tokens": 320000 }],
"p95LatencyMs": 1400,
"p99LatencyMs": 2800
}]
}
}

Budget Alerts (via analytics)

⚠️ budgetAlert: Aylık bütçenin %80'ine ulaşıldı — Mevcut: $401 / Limit: $500, Tahmini ay sonu: $520


SupportAnalyticsController — /api/analytics/support

#MethodRouteAuthDescription
2GET/api/analytics/support?startDate={date}&endDate={date}RequiredDestek & CSAT analizi — 200 OK (ApiResponse<SupportAnalyticsDto>)

Response:

{
"success": true,
"result": {
"totalConversations": 1247,
"resolutionRatePercent": 83.0,
"escalationRatePercent": 17.0,
"avgDurationMinutes": 4.2,
"csatScore": 4.3,
"csatDistribution": [{ "score": 5, "count": 450 }, { "score": 4, "count": 320 }, { "score": 3, "count": 180 }],
"hourlyHeatmap": [{ "hour": 9, "count": 45 }],
"escalationReasons": [
{ "reason": "Fiyatlandırma sorusu (agent cevaplayamıyor)", "percent": 34 },
{ "reason": "Teknik arıza (tool timeout)", "percent": 28 },
{ "reason": "Müşteri ısrarcı (insan istiyor)", "percent": 22 },
{ "reason": "Diğer", "percent": 16 }
]
}
}