Dev nieuw

This commit is contained in:
2026-09-12 16:49:51 +02:00
parent 5e35f5152d
commit af80ffdb14
4 changed files with 170 additions and 15 deletions
+44 -12
View File
@@ -337,12 +337,23 @@ function fociz_ai_chat_gemini(array $messages, array $options, array $aiSettings
}
}
$promptTokens = (int)($response['json']['usageMetadata']['promptTokenCount'] ?? 0);
$completionTokens = (int)($response['json']['usageMetadata']['candidatesTokenCount'] ?? 0);
if ($promptTokens === 0 && $completionTokens === 0) {
// Schatting obv lengte indien niet geretourneerd
$promptTokens = max(1, (int)(strlen(json_encode($payload)) / 4));
$completionTokens = max(1, (int)(strlen($cleanContent) / 4));
}
return [
'success' => true,
'content' => $cleanContent,
'json' => $parsedJson,
'model' => $successfulModel,
'provider' => 'gemini',
'success' => true,
'content' => $cleanContent,
'json' => $parsedJson,
'model' => $successfulModel,
'provider' => 'gemini',
'prompt_tokens' => $promptTokens,
'completion_tokens' => $completionTokens,
'total_tokens' => ($promptTokens + $completionTokens),
];
}
@@ -414,12 +425,22 @@ function fociz_ai_chat_openai(array $messages, array $options, array $aiSettings
$parsedJson = json_decode($rawContent, true);
}
$promptTokens = (int)($response['json']['usage']['prompt_tokens'] ?? 0);
$completionTokens = (int)($response['json']['usage']['completion_tokens'] ?? 0);
if ($promptTokens === 0 && $completionTokens === 0) {
$promptTokens = max(1, (int)(strlen(json_encode($payload)) / 4));
$completionTokens = max(1, (int)(strlen($rawContent) / 4));
}
return [
'success' => true,
'content' => $rawContent,
'json' => $parsedJson,
'model' => $response['json']['model'] ?? $model,
'provider' => 'openai',
'success' => true,
'content' => $rawContent,
'json' => $parsedJson,
'model' => $response['json']['model'] ?? $model,
'provider' => 'openai',
'prompt_tokens' => $promptTokens,
'completion_tokens' => $completionTokens,
'total_tokens' => ($promptTokens + $completionTokens),
];
}
@@ -452,10 +473,21 @@ function fociz_ai_chat(array $messages, array $options = []): array {
// Routering: als provider gemini is of model gemini bevat, stuur naar Google Gemini
if ($provider === 'gemini' || strpos($model, 'gemini') !== false) {
return fociz_ai_chat_gemini($messages, $options, $aiSettings);
$res = fociz_ai_chat_gemini($messages, $options, $aiSettings);
} else {
$res = fociz_ai_chat_openai($messages, $options, $aiSettings);
}
return fociz_ai_chat_openai($messages, $options, $aiSettings);
// Verbruiksstatistieken registreren bij geslaagde aanroep
if (!empty($res['success'])) {
$usedProvider = $res['provider'] ?? $provider;
$usedModel = $res['model'] ?? $model;
$pTokens = (int)($res['prompt_tokens'] ?? 0);
$cTokens = (int)($res['completion_tokens'] ?? 0);
record_ai_usage($usedProvider, $usedModel, $pTokens, $cTokens, $userId);
}
return $res;
}
/**