{i18next.t('提示价格:${{price}} = ${{total}} / 1M tokens', { +
{i18next.t('提示价格:${{price}} / 1M tokens', { price: inputRatioPrice, - total: inputRatioPrice })}
{i18next.t('补全价格:${{price}} * {{completionRatio}} = ${{total}} / 1M tokens (补全倍率: {{completionRatio}})', {
price: inputRatioPrice,
@@ -445,9 +444,8 @@ export function renderAudioModelPrice(
return (
<>
{i18next.t('提示价格:${{price}} = ${{total}} / 1M tokens', {
+ {i18next.t('提示价格:${{price}} / 1M tokens', {
price: inputRatioPrice,
- total: inputRatioPrice
})} {i18next.t('补全价格:${{price}} * {{completionRatio}} = ${{total}} / 1M tokens (补全倍率: {{completionRatio}})', {
price: inputRatioPrice,
@@ -654,3 +652,194 @@ export function stringToColor(str) {
let i = sum % colors.length;
return colors[i];
}
+
+export function renderClaudeModelPrice(
+ inputTokens,
+ completionTokens,
+ modelRatio,
+ modelPrice = -1,
+ completionRatio,
+ groupRatio,
+ cacheTokens = 0,
+ cacheRatio = 1.0,
+ cacheCreationTokens = 0,
+ cacheCreationRatio = 1.0,
+) {
+ const ratioLabel = false ? i18next.t('专属倍率') : i18next.t('分组倍率');
+
+ if (modelPrice !== -1) {
+ return i18next.t('模型价格:${{price}} * {{ratioType}}:{{ratio}} = ${{total}}', {
+ price: modelPrice,
+ ratioType: ratioLabel,
+ ratio: groupRatio,
+ total: modelPrice * groupRatio
+ });
+ } else {
+ if (completionRatio === undefined) {
+ completionRatio = 0;
+ }
+
+ const completionRatioValue = completionRatio || 0;
+ const inputRatioPrice = modelRatio * 2.0;
+ const completionRatioPrice = modelRatio * 2.0 * completionRatioValue;
+ let cacheRatioPrice = (modelRatio * 2.0 * cacheRatio).toFixed(2);
+ let cacheCreationRatioPrice = modelRatio * 2.0 * cacheCreationRatio;
+
+ // Calculate effective input tokens (non-cached + cached with ratio applied + cache creation with ratio applied)
+ const nonCachedTokens = inputTokens;
+ const effectiveInputTokens = nonCachedTokens +
+ (cacheTokens * cacheRatio) +
+ (cacheCreationTokens * cacheCreationRatio);
+
+ let price =
+ (effectiveInputTokens / 1000000) * inputRatioPrice * groupRatio +
+ (completionTokens / 1000000) * completionRatioPrice * groupRatio;
+
+ return (
+ <>
+ {i18next.t('提示价格:${{price}} / 1M tokens', {
+ price: inputRatioPrice,
+ })} {i18next.t('补全价格:${{price}} * {{ratio}} = ${{total}} / 1M tokens', {
+ price: inputRatioPrice,
+ ratio: completionRatio,
+ total: completionRatioPrice
+ })} {i18next.t('缓存价格:${{price}} * {{ratio}} = ${{total}} / 1M tokens (缓存倍率: {{cacheRatio}})', {
+ price: inputRatioPrice,
+ ratio: cacheRatio,
+ total: cacheRatioPrice,
+ cacheRatio: cacheRatio
+ })} {i18next.t('缓存创建价格:${{price}} * {{ratio}} = ${{total}} / 1M tokens (缓存创建倍率: {{cacheCreationRatio}})', {
+ price: inputRatioPrice,
+ ratio: cacheCreationRatio,
+ total: cacheCreationRatioPrice,
+ cacheCreationRatio: cacheCreationRatio
+ })}
+ {(cacheTokens > 0 || cacheCreationTokens > 0) ?
+ i18next.t('提示 {{nonCacheInput}} tokens / 1M tokens * ${{price}} + 缓存 {{cacheInput}} tokens / 1M tokens * ${{cachePrice}} + 缓存创建 {{cacheCreationInput}} tokens / 1M tokens * ${{cacheCreationPrice}} + 补全 {{completion}} tokens / 1M tokens * ${{compPrice}} * 分组 {{ratio}} = ${{total}}', {
+ nonCacheInput: nonCachedTokens,
+ cacheInput: cacheTokens,
+ cacheRatio: cacheRatio,
+ cacheCreationInput: cacheCreationTokens,
+ cacheCreationRatio: cacheCreationRatio,
+ cachePrice: cacheRatioPrice,
+ cacheCreationPrice: cacheCreationRatioPrice,
+ price: inputRatioPrice,
+ completion: completionTokens,
+ compPrice: completionRatioPrice,
+ ratio: groupRatio,
+ total: price.toFixed(6)
+ }) :
+ i18next.t('提示 {{input}} tokens / 1M tokens * ${{price}} + 补全 {{completion}} tokens / 1M tokens * ${{compPrice}} * 分组 {{ratio}} = ${{total}}', {
+ input: inputTokens,
+ price: inputRatioPrice,
+ completion: completionTokens,
+ compPrice: completionRatioPrice,
+ ratio: groupRatio,
+ total: price.toFixed(6)
+ })
+ }
+ {i18next.t('仅供参考,以实际扣费为准')}