Files
igny8/igny8-ai-seo-wp-plugin/ai/model-rates-config.php
2025-11-11 21:16:37 +05:00

193 lines
5.8 KiB
PHP

<?php
/**
* ==========================
* 🔐 IGNY8 FILE RULE HEADER
* ==========================
* @file : model-rates-config.php
* @location : /ai/model-rates-config.php
* @type : Config Array
* @scope : Global
* @allowed : Model pricing, cost calculations, rate configurations
* @reusability : Globally Reusable
* @notes : Central AI model pricing configuration
*/
// Prevent direct access
if (!defined('ABSPATH')) {
exit;
}
/**
* Global model rates configuration
* Rates are per 1 million tokens for text models
* Per image for image generation models
* GPT-4.1, GPT-4o-mini, and GPT-4o models are supported
*/
$IGNY8_MODEL_RATES = [
'gpt-4.1' => ['in' => 2.00, 'out' => 8.00],
'gpt-4o-mini' => ['in' => 0.15, 'out' => 0.60],
'gpt-4o' => ['in' => 2.50, 'out' => 10.00]
];
/**
* Global image model rates configuration
* Rates are per image
*/
$IGNY8_IMAGE_MODEL_RATES = [
'dall-e-3' => 0.040,
'dall-e-2' => 0.020,
'gpt-image-1' => 0.042,
'gpt-image-1-mini' => 0.011
];
/**
* Get model rates for a specific model
*
* @param string $model Model name
* @return array Model rates array with 'in' and 'out' keys
*/
function igny8_get_model_rates($model) {
global $IGNY8_MODEL_RATES;
return $IGNY8_MODEL_RATES[$model] ?? $IGNY8_MODEL_RATES['gpt-4.1'];
}
/**
* Calculate API cost based on model and token usage
*
* @param string $model Model name
* @param int $input_tokens Number of input tokens
* @param int $output_tokens Number of output tokens
* @return array Cost breakdown with 'input_cost', 'output_cost', 'total_cost'
*/
function igny8_calculate_api_cost($model, $input_tokens, $output_tokens) {
$rates = igny8_get_model_rates($model);
// Debug logging
error_log("Igny8 Cost Calc Debug: Model=$model, Rates=" . json_encode($rates));
error_log("Igny8 Cost Calc Debug: Input tokens=$input_tokens, Output tokens=$output_tokens");
$input_cost = ($input_tokens / 1000000) * $rates['in'];
$output_cost = ($output_tokens / 1000000) * $rates['out'];
$total_cost = $input_cost + $output_cost;
error_log("Igny8 Cost Calc Debug: Input cost=$input_cost, Output cost=$output_cost, Total cost=$total_cost");
return [
'input_cost' => $input_cost,
'output_cost' => $output_cost,
'total_cost' => $total_cost,
'model' => $model,
'input_tokens' => $input_tokens,
'output_tokens' => $output_tokens
];
}
/**
* Format cost for display
*
* @param float $cost Cost amount
* @param int $decimals Number of decimal places
* @return string Formatted cost string
*/
function igny8_format_cost($cost, $decimals = 4) {
// Convert to cents for better readability
$cents = $cost * 100;
return number_format($cents, 2) . '¢';
}
/**
* Get image model rates for a specific model
*
* @param string $model Image model name
* @return float Image model rate per image
*/
function igny8_get_image_model_rates($model) {
global $IGNY8_IMAGE_MODEL_RATES;
return $IGNY8_IMAGE_MODEL_RATES[$model] ?? $IGNY8_IMAGE_MODEL_RATES['dall-e-3'];
}
/**
* Calculate image generation cost based on model
*
* @param string $model Image model name
* @param int $image_count Number of images generated
* @return array Cost breakdown with 'per_image_cost', 'total_cost'
*/
function igny8_calculate_image_cost($model, $image_count = 1) {
$per_image_rate = igny8_get_image_model_rates($model);
$total_cost = $per_image_rate * $image_count;
return [
'per_image_cost' => $per_image_rate,
'total_cost' => $total_cost,
'model' => $model,
'image_count' => $image_count
];
}
/**
* Get image model display name with pricing and typical uses
*
* @param string $model Image model name
* @return string Formatted model name with pricing and uses
*/
function igny8_get_image_model_display_name($model) {
$model_info = [
'dall-e-3' => [
'name' => 'DALL·E 3',
'uses' => 'High-quality image generation with advanced AI capabilities'
],
'dall-e-2' => [
'name' => 'DALL·E 2',
'uses' => 'Cost-effective image generation with good quality'
],
'gpt-image-1' => [
'name' => 'GPT Image 1 (Full)',
'uses' => 'Full-featured image generation with comprehensive capabilities'
],
'gpt-image-1-mini' => [
'name' => 'GPT Image 1 Mini',
'uses' => 'Lightweight, cost-effective image generation for bulk operations'
]
];
$rate = igny8_get_image_model_rates($model);
$info = $model_info[$model] ?? ['name' => strtoupper($model), 'uses' => 'Image generation'];
return sprintf(
'%s — $%.3f per image (%s)',
$info['name'], $rate, $info['uses']
);
}
/**
* Get model display name with pricing and typical uses
*
* @param string $model Model name
* @return string Formatted model name with pricing and uses
*/
function igny8_get_model_display_name($model) {
$model_info = [
'gpt-4.1' => [
'name' => 'GPT-4.1',
'uses' => 'Content creation, coding, analysis, high-quality content generation'
],
'gpt-4o-mini' => [
'name' => 'GPT-4o mini',
'uses' => 'Bulk tasks, lightweight AI, cost-effective for high-volume operations'
],
'gpt-4o' => [
'name' => 'GPT-4o',
'uses' => 'Advanced AI for general and multimodal tasks, faster than GPT-4.1'
]
];
$rates = igny8_get_model_rates($model);
$info = $model_info[$model] ?? ['name' => strtoupper($model), 'uses' => 'General purpose'];
return sprintf(
'%s — $%.2f / $%.2f per 1M tokens (%s)',
$info['name'], $rates['in'], $rates['out'], $info['uses']
);
}