Add Groq API as an AI provider
This commit is contained in:
@@ -49,22 +49,26 @@ $resolveImageUrl = static function ($path) {
|
||||
<?php echo \Joomla\CMS\Language\Text::sprintf('COM_TESTQUESTIONS_AI_EVALUATE_ALL', $pendingAiCount); ?>
|
||||
</button>
|
||||
<?php
|
||||
$usageTotals = ['input_tokens' => 0, 'output_tokens' => 0, 'total_tokens' => 0, 'cost_usd' => 0.0, 'providers' => []];
|
||||
$usageTotals = ['input_tokens' => 0, 'output_tokens' => 0, 'total_tokens' => 0, 'cost_usd' => 0.0, 'cost_calls' => 0, 'providers' => []];
|
||||
foreach ($this->item->answers as $savedAnswer) {
|
||||
$usage = $savedAnswer['ai_usage'] ?? null;
|
||||
if (!is_array($usage)) continue;
|
||||
$usageTotals['input_tokens'] += (int) ($usage['input_tokens'] ?? 0);
|
||||
$usageTotals['output_tokens'] += (int) ($usage['output_tokens'] ?? 0);
|
||||
$usageTotals['total_tokens'] += (int) ($usage['total_tokens'] ?? 0);
|
||||
if (is_numeric($usage['cost_usd'] ?? null)) $usageTotals['cost_usd'] += (float) $usage['cost_usd'];
|
||||
if (is_numeric($usage['cost_usd'] ?? null)) {
|
||||
$usageTotals['cost_usd'] += (float) $usage['cost_usd'];
|
||||
$usageTotals['cost_calls']++;
|
||||
}
|
||||
if (!empty($usage['provider'])) $usageTotals['providers'][(string) $usage['provider']] = true;
|
||||
}
|
||||
?>
|
||||
<?php if ($usageTotals['total_tokens'] > 0) : ?>
|
||||
<?php $usageProviderLabels = array_map(static function ($usageProvider) { return ['openai' => 'OpenAI', 'grok' => 'Grok', 'groq' => 'Groq'][$usageProvider] ?? $usageProvider; }, array_keys($usageTotals['providers'])); ?>
|
||||
<span class="badge text-bg-light border ms-2" title="Suma dotychczasowych ocen AI">
|
||||
✦ <?php echo implode(' + ', array_map('htmlspecialchars', array_keys($usageTotals['providers']))); ?>:
|
||||
✦ <?php echo implode(' + ', array_map('htmlspecialchars', $usageProviderLabels)); ?>:
|
||||
<?php echo number_format($usageTotals['total_tokens'], 0, ',', ' '); ?> tokenów,
|
||||
<?php echo number_format($usageTotals['cost_usd'], 8, ',', ' '); ?> USD
|
||||
<?php echo $usageTotals['cost_calls'] > 0 ? number_format($usageTotals['cost_usd'], 8, ',', ' ') . ' USD' : 'koszt niedostępny'; ?>
|
||||
</span>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
@@ -92,8 +96,8 @@ $resolveImageUrl = static function ($path) {
|
||||
<?php if (!empty($answer['ai_usage']) && is_array($answer['ai_usage'])) : ?>
|
||||
<?php $usage = $answer['ai_usage']; ?>
|
||||
<?php $usageProvider = (string) ($usage['provider'] ?? ''); ?>
|
||||
<span class="badge text-bg-light border ms-2" title="<?php echo $usageProvider === 'grok' ? 'Koszt zwrócony przez dostawcę' : 'Koszt obliczony z faktycznie wykorzystanych tokenów i stawek modelu'; ?>">
|
||||
<?php echo $usageProvider === 'grok' ? '✦ Grok' : '◉ OpenAI'; ?> ·
|
||||
<span class="badge text-bg-light border ms-2" title="<?php echo $usageProvider === 'grok' ? 'Koszt zwrócony przez dostawcę' : ($usageProvider === 'groq' ? 'Groq zwrócił wykorzystane tokeny; koszt nie jest zwracany przez to API' : 'Koszt obliczony z faktycznie wykorzystanych tokenów i stawek modelu'); ?>">
|
||||
<?php echo $usageProvider === 'grok' ? '✦ Grok' : ($usageProvider === 'groq' ? '⚡ Groq' : '◉ OpenAI'); ?> ·
|
||||
<?php echo number_format((int) ($usage['input_tokens'] ?? 0), 0, ',', ' '); ?> in /
|
||||
<?php echo number_format((int) ($usage['output_tokens'] ?? 0), 0, ',', ' '); ?> out ·
|
||||
<?php echo is_numeric($usage['cost_usd'] ?? null) ? number_format((float) $usage['cost_usd'], 8, ',', ' ') . ' USD' : 'koszt niedostępny'; ?>
|
||||
|
||||
Reference in New Issue
Block a user