Commit e4144d60 by CaIon

feat: update API proxy target and adjust component sizes in usage logs

parent 63f4595e
...@@ -25,21 +25,14 @@ import { ...@@ -25,21 +25,14 @@ import {
Tooltip, Tooltip,
Popover, Popover,
Typography, Typography,
Button
} from '@douyinfe/semi-ui'; } from '@douyinfe/semi-ui';
import { import {
timestamp2string,
renderGroup, renderGroup,
renderQuota, renderQuota,
stringToColor, stringToColor,
getLogOther, getLogOther,
renderModelTag, renderModelTag,
renderClaudeLogContent,
renderLogContent,
renderModelPriceSimple, renderModelPriceSimple,
renderAudioModelPrice,
renderClaudeModelPrice,
renderModelPrice,
} from '../../../helpers'; } from '../../../helpers';
import { IconHelpCircle } from '@douyinfe/semi-icons'; import { IconHelpCircle } from '@douyinfe/semi-icons';
import { Route, Sparkles } from 'lucide-react'; import { Route, Sparkles } from 'lucide-react';
...@@ -330,6 +323,142 @@ function getPromptCacheSummary(other) { ...@@ -330,6 +323,142 @@ function getPromptCacheSummary(other) {
}; };
} }
function normalizeDetailText(detail) {
return String(detail || '')
.replace(/\n\r/g, '\n')
.replace(/\r\n/g, '\n');
}
function getUsageLogGroupSummary(groupRatio, userGroupRatio, t) {
const parsedUserGroupRatio = Number(userGroupRatio);
const useUserGroupRatio =
Number.isFinite(parsedUserGroupRatio) && parsedUserGroupRatio !== -1;
const ratio = useUserGroupRatio ? userGroupRatio : groupRatio;
if (ratio === undefined || ratio === null || ratio === '') {
return '';
}
return `${useUserGroupRatio ? t('专属倍率') : t('分组')} ${formatRatio(ratio)}x`;
}
function renderCompactDetailSummary(summarySegments) {
const segments = Array.isArray(summarySegments)
? summarySegments.filter((segment) => segment?.text)
: [];
if (!segments.length) {
return null;
}
return (
<div
style={{
maxWidth: 180,
lineHeight: 1.35,
}}
>
{segments.map((segment, index) => (
<Typography.Text
key={`${segment.text}-${index}`}
type={segment.tone === 'secondary' ? 'tertiary' : undefined}
size={segment.tone === 'secondary' ? 'small' : undefined}
style={{
display: 'block',
maxWidth: '100%',
fontSize: 12,
marginTop: index === 0 ? 0 : 2,
whiteSpace: 'nowrap',
overflow: 'hidden',
textOverflow: 'ellipsis',
}}
>
{segment.text}
</Typography.Text>
))}
</div>
);
}
function getUsageLogDetailSummary(record, text, billingDisplayMode, t) {
const other = getLogOther(record.other);
if (record.type === 6) {
return {
segments: [{ text: t('异步任务退款'), tone: 'primary' }],
};
}
if (other == null || record.type !== 2) {
return null;
}
if (
other?.violation_fee === true ||
Boolean(other?.violation_fee_code) ||
Boolean(other?.violation_fee_marker)
) {
const feeQuota = other?.fee_quota ?? record?.quota;
const groupText = getUsageLogGroupSummary(
other?.group_ratio,
other?.user_group_ratio,
t,
);
return {
segments: [
groupText ? { text: groupText, tone: 'primary' } : null,
{ text: t('违规扣费'), tone: 'primary' },
{
text: `${t('扣费')}${renderQuota(feeQuota, 6)}`,
tone: 'secondary',
},
text ? { text: `${t('详情')}${text}`, tone: 'secondary' } : null,
].filter(Boolean),
};
}
return {
segments: other?.claude
? renderModelPriceSimple(
other.model_ratio,
other.model_price,
other.group_ratio,
other?.user_group_ratio,
other.cache_tokens || 0,
other.cache_ratio || 1.0,
other.cache_creation_tokens || 0,
other.cache_creation_ratio || 1.0,
other.cache_creation_tokens_5m || 0,
other.cache_creation_ratio_5m || other.cache_creation_ratio || 1.0,
other.cache_creation_tokens_1h || 0,
other.cache_creation_ratio_1h || other.cache_creation_ratio || 1.0,
false,
1.0,
other?.is_system_prompt_overwritten,
'claude',
billingDisplayMode,
'segments',
)
: renderModelPriceSimple(
other.model_ratio,
other.model_price,
other.group_ratio,
other?.user_group_ratio,
other.cache_tokens || 0,
other.cache_ratio || 1.0,
0,
1.0,
0,
1.0,
0,
1.0,
false,
1.0,
other?.is_system_prompt_overwritten,
'openai',
billingDisplayMode,
'segments',
),
};
}
export const getLogsColumns = ({ export const getLogsColumns = ({
t, t,
COLUMN_KEYS, COLUMN_KEYS,
...@@ -375,7 +504,10 @@ export const getLogsColumns = ({ ...@@ -375,7 +504,10 @@ export const getLogsColumns = ({
} }
return isAdminUser && return isAdminUser &&
(record.type === 0 || record.type === 2 || record.type === 5 || record.type === 6) ? ( (record.type === 0 ||
record.type === 2 ||
record.type === 5 ||
record.type === 6) ? (
<Space> <Space>
<span style={{ position: 'relative', display: 'inline-block' }}> <span style={{ position: 'relative', display: 'inline-block' }}>
<Tooltip content={record.channel_name || t('未知渠道')}> <Tooltip content={record.channel_name || t('未知渠道')}>
...@@ -466,7 +598,10 @@ export const getLogsColumns = ({ ...@@ -466,7 +598,10 @@ export const getLogsColumns = ({
title: t('令牌'), title: t('令牌'),
dataIndex: 'token_name', dataIndex: 'token_name',
render: (text, record, index) => { render: (text, record, index) => {
return record.type === 0 || record.type === 2 || record.type === 5 || record.type === 6 ? ( return record.type === 0 ||
record.type === 2 ||
record.type === 5 ||
record.type === 6 ? (
<div> <div>
<Tag <Tag
color='grey' color='grey'
...@@ -489,7 +624,12 @@ export const getLogsColumns = ({ ...@@ -489,7 +624,12 @@ export const getLogsColumns = ({
title: t('分组'), title: t('分组'),
dataIndex: 'group', dataIndex: 'group',
render: (text, record, index) => { render: (text, record, index) => {
if (record.type === 0 || record.type === 2 || record.type === 5 || record.type === 6) { if (
record.type === 0 ||
record.type === 2 ||
record.type === 5 ||
record.type === 6
) {
if (record.group) { if (record.group) {
return <>{renderGroup(record.group)}</>; return <>{renderGroup(record.group)}</>;
} else { } else {
...@@ -529,7 +669,10 @@ export const getLogsColumns = ({ ...@@ -529,7 +669,10 @@ export const getLogsColumns = ({
title: t('模型'), title: t('模型'),
dataIndex: 'model_name', dataIndex: 'model_name',
render: (text, record, index) => { render: (text, record, index) => {
return record.type === 0 || record.type === 2 || record.type === 5 || record.type === 6 ? ( return record.type === 0 ||
record.type === 2 ||
record.type === 5 ||
record.type === 6 ? (
<>{renderModelName(record, copyText, t)}</> <>{renderModelName(record, copyText, t)}</>
) : ( ) : (
<></> <></>
...@@ -596,7 +739,10 @@ export const getLogsColumns = ({ ...@@ -596,7 +739,10 @@ export const getLogsColumns = ({
cacheText = `${t('缓存写')} ${formatTokenCount(cacheSummary.cacheWriteTokens)}`; cacheText = `${t('缓存写')} ${formatTokenCount(cacheSummary.cacheWriteTokens)}`;
} }
return record.type === 0 || record.type === 2 || record.type === 5 || record.type === 6 ? ( return record.type === 0 ||
record.type === 2 ||
record.type === 5 ||
record.type === 6 ? (
<div <div
style={{ style={{
display: 'inline-flex', display: 'inline-flex',
...@@ -630,7 +776,10 @@ export const getLogsColumns = ({ ...@@ -630,7 +776,10 @@ export const getLogsColumns = ({
dataIndex: 'completion_tokens', dataIndex: 'completion_tokens',
render: (text, record, index) => { render: (text, record, index) => {
return parseInt(text) > 0 && return parseInt(text) > 0 &&
(record.type === 0 || record.type === 2 || record.type === 5 || record.type === 6) ? ( (record.type === 0 ||
record.type === 2 ||
record.type === 5 ||
record.type === 6) ? (
<>{<span> {text} </span>}</> <>{<span> {text} </span>}</>
) : ( ) : (
<></> <></>
...@@ -642,7 +791,14 @@ export const getLogsColumns = ({ ...@@ -642,7 +791,14 @@ export const getLogsColumns = ({
title: t('花费'), title: t('花费'),
dataIndex: 'quota', dataIndex: 'quota',
render: (text, record, index) => { render: (text, record, index) => {
if (!(record.type === 0 || record.type === 2 || record.type === 5 || record.type === 6)) { if (
!(
record.type === 0 ||
record.type === 2 ||
record.type === 5 ||
record.type === 6
)
) {
return <></>; return <></>;
} }
const other = getLogOther(record.other); const other = getLogOther(record.other);
...@@ -727,118 +883,29 @@ export const getLogsColumns = ({ ...@@ -727,118 +883,29 @@ export const getLogsColumns = ({
title: t('详情'), title: t('详情'),
dataIndex: 'content', dataIndex: 'content',
fixed: 'right', fixed: 'right',
width: 200,
render: (text, record, index) => { render: (text, record, index) => {
let other = getLogOther(record.other); const detailSummary = getUsageLogDetailSummary(
if (record.type === 6) { record,
return ( text,
<Typography.Paragraph billingDisplayMode,
ellipsis={{ rows: 2 }} t,
style={{ maxWidth: 240 }}
>
{t('异步任务退款')}
</Typography.Paragraph>
);
}
if (other == null || record.type !== 2) {
return (
<Typography.Paragraph
ellipsis={{
rows: 2,
showTooltip: {
type: 'popover',
opts: { style: { width: 240 } },
},
}}
style={{ maxWidth: 240 }}
>
{text}
</Typography.Paragraph>
); );
}
if ( if (!detailSummary) {
other?.violation_fee === true ||
Boolean(other?.violation_fee_code) ||
Boolean(other?.violation_fee_marker)
) {
const feeQuota = other?.fee_quota ?? record?.quota;
const summary = [
t('违规扣费'),
`${t('扣费')}${renderQuota(feeQuota, 6)}`,
`${t('分组倍率')}${formatRatio(other?.group_ratio)}`,
text ? `${t('详情')}${text}` : null,
]
.filter(Boolean)
.join('\n');
return ( return (
<Typography.Paragraph <Typography.Paragraph
ellipsis={{ ellipsis={{
rows: 2, rows: 2,
showTooltip: {
type: 'popover',
opts: { style: { width: 240 } },
},
}} }}
style={{ maxWidth: 240, whiteSpace: 'pre-line' }} style={{ maxWidth: 200, marginBottom: 0 }}
> >
{summary} {text}
</Typography.Paragraph> </Typography.Paragraph>
); );
} }
let content = other?.claude return renderCompactDetailSummary(detailSummary.segments);
? renderModelPriceSimple(
other.model_ratio,
other.model_price,
other.group_ratio,
other?.user_group_ratio,
other.cache_tokens || 0,
other.cache_ratio || 1.0,
other.cache_creation_tokens || 0,
other.cache_creation_ratio || 1.0,
other.cache_creation_tokens_5m || 0,
other.cache_creation_ratio_5m ||
other.cache_creation_ratio ||
1.0,
other.cache_creation_tokens_1h || 0,
other.cache_creation_ratio_1h ||
other.cache_creation_ratio ||
1.0,
false,
1.0,
other?.is_system_prompt_overwritten,
'claude',
billingDisplayMode,
)
: renderModelPriceSimple(
other.model_ratio,
other.model_price,
other.group_ratio,
other?.user_group_ratio,
other.cache_tokens || 0,
other.cache_ratio || 1.0,
0,
1.0,
0,
1.0,
0,
1.0,
false,
1.0,
other?.is_system_prompt_overwritten,
'openai',
billingDisplayMode,
);
return (
<Typography.Paragraph
ellipsis={{
rows: 3,
}}
style={{ maxWidth: 240, whiteSpace: 'pre-line' }}
>
{content}
</Typography.Paragraph>
);
}, },
}, },
]; ];
......
...@@ -102,7 +102,7 @@ const LogsTable = (logsData) => { ...@@ -102,7 +102,7 @@ const LogsTable = (logsData) => {
loading={loading} loading={loading}
scroll={compactMode ? undefined : { x: 'max-content' }} scroll={compactMode ? undefined : { x: 'max-content' }}
className='rounded-xl overflow-hidden' className='rounded-xl overflow-hidden'
size='middle' size='small'
empty={ empty={
<Empty <Empty
image={<IllustrationNoResult style={{ width: 150, height: 150 }} />} image={<IllustrationNoResult style={{ width: 150, height: 150 }} />}
......
...@@ -594,7 +594,9 @@ export function getOAuthProviderIcon(iconName, size = 20) { ...@@ -594,7 +594,9 @@ export function getOAuthProviderIcon(iconName, size = 20) {
return <IconComp size={iconSize} />; return <IconComp size={iconSize} />;
} }
return <Avatar size='extra-extra-small'>{raw.charAt(0).toUpperCase()}</Avatar>; return (
<Avatar size='extra-extra-small'>{raw.charAt(0).toUpperCase()}</Avatar>
);
} }
// 颜色列表 // 颜色列表
...@@ -1183,7 +1185,7 @@ function getEffectiveRatio(groupRatio, user_group_ratio) { ...@@ -1183,7 +1185,7 @@ function getEffectiveRatio(groupRatio, user_group_ratio) {
const useUserGroupRatio = isValidGroupRatio(user_group_ratio); const useUserGroupRatio = isValidGroupRatio(user_group_ratio);
const ratioLabel = useUserGroupRatio const ratioLabel = useUserGroupRatio
? i18next.t('专属倍率') ? i18next.t('专属倍率')
: i18next.t('分组'); : i18next.t('分组倍率');
const effectiveRatio = useUserGroupRatio ? user_group_ratio : groupRatio; const effectiveRatio = useUserGroupRatio ? user_group_ratio : groupRatio;
return { return {
...@@ -1234,7 +1236,7 @@ function joinBillingSummary(parts) { ...@@ -1234,7 +1236,7 @@ function joinBillingSummary(parts) {
function getGroupRatioText(groupRatio, user_group_ratio) { function getGroupRatioText(groupRatio, user_group_ratio) {
const { ratio, label } = getEffectiveRatio(groupRatio, user_group_ratio); const { ratio, label } = getEffectiveRatio(groupRatio, user_group_ratio);
return i18next.t('{{ratioType}} {{ratio}}', { return i18next.t('{{ratioType}} {{ratio}}x', {
ratioType: label, ratioType: label,
ratio, ratio,
}); });
...@@ -1252,6 +1254,41 @@ function renderDisplayAmountFromUsd(usdAmount, digits = 6) { ...@@ -1252,6 +1254,41 @@ function renderDisplayAmountFromUsd(usdAmount, digits = 6) {
return renderQuotaWithAmount(Number(Number(usdAmount || 0).toFixed(digits))); return renderQuotaWithAmount(Number(Number(usdAmount || 0).toFixed(digits)));
} }
function formatBillingDisplayPrice(usdAmount, rate, digits = 6) {
return (usdAmount * rate).toFixed(digits);
}
function buildBillingText(key, vars) {
return i18next.t(key, vars);
}
function buildBillingPriceText(
key,
{ symbol, usdAmount, rate, amountKey = 'price', digits = 6, ...vars },
) {
return buildBillingText(key, {
symbol,
[amountKey]: formatBillingDisplayPrice(usdAmount, rate, digits),
...vars,
});
}
function renderBillingArticle(lines, { showReferenceNote = true } = {}) {
const articleLines = lines.filter(Boolean);
if (showReferenceNote) {
articleLines.push(buildBillingText('仅供参考,以实际扣费为准'));
}
return (
<article>
{articleLines.map((line, index) => (
<p key={index}>{line}</p>
))}
</article>
);
}
// Shared core for simple price rendering (used by OpenAI-like and Claude-like variants) // Shared core for simple price rendering (used by OpenAI-like and Claude-like variants)
function renderPriceSimpleCore({ function renderPriceSimpleCore({
modelRatio, modelRatio,
...@@ -1270,6 +1307,7 @@ function renderPriceSimpleCore({ ...@@ -1270,6 +1307,7 @@ function renderPriceSimpleCore({
imageRatio = 1.0, imageRatio = 1.0,
isSystemPromptOverride = false, isSystemPromptOverride = false,
displayMode = 'price', displayMode = 'price',
outputMode = 'text',
}) { }) {
const { ratio: effectiveGroupRatio, label: ratioLabel } = getEffectiveRatio( const { ratio: effectiveGroupRatio, label: ratioLabel } = getEffectiveRatio(
groupRatio, groupRatio,
...@@ -1278,10 +1316,168 @@ function renderPriceSimpleCore({ ...@@ -1278,10 +1316,168 @@ function renderPriceSimpleCore({
const finalGroupRatio = effectiveGroupRatio; const finalGroupRatio = effectiveGroupRatio;
const { symbol, rate } = getCurrencyConfig(); const { symbol, rate } = getCurrencyConfig();
const hasSplitCacheCreation =
cacheCreationTokens5m > 0 || cacheCreationTokens1h > 0;
const shouldShowLegacyCacheCreation =
!hasSplitCacheCreation && cacheCreationTokens !== 0;
const shouldShowCache = cacheTokens !== 0;
const shouldShowCacheCreation5m =
hasSplitCacheCreation && cacheCreationTokens5m > 0;
const shouldShowCacheCreation1h =
hasSplitCacheCreation && cacheCreationTokens1h > 0;
if (outputMode === 'segments') {
const segments = [
{
tone: 'primary',
text: getGroupRatioText(groupRatio, user_group_ratio),
},
];
if (modelPrice !== -1) {
segments.push({
tone: 'secondary',
text: isPriceDisplayMode(displayMode, modelPrice)
? i18next.t('模型价格 {{price}}', {
price: formatCompactDisplayPrice(modelPrice),
})
: i18next.t('按次'),
});
} else if (isPriceDisplayMode(displayMode, modelPrice)) {
segments.push({
tone: 'secondary',
text: i18next.t('输入 {{price}} / 1M tokens', {
price: formatCompactDisplayPrice(modelRatio * 2.0),
}),
});
if (shouldShowCache) {
segments.push({
tone: 'secondary',
text: i18next.t('缓存读 {{price}} / 1M tokens', {
price: formatCompactDisplayPrice(modelRatio * 2.0 * cacheRatio),
}),
});
}
if (hasSplitCacheCreation && shouldShowCacheCreation5m) {
segments.push({
tone: 'secondary',
text: i18next.t('5m缓存创建 {{price}} / 1M tokens', {
price: formatCompactDisplayPrice(
modelRatio * 2.0 * cacheCreationRatio5m,
),
}),
});
}
if (hasSplitCacheCreation && shouldShowCacheCreation1h) {
segments.push({
tone: 'secondary',
text: i18next.t('1h缓存创建 {{price}} / 1M tokens', {
price: formatCompactDisplayPrice(
modelRatio * 2.0 * cacheCreationRatio1h,
),
}),
});
}
if (!hasSplitCacheCreation && shouldShowLegacyCacheCreation) {
segments.push({
tone: 'secondary',
text: i18next.t('缓存创建 {{price}} / 1M tokens', {
price: formatCompactDisplayPrice(
modelRatio * 2.0 * cacheCreationRatio,
),
}),
});
}
if (image) {
segments.push({
tone: 'secondary',
text: i18next.t('图片输入 {{price}} / 1M tokens', {
price: formatCompactDisplayPrice(modelRatio * 2.0 * imageRatio),
}),
});
}
} else {
segments.push({
tone: 'secondary',
text: i18next.t('模型: {{ratio}}', {
ratio: modelRatio,
}),
});
if (shouldShowCache) {
segments.push({
tone: 'secondary',
text: i18next.t('缓存: {{cacheRatio}}', {
cacheRatio: cacheRatio,
}),
});
}
if (hasSplitCacheCreation) {
if (shouldShowCacheCreation5m && shouldShowCacheCreation1h) {
segments.push({
tone: 'secondary',
text: i18next.t(
'缓存创建: 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}',
{
cacheCreationRatio5m: cacheCreationRatio5m,
cacheCreationRatio1h: cacheCreationRatio1h,
},
),
});
} else if (shouldShowCacheCreation5m) {
segments.push({
tone: 'secondary',
text: i18next.t('缓存创建: 5m {{cacheCreationRatio5m}}', {
cacheCreationRatio5m: cacheCreationRatio5m,
}),
});
} else if (shouldShowCacheCreation1h) {
segments.push({
tone: 'secondary',
text: i18next.t('缓存创建: 1h {{cacheCreationRatio1h}}', {
cacheCreationRatio1h: cacheCreationRatio1h,
}),
});
}
} else if (shouldShowLegacyCacheCreation) {
segments.push({
tone: 'secondary',
text: i18next.t('缓存创建: {{cacheCreationRatio}}', {
cacheCreationRatio: cacheCreationRatio,
}),
});
}
if (image) {
segments.push({
tone: 'secondary',
text: i18next.t('图片输入: {{imageRatio}}', {
imageRatio: imageRatio,
}),
});
}
}
if (isSystemPromptOverride) {
segments.push({
tone: 'primary',
text: i18next.t('系统提示覆盖'),
});
}
return segments;
}
if (modelPrice !== -1) { if (modelPrice !== -1) {
if (isPriceDisplayMode(displayMode, modelPrice)) { if (isPriceDisplayMode(displayMode, modelPrice)) {
return joinBillingSummary([ return joinBillingSummary([
i18next.t('模型价格:{{symbol}}{{price}} / 次', { i18next.t('模型价格:{{symbol}}{{price}}', {
symbol: symbol, symbol: symbol,
price: (modelPrice * rate).toFixed(6), price: (modelPrice * rate).toFixed(6),
}), }),
...@@ -1297,23 +1493,11 @@ function renderPriceSimpleCore({ ...@@ -1297,23 +1493,11 @@ function renderPriceSimpleCore({
}); });
} }
const hasSplitCacheCreation =
cacheCreationTokens5m > 0 || cacheCreationTokens1h > 0;
const shouldShowLegacyCacheCreation =
!hasSplitCacheCreation && cacheCreationTokens !== 0;
const shouldShowCache = cacheTokens !== 0;
const shouldShowCacheCreation5m =
hasSplitCacheCreation && cacheCreationTokens5m > 0;
const shouldShowCacheCreation1h =
hasSplitCacheCreation && cacheCreationTokens1h > 0;
if (isPriceDisplayMode(displayMode, modelPrice)) { if (isPriceDisplayMode(displayMode, modelPrice)) {
const parts = []; const parts = [];
if (modelPrice !== -1) { if (modelPrice !== -1) {
parts.push( parts.push(
i18next.t('按次 {{price}} / 次', { i18next.t('模型价格 {{price}}', {
price: formatCompactDisplayPrice(modelPrice), price: formatCompactDisplayPrice(modelPrice),
}), }),
); );
...@@ -1329,7 +1513,7 @@ function renderPriceSimpleCore({ ...@@ -1329,7 +1513,7 @@ function renderPriceSimpleCore({
if (shouldShowCache) { if (shouldShowCache) {
parts.push( parts.push(
i18next.t('缓存读取 {{price}}', { i18next.t('缓存读 {{price}} / 1M tokens', {
price: formatCompactDisplayPrice(modelRatio * 2.0 * cacheRatio), price: formatCompactDisplayPrice(modelRatio * 2.0 * cacheRatio),
}), }),
); );
...@@ -1337,29 +1521,35 @@ function renderPriceSimpleCore({ ...@@ -1337,29 +1521,35 @@ function renderPriceSimpleCore({
if (hasSplitCacheCreation && shouldShowCacheCreation5m) { if (hasSplitCacheCreation && shouldShowCacheCreation5m) {
parts.push( parts.push(
i18next.t('5m缓存创建 {{price}}', { i18next.t('5m缓存创建 {{price}} / 1M tokens', {
price: formatCompactDisplayPrice(modelRatio * 2.0 * cacheCreationRatio5m), price: formatCompactDisplayPrice(
modelRatio * 2.0 * cacheCreationRatio5m,
),
}), }),
); );
} }
if (hasSplitCacheCreation && shouldShowCacheCreation1h) { if (hasSplitCacheCreation && shouldShowCacheCreation1h) {
parts.push( parts.push(
i18next.t('1h缓存创建 {{price}}', { i18next.t('1h缓存创建 {{price}} / 1M tokens', {
price: formatCompactDisplayPrice(modelRatio * 2.0 * cacheCreationRatio1h), price: formatCompactDisplayPrice(
modelRatio * 2.0 * cacheCreationRatio1h,
),
}), }),
); );
} }
if (!hasSplitCacheCreation && shouldShowLegacyCacheCreation) { if (!hasSplitCacheCreation && shouldShowLegacyCacheCreation) {
parts.push( parts.push(
i18next.t('缓存创建 {{price}}', { i18next.t('缓存创建 {{price}} / 1M tokens', {
price: formatCompactDisplayPrice(modelRatio * 2.0 * cacheCreationRatio), price: formatCompactDisplayPrice(
modelRatio * 2.0 * cacheCreationRatio,
),
}), }),
); );
} }
if (image) { if (image) {
parts.push( parts.push(
i18next.t('图片输入 {{price}}', { i18next.t('图片输入 {{price}} / 1M tokens', {
price: formatCompactDisplayPrice(modelRatio * 2.0 * imageRatio), price: formatCompactDisplayPrice(modelRatio * 2.0 * imageRatio),
}), }),
); );
...@@ -1460,31 +1650,25 @@ export function renderModelPrice( ...@@ -1460,31 +1650,25 @@ export function renderModelPrice(
if (!shouldUseRatioBillingProcess(modelPrice)) { if (!shouldUseRatioBillingProcess(modelPrice)) {
if (modelPrice !== -1) { if (modelPrice !== -1) {
return ( return renderBillingArticle([
<> buildBillingPriceText('按次:{{symbol}}{{price}}', {
<article>
<p>
{i18next.t('模型价格:{{symbol}}{{price}} / 次', {
symbol, symbol,
price: (modelPrice * rate).toFixed(6), usdAmount: modelPrice,
})} rate,
</p> }),
<p> buildBillingPriceText(
{i18next.t( '按次 {{symbol}}{{price}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}',
'模型价格 {{symbol}}{{price}} / 次 * {{ratioType}} {{ratio}} = {{symbol}}{{total}}',
{ {
symbol, symbol,
price: (modelPrice * rate).toFixed(6), usdAmount: modelPrice,
rate,
ratioType: ratioLabel, ratioType: ratioLabel,
ratio: groupRatio, ratio: groupRatio,
total: (modelPrice * groupRatio * rate).toFixed(6), amountKey: 'price',
total: formatBillingDisplayPrice(modelPrice * groupRatio, rate),
}, },
)} ),
</p> ]);
<p>{i18next.t('仅供参考,以实际扣费为准')}</p>
</article>
</>
);
} }
if (completionRatio === undefined) { if (completionRatio === undefined) {
...@@ -1511,116 +1695,58 @@ export function renderModelPrice( ...@@ -1511,116 +1695,58 @@ export function renderModelPrice(
(fileSearchCallCount / 1000) * fileSearchPrice * groupRatio + (fileSearchCallCount / 1000) * fileSearchPrice * groupRatio +
imageGenerationCallPrice * groupRatio; imageGenerationCallPrice * groupRatio;
return (
<>
<article>
<p>
{i18next.t('输入价格:{{symbol}}{{price}} / 1M tokens{{audioPrice}}', {
symbol,
price: (inputRatioPrice * rate).toFixed(6),
audioPrice: audioInputSeperatePrice
? `,${i18next.t('音频输入价格')} ${symbol}${(audioInputPrice * rate).toFixed(6)} / 1M tokens`
: '',
})}
</p>
<p>
{i18next.t('补全价格:{{symbol}}{{total}} / 1M tokens', {
symbol,
total: (completionRatioPrice * rate).toFixed(6),
})}
</p>
{cacheTokens > 0 && (
<p>
{i18next.t('缓存读取价格:{{symbol}}{{total}} / 1M tokens', {
symbol,
total: (inputRatioPrice * cacheRatio * rate).toFixed(6),
})}
</p>
)}
{image && imageOutputTokens > 0 && (
<p>
{i18next.t('图片输入价格:{{symbol}}{{total}} / 1M tokens', {
symbol,
total: (imageRatioPrice * rate).toFixed(6),
})}
</p>
)}
{webSearch && webSearchCallCount > 0 && (
<p>
{i18next.t('Web搜索价格:{{symbol}}{{price}} / 1K 次', {
symbol,
price: (webSearchPrice * rate).toFixed(6),
})}
</p>
)}
{fileSearch && fileSearchCallCount > 0 && (
<p>
{i18next.t('文件搜索价格:{{symbol}}{{price}} / 1K 次', {
symbol,
price: (fileSearchPrice * rate).toFixed(6),
})}
</p>
)}
{imageGenerationCall && imageGenerationCallPrice > 0 && (
<p>
{i18next.t('图片生成调用:{{symbol}}{{price}} / 1次', {
symbol,
price: (imageGenerationCallPrice * rate).toFixed(6),
})}
</p>
)}
<p>
{(() => {
let inputDesc = ''; let inputDesc = '';
if (image && imageOutputTokens > 0) { if (image && imageOutputTokens > 0) {
inputDesc = i18next.t( inputDesc = buildBillingPriceText(
'(输入 {{nonImageInput}} tokens + 图片输入 {{imageInput}} tokens / 1M tokens * {{symbol}}{{price}}', '(输入 {{nonImageInput}} tokens + 图片输入 {{imageInput}} tokens / 1M tokens * {{symbol}}{{price}}',
{ {
nonImageInput: inputTokens - imageOutputTokens, nonImageInput: inputTokens - imageOutputTokens,
imageInput: imageOutputTokens, imageInput: imageOutputTokens,
symbol: symbol, symbol,
price: (inputRatioPrice * rate).toFixed(6), usdAmount: inputRatioPrice,
rate,
}, },
); );
} else if (cacheTokens > 0) { } else if (cacheTokens > 0) {
inputDesc = i18next.t( inputDesc = buildBillingText(
'(输入 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + 缓存 {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}', '(输入 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + 缓存 {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}',
{ {
nonCacheInput: inputTokens - cacheTokens, nonCacheInput: inputTokens - cacheTokens,
cacheInput: cacheTokens, cacheInput: cacheTokens,
symbol: symbol, symbol,
price: (inputRatioPrice * rate).toFixed(6), price: formatBillingDisplayPrice(inputRatioPrice, rate),
cachePrice: (cacheRatioPrice * rate).toFixed(6), cachePrice: formatBillingDisplayPrice(cacheRatioPrice, rate),
}, },
); );
} else if (audioInputSeperatePrice && audioInputTokens > 0) { } else if (audioInputSeperatePrice && audioInputTokens > 0) {
inputDesc = i18next.t( inputDesc = buildBillingText(
'(输入 {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + 音频输入 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}', '(输入 {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + 音频输入 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}',
{ {
nonAudioInput: inputTokens - audioInputTokens, nonAudioInput: inputTokens - audioInputTokens,
audioInput: audioInputTokens, audioInput: audioInputTokens,
symbol: symbol, symbol,
price: (inputRatioPrice * rate).toFixed(6), price: formatBillingDisplayPrice(inputRatioPrice, rate),
audioPrice: (audioInputPrice * rate).toFixed(6), audioPrice: formatBillingDisplayPrice(audioInputPrice, rate),
}, },
); );
} else { } else {
inputDesc = i18next.t( inputDesc = buildBillingPriceText(
'(输入 {{input}} tokens / 1M tokens * {{symbol}}{{price}}', '(输入 {{input}} tokens / 1M tokens * {{symbol}}{{price}}',
{ {
input: inputTokens, input: inputTokens,
symbol: symbol, symbol,
price: (inputRatioPrice * rate).toFixed(6), usdAmount: inputRatioPrice,
rate,
}, },
); );
} }
const outputDesc = i18next.t( const outputDesc = buildBillingText(
'输出 {{completion}} tokens / 1M tokens * {{symbol}}{{compPrice}}) * {{ratioType}} {{ratio}}', '输出 {{completion}} tokens / 1M tokens * {{symbol}}{{compPrice}}) * {{ratioType}} {{ratio}}',
{ {
completion: completionTokens, completion: completionTokens,
symbol: symbol, symbol,
compPrice: (completionRatioPrice * rate).toFixed(6), compPrice: formatBillingDisplayPrice(completionRatioPrice, rate),
ratio: groupRatio, ratio: groupRatio,
ratioType: ratioLabel, ratioType: ratioLabel,
}, },
...@@ -1628,35 +1754,38 @@ export function renderModelPrice( ...@@ -1628,35 +1754,38 @@ export function renderModelPrice(
const extraServices = [ const extraServices = [
webSearch && webSearchCallCount > 0 webSearch && webSearchCallCount > 0
? i18next.t( ? buildBillingPriceText(
' + Web搜索 {{count}}次 / 1K 次 * {{symbol}}{{price}} * {{ratioType}} {{ratio}}', ' + Web搜索 {{count}}次 / 1K 次 * {{symbol}}{{price}} * {{ratioType}} {{ratio}}',
{ {
count: webSearchCallCount, count: webSearchCallCount,
symbol: symbol, symbol,
price: (webSearchPrice * rate).toFixed(6), usdAmount: webSearchPrice,
rate,
ratio: groupRatio, ratio: groupRatio,
ratioType: ratioLabel, ratioType: ratioLabel,
}, },
) )
: '', : '',
fileSearch && fileSearchCallCount > 0 fileSearch && fileSearchCallCount > 0
? i18next.t( ? buildBillingPriceText(
' + 文件搜索 {{count}}次 / 1K 次 * {{symbol}}{{price}} * {{ratioType}} {{ratio}}', ' + 文件搜索 {{count}}次 / 1K 次 * {{symbol}}{{price}} * {{ratioType}} {{ratio}}',
{ {
count: fileSearchCallCount, count: fileSearchCallCount,
symbol: symbol, symbol,
price: (fileSearchPrice * rate).toFixed(6), usdAmount: fileSearchPrice,
rate,
ratio: groupRatio, ratio: groupRatio,
ratioType: ratioLabel, ratioType: ratioLabel,
}, },
) )
: '', : '',
imageGenerationCall && imageGenerationCallPrice > 0 imageGenerationCall && imageGenerationCallPrice > 0
? i18next.t( ? buildBillingPriceText(
' + 图片生成调用 {{symbol}}{{price}} / 1次 * {{ratioType}} {{ratio}}', ' + 图片生成调用 {{symbol}}{{price}} / 1次 * {{ratioType}} {{ratio}}',
{ {
symbol: symbol, symbol,
price: (imageGenerationCallPrice * rate).toFixed(6), usdAmount: imageGenerationCallPrice,
rate,
ratio: groupRatio, ratio: groupRatio,
ratioType: ratioLabel, ratioType: ratioLabel,
}, },
...@@ -1664,29 +1793,87 @@ export function renderModelPrice( ...@@ -1664,29 +1793,87 @@ export function renderModelPrice(
: '', : '',
].join(''); ].join('');
return i18next.t( const billingLines = [
buildBillingPriceText(
'输入价格:{{symbol}}{{price}} / 1M tokens{{audioPrice}}',
{
symbol,
usdAmount: inputRatioPrice,
rate,
audioPrice: audioInputSeperatePrice
? `,${i18next.t('音频输入价格')} ${symbol}${formatBillingDisplayPrice(audioInputPrice, rate)} / 1M tokens`
: '',
},
),
buildBillingPriceText('输出价格:{{symbol}}{{total}} / 1M tokens', {
symbol,
usdAmount: completionRatioPrice,
rate,
amountKey: 'total',
}),
cacheTokens > 0
? buildBillingPriceText(
'缓存读取价格:{{symbol}}{{total}} / 1M tokens',
{
symbol,
usdAmount: inputRatioPrice * cacheRatio,
rate,
amountKey: 'total',
},
)
: null,
image && imageOutputTokens > 0
? buildBillingPriceText(
'图片输入价格:{{symbol}}{{total}} / 1M tokens',
{
symbol,
usdAmount: imageRatioPrice,
rate,
amountKey: 'total',
},
)
: null,
webSearch && webSearchCallCount > 0
? buildBillingPriceText('Web搜索价格:{{symbol}}{{price}} / 1K 次', {
symbol,
usdAmount: webSearchPrice,
rate,
})
: null,
fileSearch && fileSearchCallCount > 0
? buildBillingPriceText('文件搜索价格:{{symbol}}{{price}} / 1K 次', {
symbol,
usdAmount: fileSearchPrice,
rate,
})
: null,
imageGenerationCall && imageGenerationCallPrice > 0
? buildBillingPriceText('图片生成调用:{{symbol}}{{price}} / 1次', {
symbol,
usdAmount: imageGenerationCallPrice,
rate,
})
: null,
buildBillingText(
'{{inputDesc}} + {{outputDesc}}{{extraServices}} = {{symbol}}{{total}}', '{{inputDesc}} + {{outputDesc}}{{extraServices}} = {{symbol}}{{total}}',
{ {
inputDesc, inputDesc,
outputDesc, outputDesc,
extraServices, extraServices,
symbol, symbol,
total: (price * rate).toFixed(6), total: formatBillingDisplayPrice(price, rate),
}, },
); ),
})()} ];
</p>
<p>{i18next.t('仅供参考,以实际扣费为准')}</p> return renderBillingArticle(billingLines);
</article>
</>
);
} }
if (modelPrice !== -1) { if (modelPrice !== -1) {
const displayPrice = (modelPrice * rate).toFixed(6); const displayPrice = (modelPrice * rate).toFixed(6);
const displayTotal = (modelPrice * groupRatio * rate).toFixed(6); const displayTotal = (modelPrice * groupRatio * rate).toFixed(6);
return i18next.t( return i18next.t(
'模型价格:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}', '按次:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}',
{ {
symbol: symbol, symbol: symbol,
price: displayPrice, price: displayPrice,
...@@ -1712,8 +1899,12 @@ export function renderModelPrice( ...@@ -1712,8 +1899,12 @@ export function renderModelPrice(
? formatRatioValue(audioInputPrice / inputRatioPrice) ? formatRatioValue(audioInputPrice / inputRatioPrice)
: null; : null;
const textInputTokens = Math.max(inputTokens - cacheTokens - audioInputTokens, 0); const textInputTokens = Math.max(
const imageInputTokens = image && imageOutputTokens > 0 ? imageOutputTokens : 0; inputTokens - cacheTokens - audioInputTokens,
0,
);
const imageInputTokens =
image && imageOutputTokens > 0 ? imageOutputTokens : 0;
const cacheInputTokens = cacheTokens; const cacheInputTokens = cacheTokens;
const textInputAmount = const textInputAmount =
...@@ -1732,7 +1923,8 @@ export function renderModelPrice( ...@@ -1732,7 +1923,8 @@ export function renderModelPrice(
(audioInputTokens / 1000000) * audioInputPrice * groupRatio; (audioInputTokens / 1000000) * audioInputPrice * groupRatio;
const completionAmount = const completionAmount =
(completionTokens / 1000000) * completionRatioPrice * groupRatio; (completionTokens / 1000000) * completionRatioPrice * groupRatio;
const webSearchAmount = (webSearchCallCount / 1000) * webSearchPrice * groupRatio; const webSearchAmount =
(webSearchCallCount / 1000) * webSearchPrice * groupRatio;
const fileSearchAmount = const fileSearchAmount =
(fileSearchCallCount / 1000) * fileSearchPrice * groupRatio; (fileSearchCallCount / 1000) * fileSearchPrice * groupRatio;
const imageGenerationAmount = imageGenerationCallPrice * groupRatio; const imageGenerationAmount = imageGenerationCallPrice * groupRatio;
...@@ -1747,43 +1939,38 @@ export function renderModelPrice( ...@@ -1747,43 +1939,38 @@ export function renderModelPrice(
fileSearchAmount + fileSearchAmount +
imageGenerationAmount; imageGenerationAmount;
return ( return renderBillingArticle([
<> [
<article> buildBillingText('模型倍率 {{modelRatio}}', {
<p>
{[
i18next.t('模型倍率 {{modelRatio}}', {
modelRatio: modelRatioValue, modelRatio: modelRatioValue,
}), }),
i18next.t('补全倍率 {{completionRatio}}', { buildBillingText('补全倍率 {{completionRatio}}', {
completionRatio: completionRatioValue, completionRatio: completionRatioValue,
}), }),
cacheInputTokens > 0 cacheInputTokens > 0
? i18next.t('缓存倍率 {{cacheRatio}}', { ? buildBillingText('缓存倍率 {{cacheRatio}}', {
cacheRatio: cacheRatioValue, cacheRatio: cacheRatioValue,
}) })
: null, : null,
imageInputTokens > 0 imageInputTokens > 0
? i18next.t('图片倍率 {{imageRatio}}', { ? buildBillingText('图片倍率 {{imageRatio}}', {
imageRatio: imageRatioValue, imageRatio: imageRatioValue,
}) })
: null, : null,
audioRatioValue !== null audioRatioValue !== null
? i18next.t('音频倍率 {{audioRatio}}', { ? buildBillingText('音频倍率 {{audioRatio}}', {
audioRatio: audioRatioValue, audioRatio: audioRatioValue,
}) })
: null, : null,
i18next.t('{{ratioType}} {{ratio}}', { buildBillingText('{{ratioType}} {{ratio}}', {
ratioType: ratioLabel, ratioType: ratioLabel,
ratio: groupRatio, ratio: groupRatio,
}), }),
] ]
.filter(Boolean) .filter(Boolean)
.join(',')} .join(','),
</p> textInputTokens > 0
{textInputTokens > 0 && ( ? buildBillingText(
<p>
{i18next.t(
'普通输入:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * {{ratioType}} {{ratio}} = {{amount}}', '普通输入:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * {{ratioType}} {{ratio}} = {{amount}}',
{ {
tokens: textInputTokens, tokens: textInputTokens,
...@@ -1792,12 +1979,10 @@ export function renderModelPrice( ...@@ -1792,12 +1979,10 @@ export function renderModelPrice(
ratio: groupRatio, ratio: groupRatio,
amount: renderDisplayAmountFromUsd(textInputAmount), amount: renderDisplayAmountFromUsd(textInputAmount),
}, },
)} )
</p> : null,
)} cacheInputTokens > 0
{cacheInputTokens > 0 && ( ? buildBillingText(
<p>
{i18next.t(
'缓存输入:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}', '缓存输入:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}',
{ {
tokens: cacheInputTokens, tokens: cacheInputTokens,
...@@ -1807,12 +1992,10 @@ export function renderModelPrice( ...@@ -1807,12 +1992,10 @@ export function renderModelPrice(
ratio: groupRatio, ratio: groupRatio,
amount: renderDisplayAmountFromUsd(cacheInputAmount), amount: renderDisplayAmountFromUsd(cacheInputAmount),
}, },
)} )
</p> : null,
)} imageInputTokens > 0
{imageInputTokens > 0 && ( ? buildBillingText(
<p>
{i18next.t(
'图片输入:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 图片倍率 {{imageRatio}} * {{ratioType}} {{ratio}} = {{amount}}', '图片输入:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 图片倍率 {{imageRatio}} * {{ratioType}} {{ratio}} = {{amount}}',
{ {
tokens: imageInputTokens, tokens: imageInputTokens,
...@@ -1822,12 +2005,10 @@ export function renderModelPrice( ...@@ -1822,12 +2005,10 @@ export function renderModelPrice(
ratio: groupRatio, ratio: groupRatio,
amount: renderDisplayAmountFromUsd(imageInputAmount), amount: renderDisplayAmountFromUsd(imageInputAmount),
}, },
)} )
</p> : null,
)} audioInputTokens > 0 && audioRatioValue !== null
{audioInputTokens > 0 && audioRatioValue !== null && ( ? buildBillingText(
<p>
{i18next.t(
'音频输入:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 音频倍率 {{audioRatio}} * {{ratioType}} {{ratio}} = {{amount}}', '音频输入:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 音频倍率 {{audioRatio}} * {{ratioType}} {{ratio}} = {{amount}}',
{ {
tokens: audioInputTokens, tokens: audioInputTokens,
...@@ -1837,11 +2018,9 @@ export function renderModelPrice( ...@@ -1837,11 +2018,9 @@ export function renderModelPrice(
ratio: groupRatio, ratio: groupRatio,
amount: renderDisplayAmountFromUsd(audioInputAmount), amount: renderDisplayAmountFromUsd(audioInputAmount),
}, },
)} )
</p> : null,
)} buildBillingText(
<p>
{i18next.t(
'输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 补全倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}', '输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 补全倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}',
{ {
tokens: completionTokens, tokens: completionTokens,
...@@ -1851,11 +2030,9 @@ export function renderModelPrice( ...@@ -1851,11 +2030,9 @@ export function renderModelPrice(
ratio: groupRatio, ratio: groupRatio,
amount: renderDisplayAmountFromUsd(completionAmount), amount: renderDisplayAmountFromUsd(completionAmount),
}, },
)} ),
</p> webSearch && webSearchCallCount > 0
{webSearch && webSearchCallCount > 0 && ( ? buildBillingText(
<p>
{i18next.t(
'Web 搜索:{{count}} / 1K * 单价 {{price}} * {{ratioType}} {{ratio}} = {{amount}}', 'Web 搜索:{{count}} / 1K * 单价 {{price}} * {{ratioType}} {{ratio}} = {{amount}}',
{ {
count: webSearchCallCount, count: webSearchCallCount,
...@@ -1864,12 +2041,10 @@ export function renderModelPrice( ...@@ -1864,12 +2041,10 @@ export function renderModelPrice(
ratio: groupRatio, ratio: groupRatio,
amount: renderDisplayAmountFromUsd(webSearchAmount), amount: renderDisplayAmountFromUsd(webSearchAmount),
}, },
)} )
</p> : null,
)} fileSearch && fileSearchCallCount > 0
{fileSearch && fileSearchCallCount > 0 && ( ? buildBillingText(
<p>
{i18next.t(
'文件搜索:{{count}} / 1K * 单价 {{price}} * {{ratioType}} {{ratio}} = {{amount}}', '文件搜索:{{count}} / 1K * 单价 {{price}} * {{ratioType}} {{ratio}} = {{amount}}',
{ {
count: fileSearchCallCount, count: fileSearchCallCount,
...@@ -1878,12 +2053,10 @@ export function renderModelPrice( ...@@ -1878,12 +2053,10 @@ export function renderModelPrice(
ratio: groupRatio, ratio: groupRatio,
amount: renderDisplayAmountFromUsd(fileSearchAmount), amount: renderDisplayAmountFromUsd(fileSearchAmount),
}, },
)} )
</p> : null,
)} imageGenerationCall && imageGenerationCallPrice > 0
{imageGenerationCall && imageGenerationCallPrice > 0 && ( ? buildBillingText(
<p>
{i18next.t(
'图片生成:1 次 * 单价 {{price}} * {{ratioType}} {{ratio}} = {{amount}}', '图片生成:1 次 * 单价 {{price}} * {{ratioType}} {{ratio}} = {{amount}}',
{ {
price: renderDisplayAmountFromUsd(imageGenerationCallPrice), price: renderDisplayAmountFromUsd(imageGenerationCallPrice),
...@@ -1891,18 +2064,12 @@ export function renderModelPrice( ...@@ -1891,18 +2064,12 @@ export function renderModelPrice(
ratio: groupRatio, ratio: groupRatio,
amount: renderDisplayAmountFromUsd(imageGenerationAmount), amount: renderDisplayAmountFromUsd(imageGenerationAmount),
}, },
)} )
</p> : null,
)} buildBillingText('合计:{{total}}', {
<p>
{i18next.t('合计:{{total}}', {
total: renderDisplayAmountFromUsd(totalAmount), total: renderDisplayAmountFromUsd(totalAmount),
})} }),
</p> ]);
<p>{i18next.t('仅供参考,以实际扣费为准')}</p>
</article>
</>
);
} }
export function renderLogContent( export function renderLogContent(
...@@ -1945,25 +2112,45 @@ export function renderLogContent( ...@@ -1945,25 +2112,45 @@ export function renderLogContent(
symbol, symbol,
price: (modelRatio * 2.0 * rate).toFixed(6), price: (modelRatio * 2.0 * rate).toFixed(6),
}), }),
i18next.t('补全价格 {{symbol}}{{price}} / 1M tokens', { i18next.t('输出价格 {{symbol}}{{price}} / 1M tokens', {
symbol, symbol,
price: (modelRatio * 2.0 * completionRatio * rate).toFixed(6), price: (modelRatio * 2.0 * completionRatio * rate).toFixed(6),
}), }),
]; ];
appendPricePart(parts, cacheRatio !== 1.0, '缓存读取价格 {{symbol}}{{price}} / 1M tokens', { appendPricePart(
parts,
cacheRatio !== 1.0,
'缓存读取价格 {{symbol}}{{price}} / 1M tokens',
{
symbol, symbol,
price: (modelRatio * 2.0 * cacheRatio * rate).toFixed(6), price: (modelRatio * 2.0 * cacheRatio * rate).toFixed(6),
}); },
appendPricePart(parts, image, '图片输入价格 {{symbol}}{{price}} / 1M tokens', { );
appendPricePart(
parts,
image,
'图片输入价格 {{symbol}}{{price}} / 1M tokens',
{
symbol, symbol,
price: (modelRatio * 2.0 * imageRatio * rate).toFixed(6), price: (modelRatio * 2.0 * imageRatio * rate).toFixed(6),
}); },
appendPricePart(parts, webSearch, 'Web 搜索调用 {{webSearchCallCount}} 次', { );
appendPricePart(
parts,
webSearch,
'Web 搜索调用 {{webSearchCallCount}} 次',
{
webSearchCallCount, webSearchCallCount,
}); },
appendPricePart(parts, fileSearch, '文件搜索调用 {{fileSearchCallCount}} 次', { );
appendPricePart(
parts,
fileSearch,
'文件搜索调用 {{fileSearchCallCount}} 次',
{
fileSearchCallCount, fileSearchCallCount,
}); },
);
parts.push(getGroupRatioText(groupRatio, user_group_ratio)); parts.push(getGroupRatioText(groupRatio, user_group_ratio));
return joinBillingSummary(parts); return joinBillingSummary(parts);
} }
...@@ -2033,6 +2220,7 @@ export function renderModelPriceSimple( ...@@ -2033,6 +2220,7 @@ export function renderModelPriceSimple(
isSystemPromptOverride = false, isSystemPromptOverride = false,
provider = 'openai', provider = 'openai',
displayMode = 'price', displayMode = 'price',
outputMode = 'text',
) { ) {
return renderPriceSimpleCore({ return renderPriceSimpleCore({
modelRatio, modelRatio,
...@@ -2051,6 +2239,7 @@ export function renderModelPriceSimple( ...@@ -2051,6 +2239,7 @@ export function renderModelPriceSimple(
imageRatio, imageRatio,
isSystemPromptOverride, isSystemPromptOverride,
displayMode, displayMode,
outputMode,
}); });
} }
...@@ -2081,31 +2270,24 @@ export function renderAudioModelPrice( ...@@ -2081,31 +2270,24 @@ export function renderAudioModelPrice(
if (!shouldUseRatioBillingProcess(modelPrice)) { if (!shouldUseRatioBillingProcess(modelPrice)) {
if (modelPrice !== -1) { if (modelPrice !== -1) {
return ( return renderBillingArticle([
<> buildBillingPriceText('模型价格:{{symbol}}{{price}} / 次', {
<article>
<p>
{i18next.t('模型价格:{{symbol}}{{price}} / 次', {
symbol, symbol,
price: (modelPrice * rate).toFixed(6), usdAmount: modelPrice,
})} rate,
</p> }),
<p> buildBillingPriceText(
{i18next.t(
'模型价格 {{symbol}}{{price}} / 次 * {{ratioType}} {{ratio}} = {{symbol}}{{total}}', '模型价格 {{symbol}}{{price}} / 次 * {{ratioType}} {{ratio}} = {{symbol}}{{total}}',
{ {
symbol, symbol,
price: (modelPrice * rate).toFixed(6), usdAmount: modelPrice,
rate,
ratioType: ratioLabel, ratioType: ratioLabel,
ratio: groupRatio, ratio: groupRatio,
total: (modelPrice * groupRatio * rate).toFixed(6), total: formatBillingDisplayPrice(modelPrice * groupRatio, rate),
}, },
)} ),
</p> ]);
<p>{i18next.t('仅供参考,以实际扣费为准')}</p>
</article>
</>
);
} }
if (completionRatio === undefined) { if (completionRatio === undefined) {
...@@ -2128,74 +2310,61 @@ export function renderAudioModelPrice( ...@@ -2128,74 +2310,61 @@ export function renderAudioModelPrice(
groupRatio; groupRatio;
const totalPrice = textPrice + audioPrice; const totalPrice = textPrice + audioPrice;
return ( return renderBillingArticle([
<> buildBillingPriceText('输入价格:{{symbol}}{{price}} / 1M tokens', {
<article>
<p>
{i18next.t('输入价格:{{symbol}}{{price}} / 1M tokens', {
symbol, symbol,
price: (inputRatioPrice * rate).toFixed(6), usdAmount: inputRatioPrice,
})} rate,
</p> }),
<p> buildBillingPriceText('输出价格:{{symbol}}{{price}} / 1M tokens', {
{i18next.t('补全价格:{{symbol}}{{price}} / 1M tokens', {
symbol, symbol,
price: (completionRatioPrice * rate).toFixed(6), usdAmount: completionRatioPrice,
})} rate,
</p> }),
{cacheTokens > 0 && ( cacheTokens > 0
<p> ? buildBillingPriceText(
{i18next.t('缓存读取价格:{{symbol}}{{price}} / 1M tokens', { '缓存读取价格:{{symbol}}{{price}} / 1M tokens',
{
symbol, symbol,
price: (inputRatioPrice * cacheRatio * rate).toFixed(6), usdAmount: inputRatioPrice * cacheRatio,
})} rate,
</p> },
)} )
<p> : null,
{i18next.t('音频输入价格:{{symbol}}{{price}} / 1M tokens', { buildBillingPriceText('音频输入价格:{{symbol}}{{price}} / 1M tokens', {
symbol, symbol,
price: (inputRatioPrice * audioRatio * rate).toFixed(6), usdAmount: inputRatioPrice * audioRatio,
})} rate,
</p> }),
<p> buildBillingPriceText('音频补全价格:{{symbol}}{{price}} / 1M tokens', {
{i18next.t('音频补全价格:{{symbol}}{{price}} / 1M tokens', {
symbol, symbol,
price: ( usdAmount: inputRatioPrice * audioRatio * audioCompletionRatio,
inputRatioPrice * rate,
audioRatio * }),
audioCompletionRatio * buildBillingText(
rate
).toFixed(6),
})}
</p>
<p>
{i18next.t(
'文字提示 {{input}} tokens / 1M tokens * {{symbol}}{{textInputPrice}} + 文字补全 {{completion}} tokens / 1M tokens * {{symbol}}{{textCompPrice}} + 音频提示 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioInputPrice}} + 音频补全 {{audioCompletion}} tokens / 1M tokens * {{symbol}}{{audioCompPrice}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}', '文字提示 {{input}} tokens / 1M tokens * {{symbol}}{{textInputPrice}} + 文字补全 {{completion}} tokens / 1M tokens * {{symbol}}{{textCompPrice}} + 音频提示 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioInputPrice}} + 音频补全 {{audioCompletion}} tokens / 1M tokens * {{symbol}}{{audioCompPrice}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}',
{ {
input: inputTokens, input: inputTokens,
completion: completionTokens, completion: completionTokens,
audioInput: audioInputTokens, audioInput: audioInputTokens,
audioCompletion: audioCompletionTokens, audioCompletion: audioCompletionTokens,
textInputPrice: (inputRatioPrice * rate).toFixed(6), textInputPrice: formatBillingDisplayPrice(inputRatioPrice, rate),
textCompPrice: (completionRatioPrice * rate).toFixed(6), textCompPrice: formatBillingDisplayPrice(completionRatioPrice, rate),
audioInputPrice: (audioRatio * inputRatioPrice * rate).toFixed(6), audioInputPrice: formatBillingDisplayPrice(
audioCompPrice: ( audioRatio * inputRatioPrice,
audioRatio * rate,
audioCompletionRatio * ),
inputRatioPrice * audioCompPrice: formatBillingDisplayPrice(
rate audioRatio * audioCompletionRatio * inputRatioPrice,
).toFixed(6), rate,
),
ratioType: ratioLabel, ratioType: ratioLabel,
ratio: groupRatio, ratio: groupRatio,
symbol, symbol,
total: (totalPrice * rate).toFixed(6), total: formatBillingDisplayPrice(totalPrice, rate),
}, },
)} ),
</p> ]);
<p>{i18next.t('仅供参考,以实际扣费为准')}</p>
</article>
</>
);
} }
// 1 ratio = $0.002 / 1K tokens // 1 ratio = $0.002 / 1K tokens
...@@ -2232,7 +2401,10 @@ export function renderAudioModelPrice( ...@@ -2232,7 +2401,10 @@ export function renderAudioModelPrice(
(effectiveInputTokens / 1000000) * inputRatioPrice * groupRatio + (effectiveInputTokens / 1000000) * inputRatioPrice * groupRatio +
(completionTokens / 1000000) * completionRatioPrice * groupRatio; (completionTokens / 1000000) * completionRatioPrice * groupRatio;
const audioPrice = const audioPrice =
(audioInputTokens / 1000000) * inputRatioPrice * audioRatioValue * groupRatio + (audioInputTokens / 1000000) *
inputRatioPrice *
audioRatioValue *
groupRatio +
(audioCompletionTokens / 1000000) * (audioCompletionTokens / 1000000) *
inputRatioPrice * inputRatioPrice *
audioRatioValue * audioRatioValue *
...@@ -2240,11 +2412,8 @@ export function renderAudioModelPrice( ...@@ -2240,11 +2412,8 @@ export function renderAudioModelPrice(
groupRatio; groupRatio;
const totalPrice = textPrice + audioPrice; const totalPrice = textPrice + audioPrice;
return ( return renderBillingArticle([
<> buildBillingText(
<article>
<p>
{i18next.t(
'模型倍率 {{modelRatio}},补全倍率 {{completionRatio}},音频倍率 {{audioRatio}},音频补全倍率 {{audioCompletionRatio}},{{cachePart}}{{ratioType}} {{ratio}}', '模型倍率 {{modelRatio}},补全倍率 {{completionRatio}},音频倍率 {{audioRatio}},音频补全倍率 {{audioCompletionRatio}},{{cachePart}}{{ratioType}} {{ratio}}',
{ {
modelRatio: modelRatioValue, modelRatio: modelRatioValue,
...@@ -2258,10 +2427,8 @@ export function renderAudioModelPrice( ...@@ -2258,10 +2427,8 @@ export function renderAudioModelPrice(
ratioType: ratioLabel, ratioType: ratioLabel,
ratio: groupRatio, ratio: groupRatio,
}, },
)} ),
</p> buildBillingText(
<p>
{i18next.t(
'普通输入:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * {{ratioType}} {{ratio}} = {{amount}}', '普通输入:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * {{ratioType}} {{ratio}} = {{amount}}',
{ {
tokens: Math.max(inputTokens - cacheTokens, 0), tokens: Math.max(inputTokens - cacheTokens, 0),
...@@ -2269,16 +2436,14 @@ export function renderAudioModelPrice( ...@@ -2269,16 +2436,14 @@ export function renderAudioModelPrice(
ratioType: ratioLabel, ratioType: ratioLabel,
ratio: groupRatio, ratio: groupRatio,
amount: renderDisplayAmountFromUsd( amount: renderDisplayAmountFromUsd(
((Math.max(inputTokens - cacheTokens, 0) / 1000000) * (Math.max(inputTokens - cacheTokens, 0) / 1000000) *
inputRatioPrice * inputRatioPrice *
groupRatio), groupRatio,
), ),
}, },
)} ),
</p> cacheTokens > 0
{cacheTokens > 0 && ( ? buildBillingText(
<p>
{i18next.t(
'缓存输入:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}', '缓存输入:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}',
{ {
tokens: cacheTokens, tokens: cacheTokens,
...@@ -2287,17 +2452,15 @@ export function renderAudioModelPrice( ...@@ -2287,17 +2452,15 @@ export function renderAudioModelPrice(
ratioType: ratioLabel, ratioType: ratioLabel,
ratio: groupRatio, ratio: groupRatio,
amount: renderDisplayAmountFromUsd( amount: renderDisplayAmountFromUsd(
((cacheTokens / 1000000) * (cacheTokens / 1000000) *
inputRatioPrice * inputRatioPrice *
cacheRatioValue * cacheRatioValue *
groupRatio), groupRatio,
), ),
}, },
)} )
</p> : null,
)} buildBillingText(
<p>
{i18next.t(
'文字输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 补全倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}', '文字输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 补全倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}',
{ {
tokens: completionTokens, tokens: completionTokens,
...@@ -2306,16 +2469,14 @@ export function renderAudioModelPrice( ...@@ -2306,16 +2469,14 @@ export function renderAudioModelPrice(
ratioType: ratioLabel, ratioType: ratioLabel,
ratio: groupRatio, ratio: groupRatio,
amount: renderDisplayAmountFromUsd( amount: renderDisplayAmountFromUsd(
((completionTokens / 1000000) * (completionTokens / 1000000) *
inputRatioPrice * inputRatioPrice *
completionRatioValue * completionRatioValue *
groupRatio), groupRatio,
), ),
}, },
)} ),
</p> buildBillingText(
<p>
{i18next.t(
'音频输入:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 音频倍率 {{audioRatio}} * {{ratioType}} {{ratio}} = {{amount}}', '音频输入:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 音频倍率 {{audioRatio}} * {{ratioType}} {{ratio}} = {{amount}}',
{ {
tokens: audioInputTokens, tokens: audioInputTokens,
...@@ -2324,16 +2485,14 @@ export function renderAudioModelPrice( ...@@ -2324,16 +2485,14 @@ export function renderAudioModelPrice(
ratioType: ratioLabel, ratioType: ratioLabel,
ratio: groupRatio, ratio: groupRatio,
amount: renderDisplayAmountFromUsd( amount: renderDisplayAmountFromUsd(
((audioInputTokens / 1000000) * (audioInputTokens / 1000000) *
inputRatioPrice * inputRatioPrice *
audioRatioValue * audioRatioValue *
groupRatio), groupRatio,
), ),
}, },
)} ),
</p> buildBillingText(
<p>
{i18next.t(
'音频输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 音频倍率 {{audioRatio}} * 音频补全倍率 {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}', '音频输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 音频倍率 {{audioRatio}} * 音频补全倍率 {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}',
{ {
tokens: audioCompletionTokens, tokens: audioCompletionTokens,
...@@ -2343,29 +2502,23 @@ export function renderAudioModelPrice( ...@@ -2343,29 +2502,23 @@ export function renderAudioModelPrice(
ratioType: ratioLabel, ratioType: ratioLabel,
ratio: groupRatio, ratio: groupRatio,
amount: renderDisplayAmountFromUsd( amount: renderDisplayAmountFromUsd(
((audioCompletionTokens / 1000000) * (audioCompletionTokens / 1000000) *
inputRatioPrice * inputRatioPrice *
audioRatioValue * audioRatioValue *
audioCompletionRatioValue * audioCompletionRatioValue *
groupRatio), groupRatio,
), ),
}, },
)} ),
</p> buildBillingText(
<p>
{i18next.t(
'合计:文字部分 {{textTotal}} + 音频部分 {{audioTotal}} = {{total}}', '合计:文字部分 {{textTotal}} + 音频部分 {{audioTotal}} = {{total}}',
{ {
textTotal: renderDisplayAmountFromUsd(textPrice), textTotal: renderDisplayAmountFromUsd(textPrice),
audioTotal: renderDisplayAmountFromUsd(audioPrice), audioTotal: renderDisplayAmountFromUsd(audioPrice),
total: renderDisplayAmountFromUsd(totalPrice), total: renderDisplayAmountFromUsd(totalPrice),
}, },
)} ),
</p> ]);
<p>{i18next.t('仅供参考,以实际扣费为准')}</p>
</article>
</>
);
} }
export function renderQuotaWithPrompt(quota, digits) { export function renderQuotaWithPrompt(quota, digits) {
...@@ -2405,31 +2558,24 @@ export function renderClaudeModelPrice( ...@@ -2405,31 +2558,24 @@ export function renderClaudeModelPrice(
if (!shouldUseRatioBillingProcess(modelPrice)) { if (!shouldUseRatioBillingProcess(modelPrice)) {
if (modelPrice !== -1) { if (modelPrice !== -1) {
return ( return renderBillingArticle([
<> buildBillingPriceText('模型价格:{{symbol}}{{price}} / 次', {
<article>
<p>
{i18next.t('模型价格:{{symbol}}{{price}} / 次', {
symbol, symbol,
price: (modelPrice * rate).toFixed(6), usdAmount: modelPrice,
})} rate,
</p> }),
<p> buildBillingPriceText(
{i18next.t(
'模型价格 {{symbol}}{{price}} / 次 * {{ratioType}} {{ratio}} = {{symbol}}{{total}}', '模型价格 {{symbol}}{{price}} / 次 * {{ratioType}} {{ratio}} = {{symbol}}{{total}}',
{ {
symbol, symbol,
price: (modelPrice * rate).toFixed(6), usdAmount: modelPrice,
rate,
ratioType: ratioLabel, ratioType: ratioLabel,
ratio: groupRatio, ratio: groupRatio,
total: (modelPrice * groupRatio * rate).toFixed(6), total: formatBillingDisplayPrice(modelPrice * groupRatio, rate),
}, },
)} ),
</p> ]);
<p>{i18next.t('仅供参考,以实际扣费为准')}</p>
</article>
</>
);
} }
if (completionRatio === undefined) { if (completionRatio === undefined) {
...@@ -2492,31 +2638,40 @@ export function renderClaudeModelPrice( ...@@ -2492,31 +2638,40 @@ export function renderClaudeModelPrice(
if (shouldShowLegacyCacheCreation) { if (shouldShowLegacyCacheCreation) {
breakdownSegments.push( breakdownSegments.push(
i18next.t('缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}', { i18next.t(
'缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}',
{
tokens: cacheCreationTokens, tokens: cacheCreationTokens,
symbol, symbol,
price: cacheCreationUnitPrice.toFixed(6), price: cacheCreationUnitPrice.toFixed(6),
}), },
),
); );
} }
if (shouldShowCacheCreation5m) { if (shouldShowCacheCreation5m) {
breakdownSegments.push( breakdownSegments.push(
i18next.t('5m缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}', { i18next.t(
'5m缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}',
{
tokens: cacheCreationTokens5m, tokens: cacheCreationTokens5m,
symbol, symbol,
price: cacheCreationUnitPrice5m.toFixed(6), price: cacheCreationUnitPrice5m.toFixed(6),
}), },
),
); );
} }
if (shouldShowCacheCreation1h) { if (shouldShowCacheCreation1h) {
breakdownSegments.push( breakdownSegments.push(
i18next.t('1h缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}', { i18next.t(
'1h缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}',
{
tokens: cacheCreationTokens1h, tokens: cacheCreationTokens1h,
symbol, symbol,
price: cacheCreationUnitPrice1h.toFixed(6), price: cacheCreationUnitPrice1h.toFixed(6),
}), },
),
); );
} }
...@@ -2533,69 +2688,68 @@ export function renderClaudeModelPrice( ...@@ -2533,69 +2688,68 @@ export function renderClaudeModelPrice(
const breakdownText = breakdownSegments.join(' + '); const breakdownText = breakdownSegments.join(' + ');
return ( return renderBillingArticle([
<> buildBillingPriceText('输入价格:{{symbol}}{{price}} / 1M tokens', {
<article>
<p>
{i18next.t('输入价格:{{symbol}}{{price}} / 1M tokens', {
symbol, symbol,
price: (inputRatioPrice * rate).toFixed(6), usdAmount: inputRatioPrice,
})} rate,
</p> }),
<p> buildBillingPriceText('输出价格:{{symbol}}{{price}} / 1M tokens', {
{i18next.t('补全价格:{{symbol}}{{price}} / 1M tokens', {
symbol, symbol,
price: (completionRatioPrice * rate).toFixed(6), usdAmount: completionRatioPrice,
})} rate,
</p> }),
{cacheTokens > 0 && ( cacheTokens > 0
<p> ? buildBillingPriceText(
{i18next.t('缓存读取价格:{{symbol}}{{price}} / 1M tokens', { '缓存读取价格:{{symbol}}{{price}} / 1M tokens',
{
symbol, symbol,
price: (cacheRatioPrice * rate).toFixed(6), usdAmount: cacheRatioPrice,
})} rate,
</p> },
)} )
{!hasSplitCacheCreation && cacheCreationTokens > 0 && ( : null,
<p> !hasSplitCacheCreation && cacheCreationTokens > 0
{i18next.t('缓存创建价格:{{symbol}}{{price}} / 1M tokens', { ? buildBillingPriceText(
'缓存创建价格:{{symbol}}{{price}} / 1M tokens',
{
symbol, symbol,
price: (cacheCreationRatioPrice * rate).toFixed(6), usdAmount: cacheCreationRatioPrice,
})} rate,
</p> },
)} )
{hasSplitCacheCreation && cacheCreationTokens5m > 0 && ( : null,
<p> hasSplitCacheCreation && cacheCreationTokens5m > 0
{i18next.t('5m缓存创建价格:{{symbol}}{{price}} / 1M tokens', { ? buildBillingPriceText(
'5m缓存创建价格:{{symbol}}{{price}} / 1M tokens',
{
symbol, symbol,
price: (cacheCreationRatioPrice5m * rate).toFixed(6), usdAmount: cacheCreationRatioPrice5m,
})} rate,
</p> },
)} )
{hasSplitCacheCreation && cacheCreationTokens1h > 0 && ( : null,
<p> hasSplitCacheCreation && cacheCreationTokens1h > 0
{i18next.t('1h缓存创建价格:{{symbol}}{{price}} / 1M tokens', { ? buildBillingPriceText(
'1h缓存创建价格:{{symbol}}{{price}} / 1M tokens',
{
symbol, symbol,
price: (cacheCreationRatioPrice1h * rate).toFixed(6), usdAmount: cacheCreationRatioPrice1h,
})} rate,
</p> },
)} )
<p> : null,
{i18next.t( buildBillingText(
'{{breakdown}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}', '{{breakdown}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}',
{ {
breakdown: breakdownText, breakdown: breakdownText,
ratioType: ratioLabel, ratioType: ratioLabel,
ratio: groupRatio, ratio: groupRatio,
symbol, symbol,
total: (price * rate).toFixed(6), total: formatBillingDisplayPrice(price, rate),
}, },
)} ),
</p> ]);
<p>{i18next.t('仅供参考,以实际扣费为准')}</p>
</article>
</>
);
} }
if (modelPrice !== -1) { if (modelPrice !== -1) {
...@@ -2635,7 +2789,9 @@ export function renderClaudeModelPrice( ...@@ -2635,7 +2789,9 @@ export function renderClaudeModelPrice(
const shouldShowCacheCreation1h = const shouldShowCacheCreation1h =
hasSplitCacheCreation && cacheCreationTokens1h > 0; hasSplitCacheCreation && cacheCreationTokens1h > 0;
const legacyCacheCreationTokens = hasSplitCacheCreation ? 0 : cacheCreationTokens; const legacyCacheCreationTokens = hasSplitCacheCreation
? 0
: cacheCreationTokens;
const effectiveInputTokens = const effectiveInputTokens =
inputTokens + inputTokens +
cacheTokens * cacheRatioValue + cacheTokens * cacheRatioValue +
...@@ -2647,11 +2803,8 @@ export function renderClaudeModelPrice( ...@@ -2647,11 +2803,8 @@ export function renderClaudeModelPrice(
(effectiveInputTokens / 1000000) * inputRatioPrice * groupRatio + (effectiveInputTokens / 1000000) * inputRatioPrice * groupRatio +
(completionTokens / 1000000) * completionRatioPrice * groupRatio; (completionTokens / 1000000) * completionRatioPrice * groupRatio;
return ( return renderBillingArticle([
<> buildBillingText(
<article>
<p>
{i18next.t(
'模型倍率 {{modelRatio}},输出倍率 {{completionRatio}},缓存倍率 {{cacheRatio}},{{ratioType}} {{ratio}}', '模型倍率 {{modelRatio}},输出倍率 {{completionRatio}},缓存倍率 {{cacheRatio}},{{ratioType}} {{ratio}}',
{ {
modelRatio: modelRatioValue, modelRatio: modelRatioValue,
...@@ -2660,23 +2813,19 @@ export function renderClaudeModelPrice( ...@@ -2660,23 +2813,19 @@ export function renderClaudeModelPrice(
ratioType: ratioLabel, ratioType: ratioLabel,
ratio: groupRatio, ratio: groupRatio,
}, },
)} ),
</p> hasSplitCacheCreation
<p> ? buildBillingText(
{hasSplitCacheCreation
? i18next.t(
'缓存创建倍率 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}', '缓存创建倍率 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}',
{ {
cacheCreationRatio5m: cacheCreationRatio5mValue, cacheCreationRatio5m: cacheCreationRatio5mValue,
cacheCreationRatio1h: cacheCreationRatio1hValue, cacheCreationRatio1h: cacheCreationRatio1hValue,
}, },
) )
: i18next.t('缓存创建倍率 {{cacheCreationRatio}}', { : buildBillingText('缓存创建倍率 {{cacheCreationRatio}}', {
cacheCreationRatio: cacheCreationRatioValue, cacheCreationRatio: cacheCreationRatioValue,
})} }),
</p> buildBillingText(
<p>
{i18next.t(
'普通输入:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * {{ratioType}} {{ratio}} = {{amount}}', '普通输入:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * {{ratioType}} {{ratio}} = {{amount}}',
{ {
tokens: inputTokens, tokens: inputTokens,
...@@ -2684,14 +2833,12 @@ export function renderClaudeModelPrice( ...@@ -2684,14 +2833,12 @@ export function renderClaudeModelPrice(
ratioType: ratioLabel, ratioType: ratioLabel,
ratio: groupRatio, ratio: groupRatio,
amount: renderDisplayAmountFromUsd( amount: renderDisplayAmountFromUsd(
((inputTokens / 1000000) * inputRatioPrice * groupRatio), (inputTokens / 1000000) * inputRatioPrice * groupRatio,
), ),
}, },
)} ),
</p> shouldShowCache
{shouldShowCache && ( ? buildBillingText(
<p>
{i18next.t(
'缓存读取:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}', '缓存读取:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}',
{ {
tokens: cacheTokens, tokens: cacheTokens,
...@@ -2700,18 +2847,16 @@ export function renderClaudeModelPrice( ...@@ -2700,18 +2847,16 @@ export function renderClaudeModelPrice(
ratioType: ratioLabel, ratioType: ratioLabel,
ratio: groupRatio, ratio: groupRatio,
amount: renderDisplayAmountFromUsd( amount: renderDisplayAmountFromUsd(
((cacheTokens / 1000000) * (cacheTokens / 1000000) *
inputRatioPrice * inputRatioPrice *
cacheRatioValue * cacheRatioValue *
groupRatio), groupRatio,
), ),
}, },
)} )
</p> : null,
)} shouldShowLegacyCacheCreation
{shouldShowLegacyCacheCreation && ( ? buildBillingText(
<p>
{i18next.t(
'缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存创建倍率 {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}', '缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存创建倍率 {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}',
{ {
tokens: cacheCreationTokens, tokens: cacheCreationTokens,
...@@ -2720,18 +2865,16 @@ export function renderClaudeModelPrice( ...@@ -2720,18 +2865,16 @@ export function renderClaudeModelPrice(
ratioType: ratioLabel, ratioType: ratioLabel,
ratio: groupRatio, ratio: groupRatio,
amount: renderDisplayAmountFromUsd( amount: renderDisplayAmountFromUsd(
((cacheCreationTokens / 1000000) * (cacheCreationTokens / 1000000) *
inputRatioPrice * inputRatioPrice *
cacheCreationRatioValue * cacheCreationRatioValue *
groupRatio), groupRatio,
), ),
}, },
)} )
</p> : null,
)} shouldShowCacheCreation5m
{shouldShowCacheCreation5m && ( ? buildBillingText(
<p>
{i18next.t(
'5m缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 5m缓存创建倍率 {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}', '5m缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 5m缓存创建倍率 {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}',
{ {
tokens: cacheCreationTokens5m, tokens: cacheCreationTokens5m,
...@@ -2740,18 +2883,16 @@ export function renderClaudeModelPrice( ...@@ -2740,18 +2883,16 @@ export function renderClaudeModelPrice(
ratioType: ratioLabel, ratioType: ratioLabel,
ratio: groupRatio, ratio: groupRatio,
amount: renderDisplayAmountFromUsd( amount: renderDisplayAmountFromUsd(
((cacheCreationTokens5m / 1000000) * (cacheCreationTokens5m / 1000000) *
inputRatioPrice * inputRatioPrice *
cacheCreationRatio5mValue * cacheCreationRatio5mValue *
groupRatio), groupRatio,
), ),
}, },
)} )
</p> : null,
)} shouldShowCacheCreation1h
{shouldShowCacheCreation1h && ( ? buildBillingText(
<p>
{i18next.t(
'1h缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 1h缓存创建倍率 {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}', '1h缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 1h缓存创建倍率 {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}',
{ {
tokens: cacheCreationTokens1h, tokens: cacheCreationTokens1h,
...@@ -2760,23 +2901,22 @@ export function renderClaudeModelPrice( ...@@ -2760,23 +2901,22 @@ export function renderClaudeModelPrice(
ratioType: ratioLabel, ratioType: ratioLabel,
ratio: groupRatio, ratio: groupRatio,
amount: renderDisplayAmountFromUsd( amount: renderDisplayAmountFromUsd(
((cacheCreationTokens1h / 1000000) * (cacheCreationTokens1h / 1000000) *
inputRatioPrice * inputRatioPrice *
cacheCreationRatio1hValue * cacheCreationRatio1hValue *
groupRatio), groupRatio,
), ),
}, },
)} )
</p> : null,
)} buildBillingText(
<p> '补全 {{completion}} tokens * 输出倍率 {{completionRatio}}',
{i18next.t('补全 {{completion}} tokens * 输出倍率 {{completionRatio}}', { {
completion: completionTokens, completion: completionTokens,
completionRatio: completionRatioValue, completionRatio: completionRatioValue,
})} },
</p> ),
<p> buildBillingText(
{i18next.t(
'输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 输出倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}', '输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 输出倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}',
{ {
tokens: completionTokens, tokens: completionTokens,
...@@ -2785,24 +2925,17 @@ export function renderClaudeModelPrice( ...@@ -2785,24 +2925,17 @@ export function renderClaudeModelPrice(
ratioType: ratioLabel, ratioType: ratioLabel,
ratio: groupRatio, ratio: groupRatio,
amount: renderDisplayAmountFromUsd( amount: renderDisplayAmountFromUsd(
((completionTokens / 1000000) * (completionTokens / 1000000) *
inputRatioPrice * inputRatioPrice *
completionRatioValue * completionRatioValue *
groupRatio), groupRatio,
), ),
}, },
)} ),
</p> buildBillingText('合计:{{total}}', {
<p>
{i18next.t('合计:{{total}}', {
total: renderDisplayAmountFromUsd(totalAmount), total: renderDisplayAmountFromUsd(totalAmount),
}, }),
)} ]);
</p>
<p>{i18next.t('仅供参考,以实际扣费为准')}</p>
</article>
</>
);
} }
export function renderClaudeLogContent( export function renderClaudeLogContent(
...@@ -2844,7 +2977,7 @@ export function renderClaudeLogContent( ...@@ -2844,7 +2977,7 @@ export function renderClaudeLogContent(
symbol, symbol,
price: (modelRatio * 2.0 * rate).toFixed(6), price: (modelRatio * 2.0 * rate).toFixed(6),
}), }),
i18next.t('补全价格 {{symbol}}{{price}} / 1M tokens', { i18next.t('输出价格 {{symbol}}{{price}} / 1M tokens', {
symbol, symbol,
price: (modelRatio * 2.0 * completionRatio * rate).toFixed(6), price: (modelRatio * 2.0 * completionRatio * rate).toFixed(6),
}), }),
......
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
"(输入 {{input}} tokens / 1M tokens * {{symbol}}{{price}}": "(Input {{input}} tokens / 1M tokens * {{symbol}}{{price}}", "(输入 {{input}} tokens / 1M tokens * {{symbol}}{{price}}": "(Input {{input}} tokens / 1M tokens * {{symbol}}{{price}}",
"(输入 {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + 音频输入 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}": "(Input {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + Audio input {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}", "(输入 {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + 音频输入 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}": "(Input {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + Audio input {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}",
"(输入 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + 缓存 {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}": "(Input {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + Cache {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}", "(输入 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + 缓存 {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}": "(Input {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + Cache {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}",
"(输入 {{nonImageInput}} tokens + 图片输入 {{imageInput}} tokens * {{imageRatio}} / 1M tokens * {{symbol}}{{price}}": "(Input {{nonImageInput}} tokens + Image input {{imageInput}} tokens * {{imageRatio}} / 1M tokens * {{symbol}}{{price}}",
"[最多请求次数]和[最多请求完成次数]的最大值为2147483647。": "The maximum value of [Maximum request count] and [Maximum request completion count] is 2147483647.", "[最多请求次数]和[最多请求完成次数]的最大值为2147483647。": "The maximum value of [Maximum request count] and [Maximum request completion count] is 2147483647.",
"[最多请求次数]必须大于等于0,[最多请求完成次数]必须大于等于1。": "[Maximum request count] must be greater than or equal to 0, [Maximum request completion count] must be greater than or equal to 1.", "[最多请求次数]必须大于等于0,[最多请求完成次数]必须大于等于1。": "[Maximum request count] must be greater than or equal to 0, [Maximum request completion count] must be greater than or equal to 1.",
"{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}": "{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}", "{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}": "{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}",
...@@ -155,10 +154,10 @@ ...@@ -155,10 +154,10 @@
"JSON格式错误": "JSON format error", "JSON格式错误": "JSON format error",
"JSON编辑": "JSON Editor", "JSON编辑": "JSON Editor",
"JSON解析错误:": "JSON parsing error:", "JSON解析错误:": "JSON parsing error:",
"Key": "", "Key": "Key",
"Key 或 Path": "", "Key 或 Path": "",
"Key 指纹": "", "Key 指纹": "",
"Key 摘要": "", "Key 摘要": "Key summary",
"Key 来源": "", "Key 来源": "",
"Key 来源类型": "", "Key 来源类型": "",
"Linux DO Client ID": "Linux DO Client ID", "Linux DO Client ID": "Linux DO Client ID",
...@@ -915,7 +914,6 @@ ...@@ -915,7 +914,6 @@
"图片输入价格:{{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens (图片倍率: {{imageRatio}})": "Image input price: {{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens (Image ratio: {{imageRatio}})", "图片输入价格:{{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens (图片倍率: {{imageRatio}})": "Image input price: {{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens (Image ratio: {{imageRatio}})",
"图片输入价格:{{symbol}}{{price}} / 1M tokens": "Image input price: {{symbol}}{{price}} / 1M tokens", "图片输入价格:{{symbol}}{{price}} / 1M tokens": "Image input price: {{symbol}}{{price}} / 1M tokens",
"图片输入价格 {{symbol}}{{price}} / 1M tokens": "Image input price {{symbol}}{{price}} / 1M tokens", "图片输入价格 {{symbol}}{{price}} / 1M tokens": "Image input price {{symbol}}{{price}} / 1M tokens",
"图片输入 {{price}}": "Image input {{price}}",
"图片输入倍率(仅部分模型支持该计费)": "Image input ratio (only supported by some models for billing)", "图片输入倍率(仅部分模型支持该计费)": "Image input ratio (only supported by some models for billing)",
"图片输入相关的倍率设置,键为模型名称,值为倍率,仅部分模型支持该计费": "Ratio settings related to image input, key is model name, value is ratio, only supported by some models for billing", "图片输入相关的倍率设置,键为模型名称,值为倍率,仅部分模型支持该计费": "Ratio settings related to image input, key is model name, value is ratio, only supported by some models for billing",
"图生文": "Describe", "图生文": "Describe",
...@@ -1371,7 +1369,7 @@ ...@@ -1371,7 +1369,7 @@
"打开 CC Switch": "Open CC Switch", "打开 CC Switch": "Open CC Switch",
"打开侧边栏": "Open sidebar", "打开侧边栏": "Open sidebar",
"打开授权页面": "", "打开授权页面": "",
"扣费": "", "扣费": "Charge",
"执行 GC": "Run GC", "执行 GC": "Run GC",
"执行中": "processing", "执行中": "processing",
"扫描二维码": "Scan QR code", "扫描二维码": "Scan QR code",
...@@ -1406,7 +1404,6 @@ ...@@ -1406,7 +1404,6 @@
"按倍率类型筛选": "Filter by ratio type", "按倍率类型筛选": "Filter by ratio type",
"按倍率设置": "Set by ratio", "按倍率设置": "Set by ratio",
"按次": "Per request", "按次": "Per request",
"按次 {{price}} / 次": "Per request {{price}} / request",
"按次计费": "Pay per request", "按次计费": "Pay per request",
"按照如下格式输入:AccessKey|SecretAccessKey|Region": "Enter in the format: AccessKey|SecretAccessKey|Region", "按照如下格式输入:AccessKey|SecretAccessKey|Region": "Enter in the format: AccessKey|SecretAccessKey|Region",
"按量计费": "Pay as you go", "按量计费": "Pay as you go",
...@@ -1799,9 +1796,11 @@ ...@@ -1799,9 +1796,11 @@
"模型价格": "Model price", "模型价格": "Model price",
"模型价格 {{symbol}}{{price}},{{ratioType}} {{ratio}}": "Model price {{symbol}}{{price}}, {{ratioType}} {{ratio}}", "模型价格 {{symbol}}{{price}},{{ratioType}} {{ratio}}": "Model price {{symbol}}{{price}}, {{ratioType}} {{ratio}}",
"模型价格 {{symbol}}{{price}} / 次": "Model price {{symbol}}{{price}} / request", "模型价格 {{symbol}}{{price}} / 次": "Model price {{symbol}}{{price}} / request",
"按次 {{symbol}}{{price}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}": "Per request {{symbol}}{{price}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}",
"模型价格:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}": "Model price: {{symbol}}{{price}} * {{ratioType}}: {{ratio}} = {{symbol}}{{total}}", "模型价格:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}": "Model price: {{symbol}}{{price}} * {{ratioType}}: {{ratio}} = {{symbol}}{{total}}",
"按次:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}": "Per request: {{symbol}}{{price}} * {{ratioType}}: {{ratio}} = {{symbol}}{{total}}",
"模型价格:{{symbol}}{{price}} / 次": "Model price: {{symbol}}{{price}} / request", "模型价格:{{symbol}}{{price}} / 次": "Model price: {{symbol}}{{price}} / request",
"输入 {{price}} / 1M tokens": "Input {{price}} / 1M tokens", "按次:{{symbol}}{{price}}": "Per request: {{symbol}}{{price}}",
"模型倍率": "Model ratio", "模型倍率": "Model ratio",
"模型倍率 {{modelRatio}}": "Model ratio {{modelRatio}}", "模型倍率 {{modelRatio}}": "Model ratio {{modelRatio}}",
"模型倍率 {{modelRatio}},缓存倍率 {{cacheRatio}},输出倍率 {{completionRatio}},{{ratioType}} {{ratio}}": "Model ratio {{modelRatio}}, cache ratio {{cacheRatio}}, completion ratio {{completionRatio}}, {{ratioType}} {{ratio}}", "模型倍率 {{modelRatio}},缓存倍率 {{cacheRatio}},输出倍率 {{completionRatio}},{{ratioType}} {{ratio}}": "Model ratio {{modelRatio}}, cache ratio {{cacheRatio}}, completion ratio {{completionRatio}}, {{ratioType}} {{ratio}}",
...@@ -1997,7 +1996,7 @@ ...@@ -1997,7 +1996,7 @@
"渠道": "Channel", "渠道": "Channel",
"渠道 ID": "Channel ID", "渠道 ID": "Channel ID",
"渠道ID,名称,密钥,API地址": "Channel ID, name, key, Base URL", "渠道ID,名称,密钥,API地址": "Channel ID, name, key, Base URL",
"渠道亲和性": "", "渠道亲和性": "Channel affinity",
"渠道亲和性:上游缓存命中": "", "渠道亲和性:上游缓存命中": "",
"渠道亲和性会基于从请求上下文或 JSON Body 提取的 Key,优先复用上一次成功的渠道。": "", "渠道亲和性会基于从请求上下文或 JSON Body 提取的 Key,优先复用上一次成功的渠道。": "",
"渠道优先级": "Channel Priority", "渠道优先级": "Channel Priority",
...@@ -2099,7 +2098,7 @@ ...@@ -2099,7 +2098,7 @@
"用户账户管理": "User account management", "用户账户管理": "User account management",
"用时/首字": "Time/first word", "用时/首字": "Time/first word",
"由全站货币展示设置统一控制": "Controlled by the site-wide currency display settings", "由全站货币展示设置统一控制": "Controlled by the site-wide currency display settings",
"由订阅抵扣": "", "由订阅抵扣": "Deducted by subscription",
"界面语言和其他个人偏好": "Interface language and other personal preferences", "界面语言和其他个人偏好": "Interface language and other personal preferences",
"留空使用系统临时目录": "Leave empty to use system temp directory", "留空使用系统临时目录": "Leave empty to use system temp directory",
"留空则使用账号绑定的邮箱": "If left blank, the email address bound to the account will be used", "留空则使用账号绑定的邮箱": "If left blank, the email address bound to the account will be used",
...@@ -2360,8 +2359,6 @@ ...@@ -2360,8 +2359,6 @@
"缓存价格:{{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens (缓存倍率: {{cacheRatio}})": "Cache price: {{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens (Cache ratio: {{cacheRatio}})", "缓存价格:{{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens (缓存倍率: {{cacheRatio}})": "Cache price: {{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens (Cache ratio: {{cacheRatio}})",
"缓存读取价格:{{symbol}}{{price}} / 1M tokens": "Cache read price: {{symbol}}{{price}} / 1M tokens", "缓存读取价格:{{symbol}}{{price}} / 1M tokens": "Cache read price: {{symbol}}{{price}} / 1M tokens",
"缓存读取价格 {{symbol}}{{price}} / 1M tokens": "Cache read price {{symbol}}{{price}} / 1M tokens", "缓存读取价格 {{symbol}}{{price}} / 1M tokens": "Cache read price {{symbol}}{{price}} / 1M tokens",
"缓存读取 {{price}}": "Cache read {{price}}",
"缓存读取 {{price}}": "Cache read {{price}}",
"缓存倍率": "Cache ratio", "缓存倍率": "Cache ratio",
"缓存倍率 {{cacheRatio}}": "Cache ratio {{cacheRatio}}", "缓存倍率 {{cacheRatio}}": "Cache ratio {{cacheRatio}}",
"缓存写": "Cache Write", "缓存写": "Cache Write",
...@@ -2371,12 +2368,6 @@ ...@@ -2371,12 +2368,6 @@
"缓存创建: 1h {{cacheCreationRatio1h}}": "Cache creation: 1h {{cacheCreationRatio1h}}", "缓存创建: 1h {{cacheCreationRatio1h}}": "Cache creation: 1h {{cacheCreationRatio1h}}",
"缓存创建: 5m {{cacheCreationRatio5m}}": "Cache creation: 5m {{cacheCreationRatio5m}}", "缓存创建: 5m {{cacheCreationRatio5m}}": "Cache creation: 5m {{cacheCreationRatio5m}}",
"缓存创建: 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}": "Cache creation: 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}", "缓存创建: 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}": "Cache creation: 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}",
"缓存创建 {{price}}": "Cache creation {{price}}",
"5m缓存创建 {{price}}": "5m cache creation {{price}}",
"1h缓存创建 {{price}}": "1h cache creation {{price}}",
"缓存创建 {{price}}": "Cache creation {{price}}",
"5m缓存创建 {{price}}": "5m cache creation {{price}}",
"1h缓存创建 {{price}}": "1h cache creation {{price}}",
"缓存创建价格:{{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens (缓存创建倍率: {{cacheCreationRatio}})": "Cache creation price: {{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens (Cache creation ratio: {{cacheCreationRatio}})", "缓存创建价格:{{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens (缓存创建倍率: {{cacheCreationRatio}})": "Cache creation price: {{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens (Cache creation ratio: {{cacheCreationRatio}})",
"缓存创建价格:{{symbol}}{{price}} / 1M tokens": "Cache creation price: {{symbol}}{{price}} / 1M tokens", "缓存创建价格:{{symbol}}{{price}} / 1M tokens": "Cache creation price: {{symbol}}{{price}} / 1M tokens",
"缓存创建价格 {{symbol}}{{price}} / 1M tokens": "Cache creation price {{symbol}}{{price}} / 1M tokens", "缓存创建价格 {{symbol}}{{price}} / 1M tokens": "Cache creation price {{symbol}}{{price}} / 1M tokens",
...@@ -2510,7 +2501,6 @@ ...@@ -2510,7 +2501,6 @@
"输入与缓存价格合计 * {{ratioType}} {{ratio}} = {{symbol}}{{total}}": "Input and cache pricing subtotal * {{ratioType}} {{ratio}} = {{symbol}}{{total}}", "输入与缓存价格合计 * {{ratioType}} {{ratio}} = {{symbol}}{{total}}": "Input and cache pricing subtotal * {{ratioType}} {{ratio}} = {{symbol}}{{total}}",
"补全价格:{{symbol}}{{price}} * {{completionRatio}} = {{symbol}}{{total}} / 1M tokens (补全倍率: {{completionRatio}})": "Completion price: {{symbol}}{{price}} * {{completionRatio}} = {{symbol}}{{total}} / 1M tokens (Completion ratio: {{completionRatio}})", "补全价格:{{symbol}}{{price}} * {{completionRatio}} = {{symbol}}{{total}} / 1M tokens (补全倍率: {{completionRatio}})": "Completion price: {{symbol}}{{price}} * {{completionRatio}} = {{symbol}}{{total}} / 1M tokens (Completion ratio: {{completionRatio}})",
"补全价格:{{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens": "Completion price: {{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens", "补全价格:{{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens": "Completion price: {{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens",
"补全价格 {{symbol}}{{price}} / 1M tokens": "Completion price {{symbol}}{{price}} / 1M tokens",
"补全倍率": "Completion ratio", "补全倍率": "Completion ratio",
"补全倍率值": "Completion Ratio Value", "补全倍率值": "Completion Ratio Value",
"补单": "Complete Order", "补单": "Complete Order",
...@@ -2521,7 +2511,7 @@ ...@@ -2521,7 +2511,7 @@
"覆盖模式:将完全替换现有的所有密钥": "Overwrite mode: completely replace all existing keys", "覆盖模式:将完全替换现有的所有密钥": "Overwrite mode: completely replace all existing keys",
"覆盖模板": "", "覆盖模板": "",
"覆盖现有密钥": "Overwrite existing key", "覆盖现有密钥": "Overwrite existing key",
"规则": "", "规则": "Rule",
"规则 JSON": "", "规则 JSON": "",
"规则 JSON 格式不正确": "", "规则 JSON 格式不正确": "",
"规则 ttl_seconds 为 0 时使用。0 表示使用后端默认 TTL:3600 秒。": "", "规则 ttl_seconds 为 0 时使用。0 表示使用后端默认 TTL:3600 秒。": "",
...@@ -2551,7 +2541,7 @@ ...@@ -2551,7 +2541,7 @@
"订阅套餐": "Subscription Plans", "订阅套餐": "Subscription Plans",
"订阅套餐管理": "Subscription Plan Management", "订阅套餐管理": "Subscription Plan Management",
"订阅实例": "", "订阅实例": "",
"订阅抵扣": "", "订阅抵扣": "Subscription deduction",
"订阅管理": "Subscription Management", "订阅管理": "Subscription Management",
"订阅结算": "", "订阅结算": "",
"订阅说明": "", "订阅说明": "",
...@@ -2942,7 +2932,7 @@ ...@@ -2942,7 +2932,7 @@
"进度": "Progress", "进度": "Progress",
"进行中": "Ongoing", "进行中": "Ongoing",
"进行该操作时,可能导致渠道访问错误,请仅在数据库出现问题时使用": "When performing this operation, it may cause channel access errors. Please only use it when there is a problem with the database.", "进行该操作时,可能导致渠道访问错误,请仅在数据库出现问题时使用": "When performing this operation, it may cause channel access errors. Please only use it when there is a problem with the database.",
"违规扣费": "", "违规扣费": "Violation deduction",
"违规扣费金额": "Violation deduction amount", "违规扣费金额": "Violation deduction amount",
"连接保活设置": "Connection Keep-alive Settings", "连接保活设置": "Connection Keep-alive Settings",
"连接已断开": "Connection Disconnected", "连接已断开": "Connection Disconnected",
...@@ -3292,12 +3282,33 @@ ...@@ -3292,12 +3282,33 @@
"音频输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 音频倍率 {{audioRatio}} * 音频补全倍率 {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Audio output: {{tokens}} / 1M * model ratio {{modelRatio}} * audio ratio {{audioRatio}} * audio completion ratio {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "音频输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 音频倍率 {{audioRatio}} * 音频补全倍率 {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Audio output: {{tokens}} / 1M * model ratio {{modelRatio}} * audio ratio {{audioRatio}} * audio completion ratio {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"合计:文字部分 {{textTotal}} + 音频部分 {{audioTotal}} = {{total}}": "Total: text {{textTotal}} + audio {{audioTotal}} = {{total}}", "合计:文字部分 {{textTotal}} + 音频部分 {{audioTotal}} = {{total}}": "Total: text {{textTotal}} + audio {{audioTotal}} = {{total}}",
"模型倍率 {{modelRatio}},输出倍率 {{completionRatio}},缓存倍率 {{cacheRatio}},{{ratioType}} {{ratio}}": "Model ratio {{modelRatio}}, output ratio {{completionRatio}}, cache ratio {{cacheRatio}}, {{ratioType}} {{ratio}}", "模型倍率 {{modelRatio}},输出倍率 {{completionRatio}},缓存倍率 {{cacheRatio}},{{ratioType}} {{ratio}}": "Model ratio {{modelRatio}}, output ratio {{completionRatio}}, cache ratio {{cacheRatio}}, {{ratioType}} {{ratio}}",
"缓存创建倍率 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}": "Cache creation ratio 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}",
"缓存读取:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Cache read: {{tokens}} / 1M * model ratio {{modelRatio}} * cache ratio {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "缓存读取:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Cache read: {{tokens}} / 1M * model ratio {{modelRatio}} * cache ratio {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存创建倍率 {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Cache creation: {{tokens}} / 1M * model ratio {{modelRatio}} * cache creation ratio {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存创建倍率 {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Cache creation: {{tokens}} / 1M * model ratio {{modelRatio}} * cache creation ratio {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"5m缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 5m缓存创建倍率 {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}": "5m cache creation: {{tokens}} / 1M * model ratio {{modelRatio}} * 5m cache creation ratio {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}", "5m缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 5m缓存创建倍率 {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}": "5m cache creation: {{tokens}} / 1M * model ratio {{modelRatio}} * 5m cache creation ratio {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}",
"1h缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 1h缓存创建倍率 {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}": "1h cache creation: {{tokens}} / 1M * model ratio {{modelRatio}} * 1h cache creation ratio {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}", "1h缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 1h缓存创建倍率 {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}": "1h cache creation: {{tokens}} / 1M * model ratio {{modelRatio}} * 1h cache creation ratio {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}",
"输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 输出倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Output: {{tokens}} / 1M * model ratio {{modelRatio}} * output ratio {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 输出倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Output: {{tokens}} / 1M * model ratio {{modelRatio}} * output ratio {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"空": "Empty" "空": "Empty",
"{{ratioType}} {{ratio}}x": "{{ratioType}} {{ratio}}x",
"模型价格:{{symbol}}{{price}}": "Model price: {{symbol}}{{price}}",
"模型价格 {{price}}": "Model price {{price}}",
"缓存读 {{price}} / 1M tokens": "Cache read {{price}} / 1M tokens",
"5m缓存创建 {{price}} / 1M tokens": "5m cache creation {{price}} / 1M tokens",
"1h缓存创建 {{price}} / 1M tokens": "1h cache creation {{price}} / 1M tokens",
"缓存创建 {{price}} / 1M tokens": "Cache creation {{price}} / 1M tokens",
"图片输入 {{price}} / 1M tokens": "Image input {{price}} / 1M tokens",
"输入 {{price}} / 1M tokens": "Input {{price}} / 1M tokens",
"缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "Cache creation {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
"5m缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "5m cache creation {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
"1h缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "1h cache creation {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
"(输入 {{nonImageInput}} tokens + 图片输入 {{imageInput}} tokens / 1M tokens * {{symbol}}{{price}}": "(Input {{nonImageInput}} tokens + Image input {{imageInput}} tokens / 1M tokens * {{symbol}}{{price}}",
"图片输入价格:{{symbol}}{{total}} / 1M tokens": "Image input price: {{symbol}}{{total}} / 1M tokens",
"文字提示 {{input}} tokens / 1M tokens * {{symbol}}{{textInputPrice}} + 文字补全 {{completion}} tokens / 1M tokens * {{symbol}}{{textCompPrice}} + 音频提示 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioInputPrice}} + 音频补全 {{audioCompletion}} tokens / 1M tokens * {{symbol}}{{audioCompPrice}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}": "Text prompt {{input}} tokens / 1M tokens * {{symbol}}{{textInputPrice}} + Text completion {{completion}} tokens / 1M tokens * {{symbol}}{{textCompPrice}} + Audio prompt {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioInputPrice}} + Audio completion {{audioCompletion}} tokens / 1M tokens * {{symbol}}{{audioCompPrice}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}",
"缓存读取价格:{{symbol}}{{total}} / 1M tokens": "Cache read price: {{symbol}}{{total}} / 1M tokens",
"补全 {{completion}} tokens * 输出倍率 {{completionRatio}}": "Completion {{completion}} tokens * Output ratio {{completionRatio}}",
"补全倍率 {{completionRatio}}": "Completion ratio {{completionRatio}}",
"输入价格:{{symbol}}{{price}} / 1M tokens": "Input Price: {{symbol}}{{price}} / 1M tokens",
"输出价格 {{symbol}}{{price}} / 1M tokens": "Output Price {{symbol}}{{price}} / 1M tokens",
"输出价格:{{symbol}}{{price}} / 1M tokens": "Output Price: {{symbol}}{{price}} / 1M tokens",
"输出价格:{{symbol}}{{total}} / 1M tokens": "Output Price: {{symbol}}{{total}} / 1M tokens"
} }
} }
...@@ -21,7 +21,6 @@ ...@@ -21,7 +21,6 @@
"(输入 {{input}} tokens / 1M tokens * {{symbol}}{{price}}": "(Entrée {{input}} tokens / 1M tokens * {{symbol}}{{price}}", "(输入 {{input}} tokens / 1M tokens * {{symbol}}{{price}}": "(Entrée {{input}} tokens / 1M tokens * {{symbol}}{{price}}",
"(输入 {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + 音频输入 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}": "(Entrée {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + Entrée audio {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}", "(输入 {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + 音频输入 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}": "(Entrée {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + Entrée audio {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}",
"(输入 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + 缓存 {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}": "(Entrée {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + Cache {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}", "(输入 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + 缓存 {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}": "(Entrée {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + Cache {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}",
"(输入 {{nonImageInput}} tokens + 图片输入 {{imageInput}} tokens * {{imageRatio}} / 1M tokens * {{symbol}}{{price}}": "(Entrée {{nonImageInput}} tokens + Entrée image {{imageInput}} tokens * {{imageRatio}} / 1M tokens * {{symbol}}{{price}}",
"[最多请求次数]和[最多请求完成次数]的最大值为2147483647。": "La valeur maximale de [Nombre maximal de requêtes] et [Nombre maximal d'achèvements de requêtes] est 2147483647.", "[最多请求次数]和[最多请求完成次数]的最大值为2147483647。": "La valeur maximale de [Nombre maximal de requêtes] et [Nombre maximal d'achèvements de requêtes] est 2147483647.",
"[最多请求次数]必须大于等于0,[最多请求完成次数]必须大于等于1。": "[Nombre maximal de requêtes] doit être supérieur ou égal à 0, [Nombre maximal d'achèvements de requêtes] doit être supérieur ou égal à 1.", "[最多请求次数]必须大于等于0,[最多请求完成次数]必须大于等于1。": "[Nombre maximal de requêtes] doit être supérieur ou égal à 0, [Nombre maximal d'achèvements de requêtes] doit être supérieur ou égal à 1.",
"{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}": "{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}", "{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}": "{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}",
...@@ -155,10 +154,10 @@ ...@@ -155,10 +154,10 @@
"JSON格式错误": "Erreur de format JSON", "JSON格式错误": "Erreur de format JSON",
"JSON编辑": "Édition JSON", "JSON编辑": "Édition JSON",
"JSON解析错误:": "Erreur d'analyse JSON :", "JSON解析错误:": "Erreur d'analyse JSON :",
"Key": "", "Key": "Key",
"Key 或 Path": "", "Key 或 Path": "",
"Key 指纹": "", "Key 指纹": "",
"Key 摘要": "", "Key 摘要": "Résumé de Key",
"Key 来源": "", "Key 来源": "",
"Key 来源类型": "", "Key 来源类型": "",
"Linux DO Client ID": "ID client Linux DO", "Linux DO Client ID": "ID client Linux DO",
...@@ -1366,7 +1365,7 @@ ...@@ -1366,7 +1365,7 @@
"打开 CC Switch": "", "打开 CC Switch": "",
"打开侧边栏": "Ouvrir la barre latérale", "打开侧边栏": "Ouvrir la barre latérale",
"打开授权页面": "", "打开授权页面": "",
"扣费": "", "扣费": "Déduction",
"执行 GC": "", "执行 GC": "",
"执行中": "En cours", "执行中": "En cours",
"扫描二维码": "Scanner le code QR", "扫描二维码": "Scanner le code QR",
...@@ -1782,6 +1781,7 @@ ...@@ -1782,6 +1781,7 @@
"模型价格": "Prix du modèle", "模型价格": "Prix du modèle",
"模型价格 {{symbol}}{{price}},{{ratioType}} {{ratio}}": "Prix du modèle {{symbol}}{{price}}, {{ratioType}} {{ratio}}", "模型价格 {{symbol}}{{price}},{{ratioType}} {{ratio}}": "Prix du modèle {{symbol}}{{price}}, {{ratioType}} {{ratio}}",
"模型价格:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}": "Prix du modèle : {{symbol}}{{price}} * {{ratioType}} : {{ratio}} = {{symbol}}{{total}}", "模型价格:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}": "Prix du modèle : {{symbol}}{{price}} * {{ratioType}} : {{ratio}} = {{symbol}}{{total}}",
"按次:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}": "Par requête : {{symbol}}{{price}} * {{ratioType}} : {{ratio}} = {{symbol}}{{total}}",
"模型倍率": "Ratio", "模型倍率": "Ratio",
"模型倍率 {{modelRatio}}": "Ratio du modèle {{modelRatio}}", "模型倍率 {{modelRatio}}": "Ratio du modèle {{modelRatio}}",
"模型倍率 {{modelRatio}},缓存倍率 {{cacheRatio}},输出倍率 {{completionRatio}},{{ratioType}} {{ratio}}": "Ratio du modèle {{modelRatio}}, ratio de cache {{cacheRatio}}, ratio de complétion {{completionRatio}}, {{ratioType}} {{ratio}}", "模型倍率 {{modelRatio}},缓存倍率 {{cacheRatio}},输出倍率 {{completionRatio}},{{ratioType}} {{ratio}}": "Ratio du modèle {{modelRatio}}, ratio de cache {{cacheRatio}}, ratio de complétion {{completionRatio}}, {{ratioType}} {{ratio}}",
...@@ -1976,7 +1976,7 @@ ...@@ -1976,7 +1976,7 @@
"渠道": "Canal", "渠道": "Canal",
"渠道 ID": "ID du Canal", "渠道 ID": "ID du Canal",
"渠道ID,名称,密钥,API地址": "ID du canal, nom, clé, URL de base", "渠道ID,名称,密钥,API地址": "ID du canal, nom, clé, URL de base",
"渠道亲和性": "", "渠道亲和性": "Affinité de canal",
"渠道亲和性:上游缓存命中": "", "渠道亲和性:上游缓存命中": "",
"渠道亲和性会基于从请求上下文或 JSON Body 提取的 Key,优先复用上一次成功的渠道。": "", "渠道亲和性会基于从请求上下文或 JSON Body 提取的 Key,优先复用上一次成功的渠道。": "",
"渠道优先级": "Priorité du canal", "渠道优先级": "Priorité du canal",
...@@ -2075,7 +2075,7 @@ ...@@ -2075,7 +2075,7 @@
"用户账户管理": "Comptes utilisateurs", "用户账户管理": "Comptes utilisateurs",
"用时/首字": "Temps/premier mot", "用时/首字": "Temps/premier mot",
"由全站货币展示设置统一控制": "Contrôlé par les paramètres globaux d'affichage des devises", "由全站货币展示设置统一控制": "Contrôlé par les paramètres globaux d'affichage des devises",
"由订阅抵扣": "", "由订阅抵扣": "Déduit par l'abonnement",
"界面语言和其他个人偏好": "", "界面语言和其他个人偏好": "",
"留空使用系统临时目录": "", "留空使用系统临时目录": "",
"留空则使用账号绑定的邮箱": "Si ce champ est laissé vide, l'adresse e-mail liée au compte sera utilisée", "留空则使用账号绑定的邮箱": "Si ce champ est laissé vide, l'adresse e-mail liée au compte sera utilisée",
...@@ -2348,7 +2348,7 @@ ...@@ -2348,7 +2348,7 @@
"缓存创建倍率 {{cacheCreationRatio}}": "Ratio de création de cache {{cacheCreationRatio}}", "缓存创建倍率 {{cacheCreationRatio}}": "Ratio de création de cache {{cacheCreationRatio}}",
"缓存创建倍率 1h {{cacheCreationRatio1h}}": "Multiplicateur de création de cache 1h {{cacheCreationRatio1h}}", "缓存创建倍率 1h {{cacheCreationRatio1h}}": "Multiplicateur de création de cache 1h {{cacheCreationRatio1h}}",
"缓存创建倍率 5m {{cacheCreationRatio5m}}": "Multiplicateur de création de cache 5m {{cacheCreationRatio5m}}", "缓存创建倍率 5m {{cacheCreationRatio5m}}": "Multiplicateur de création de cache 5m {{cacheCreationRatio5m}}",
"缓存创建倍率 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}": "Ratio de création de cache 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}", "缓存创建倍率 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}": "Ratio de création du cache 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}",
"缓存条目数": "", "缓存条目数": "",
"缓存目录": "", "缓存目录": "",
"缓存目录磁盘空间": "", "缓存目录磁盘空间": "",
...@@ -2471,7 +2471,7 @@ ...@@ -2471,7 +2471,7 @@
"覆盖模式:将完全替换现有的所有密钥": "Mode de remplacement : remplacera complètement toutes les clés existantes", "覆盖模式:将完全替换现有的所有密钥": "Mode de remplacement : remplacera complètement toutes les clés existantes",
"覆盖模板": "", "覆盖模板": "",
"覆盖现有密钥": "Remplacer les clés existantes", "覆盖现有密钥": "Remplacer les clés existantes",
"规则": "", "规则": "Règle",
"规则 JSON": "", "规则 JSON": "",
"规则 JSON 格式不正确": "", "规则 JSON 格式不正确": "",
"规则 ttl_seconds 为 0 时使用。0 表示使用后端默认 TTL:3600 秒。": "", "规则 ttl_seconds 为 0 时使用。0 表示使用后端默认 TTL:3600 秒。": "",
...@@ -2501,7 +2501,7 @@ ...@@ -2501,7 +2501,7 @@
"订阅套餐": "Plans d'abonnement", "订阅套餐": "Plans d'abonnement",
"订阅套餐管理": "Gestion des plans d'abonnement", "订阅套餐管理": "Gestion des plans d'abonnement",
"订阅实例": "", "订阅实例": "",
"订阅抵扣": "", "订阅抵扣": "Déduction d'abonnement",
"订阅管理": "Gestion des abonnements", "订阅管理": "Gestion des abonnements",
"订阅结算": "", "订阅结算": "",
"订阅说明": "", "订阅说明": "",
...@@ -2888,7 +2888,7 @@ ...@@ -2888,7 +2888,7 @@
"进度": "calendrier", "进度": "calendrier",
"进行中": "En cours", "进行中": "En cours",
"进行该操作时,可能导致渠道访问错误,请仅在数据库出现问题时使用": "Lors de cette opération, cela peut entraîner des erreurs d'accès au canal. Veuillez ne l'utiliser que lorsqu'il y a un problème avec la base de données.", "进行该操作时,可能导致渠道访问错误,请仅在数据库出现问题时使用": "Lors de cette opération, cela peut entraîner des erreurs d'accès au canal. Veuillez ne l'utiliser que lorsqu'il y a un problème avec la base de données.",
"违规扣费": "", "违规扣费": "Déduction pour violation",
"违规扣费金额": "Montant de la déduction de violation", "违规扣费金额": "Montant de la déduction de violation",
"连接保活设置": "Maintien connexion", "连接保活设置": "Maintien connexion",
"连接已断开": "Connexion interrompue", "连接已断开": "Connexion interrompue",
...@@ -3208,7 +3208,9 @@ ...@@ -3208,7 +3208,9 @@
"计费显示模式": "Mode d'affichage de la facturation", "计费显示模式": "Mode d'affichage de la facturation",
"价格模式(默认)": "Mode prix (par défaut)", "价格模式(默认)": "Mode prix (par défaut)",
"模型价格 {{symbol}}{{price}} / 次": "Prix du modèle {{symbol}}{{price}} / requête", "模型价格 {{symbol}}{{price}} / 次": "Prix du modèle {{symbol}}{{price}} / requête",
"按次 {{symbol}}{{price}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}": "Par requête {{symbol}}{{price}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}",
"模型价格:{{symbol}}{{price}} / 次": "Prix du modèle : {{symbol}}{{price}} / requête", "模型价格:{{symbol}}{{price}} / 次": "Prix du modèle : {{symbol}}{{price}} / requête",
"按次:{{symbol}}{{price}}": "Par requête : {{symbol}}{{price}}",
"实际结算金额:{{symbol}}{{total}}(已包含分组价格调整)": "Montant facturé réel : {{symbol}}{{total}} (ajustement tarifaire de groupe inclus)", "实际结算金额:{{symbol}}{{total}}(已包含分组价格调整)": "Montant facturé réel : {{symbol}}{{total}} (ajustement tarifaire de groupe inclus)",
"缓存读取价格:{{symbol}}{{price}} / 1M tokens": "Prix de lecture du cache : {{symbol}}{{price}} / 1M tokens", "缓存读取价格:{{symbol}}{{price}} / 1M tokens": "Prix de lecture du cache : {{symbol}}{{price}} / 1M tokens",
"缓存读取价格 {{symbol}}{{price}} / 1M tokens": "Prix de lecture du cache {{symbol}}{{price}} / 1M tokens", "缓存读取价格 {{symbol}}{{price}} / 1M tokens": "Prix de lecture du cache {{symbol}}{{price}} / 1M tokens",
...@@ -3221,7 +3223,6 @@ ...@@ -3221,7 +3223,6 @@
"图片输入价格:{{symbol}}{{price}} / 1M tokens": "Prix d'entrée image : {{symbol}}{{price}} / 1M tokens", "图片输入价格:{{symbol}}{{price}} / 1M tokens": "Prix d'entrée image : {{symbol}}{{price}} / 1M tokens",
"图片输入价格 {{symbol}}{{price}} / 1M tokens": "Prix d'entrée image {{symbol}}{{price}} / 1M tokens", "图片输入价格 {{symbol}}{{price}} / 1M tokens": "Prix d'entrée image {{symbol}}{{price}} / 1M tokens",
"输入价格 {{symbol}}{{price}} / 1M tokens": "Prix d'entrée {{symbol}}{{price}} / 1M tokens", "输入价格 {{symbol}}{{price}} / 1M tokens": "Prix d'entrée {{symbol}}{{price}} / 1M tokens",
"补全价格 {{symbol}}{{price}} / 1M tokens": "Prix de complétion {{symbol}}{{price}} / 1M tokens",
"音频输入价格:{{symbol}}{{price}} / 1M tokens": "Prix d'entrée audio : {{symbol}}{{price}} / 1M tokens", "音频输入价格:{{symbol}}{{price}} / 1M tokens": "Prix d'entrée audio : {{symbol}}{{price}} / 1M tokens",
"音频补全价格:{{symbol}}{{price}} / 1M tokens": "Prix de complétion audio : {{symbol}}{{price}} / 1M tokens", "音频补全价格:{{symbol}}{{price}} / 1M tokens": "Prix de complétion audio : {{symbol}}{{price}} / 1M tokens",
"Web 搜索调用 {{webSearchCallCount}} 次": "Recherche Web appelée {{webSearchCallCount}} fois", "Web 搜索调用 {{webSearchCallCount}} 次": "Recherche Web appelée {{webSearchCallCount}} fois",
...@@ -3242,12 +3243,35 @@ ...@@ -3242,12 +3243,35 @@
"音频输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 音频倍率 {{audioRatio}} * 音频补全倍率 {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Sortie audio : {{tokens}} / 1M * ratio du modèle {{modelRatio}} * ratio audio {{audioRatio}} * ratio de complétion audio {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "音频输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 音频倍率 {{audioRatio}} * 音频补全倍率 {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Sortie audio : {{tokens}} / 1M * ratio du modèle {{modelRatio}} * ratio audio {{audioRatio}} * ratio de complétion audio {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"合计:文字部分 {{textTotal}} + 音频部分 {{audioTotal}} = {{total}}": "Total : partie texte {{textTotal}} + partie audio {{audioTotal}} = {{total}}", "合计:文字部分 {{textTotal}} + 音频部分 {{audioTotal}} = {{total}}": "Total : partie texte {{textTotal}} + partie audio {{audioTotal}} = {{total}}",
"模型倍率 {{modelRatio}},输出倍率 {{completionRatio}},缓存倍率 {{cacheRatio}},{{ratioType}} {{ratio}}": "Ratio du modèle {{modelRatio}}, ratio de sortie {{completionRatio}}, ratio du cache {{cacheRatio}}, {{ratioType}} {{ratio}}", "模型倍率 {{modelRatio}},输出倍率 {{completionRatio}},缓存倍率 {{cacheRatio}},{{ratioType}} {{ratio}}": "Ratio du modèle {{modelRatio}}, ratio de sortie {{completionRatio}}, ratio du cache {{cacheRatio}}, {{ratioType}} {{ratio}}",
"缓存创建倍率 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}": "Ratio de création du cache 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}",
"缓存读取:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Lecture du cache : {{tokens}} / 1M * ratio du modèle {{modelRatio}} * ratio du cache {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "缓存读取:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Lecture du cache : {{tokens}} / 1M * ratio du modèle {{modelRatio}} * ratio du cache {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存创建倍率 {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Création du cache : {{tokens}} / 1M * ratio du modèle {{modelRatio}} * ratio de création du cache {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存创建倍率 {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Création du cache : {{tokens}} / 1M * ratio du modèle {{modelRatio}} * ratio de création du cache {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"5m缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 5m缓存创建倍率 {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}": "Création du cache 5m : {{tokens}} / 1M * ratio du modèle {{modelRatio}} * ratio de création du cache 5m {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}", "5m缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 5m缓存创建倍率 {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}": "Création du cache 5m : {{tokens}} / 1M * ratio du modèle {{modelRatio}} * ratio de création du cache 5m {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}",
"1h缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 1h缓存创建倍率 {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}": "Création du cache 1h : {{tokens}} / 1M * ratio du modèle {{modelRatio}} * ratio de création du cache 1h {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}", "1h缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 1h缓存创建倍率 {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}": "Création du cache 1h : {{tokens}} / 1M * ratio du modèle {{modelRatio}} * ratio de création du cache 1h {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}",
"输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 输出倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Sortie : {{tokens}} / 1M * ratio du modèle {{modelRatio}} * ratio de sortie {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 输出倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Sortie : {{tokens}} / 1M * ratio du modèle {{modelRatio}} * ratio de sortie {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"空": "Vide" "空": "Vide",
"{{ratioType}} {{ratio}}x": "{{ratioType}} {{ratio}}x",
"模型价格:{{symbol}}{{price}}": "Prix du modèle : {{symbol}}{{price}}",
"模型价格 {{price}}": "Prix du modèle {{price}}",
"缓存读 {{price}} / 1M tokens": "Lecture du cache {{price}} / 1M tokens",
"5m缓存创建 {{price}} / 1M tokens": "Création de cache 5m {{price}} / 1M tokens",
"1h缓存创建 {{price}} / 1M tokens": "Création de cache 1h {{price}} / 1M tokens",
"缓存创建 {{price}} / 1M tokens": "Création de cache {{price}} / 1M tokens",
"图片输入 {{price}} / 1M tokens": "Entrée image {{price}} / 1M tokens",
"输入 {{price}} / 1M tokens": "Entrée {{price}} / 1M tokens",
"缓存 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "Cache {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
"缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "Création de cache {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
"5m缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "Création de cache 5m {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
"1h缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "Création de cache 1h {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
"(输入 {{nonImageInput}} tokens + 图片输入 {{imageInput}} tokens / 1M tokens * {{symbol}}{{price}}": "(Entrée {{nonImageInput}} tokens + Entrée image {{imageInput}} tokens / 1M tokens * {{symbol}}{{price}}",
"图片输入价格:{{symbol}}{{total}} / 1M tokens": "Prix d'entrée image : {{symbol}}{{total}} / 1M tokens",
"文字提示 {{input}} tokens / 1M tokens * {{symbol}}{{textInputPrice}} + 文字补全 {{completion}} tokens / 1M tokens * {{symbol}}{{textCompPrice}} + 音频提示 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioInputPrice}} + 音频补全 {{audioCompletion}} tokens / 1M tokens * {{symbol}}{{audioCompPrice}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}": "Prompt texte {{input}} tokens / 1M tokens * {{symbol}}{{textInputPrice}} + Complétion texte {{completion}} tokens / 1M tokens * {{symbol}}{{textCompPrice}} + Prompt audio {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioInputPrice}} + Complétion audio {{audioCompletion}} tokens / 1M tokens * {{symbol}}{{audioCompPrice}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}",
"模型价格 {{symbol}}{{price}} / 次 * {{ratioType}} {{ratio}} = {{symbol}}{{total}}": "Prix du modèle {{symbol}}{{price}} / requête * {{ratioType}} {{ratio}} = {{symbol}}{{total}}",
"缓存读取价格:{{symbol}}{{total}} / 1M tokens": "Prix de lecture du cache : {{symbol}}{{total}} / 1M tokens",
"补全 {{completion}} tokens * 输出倍率 {{completionRatio}}": "Complétion {{completion}} tokens * Ratio de sortie {{completionRatio}}",
"补全倍率 {{completionRatio}}": "Ratio de complétion {{completionRatio}}",
"输入价格:{{symbol}}{{price}} / 1M tokens": "Prix d'entrée : {{symbol}}{{price}} / 1M tokens",
"输出价格 {{symbol}}{{price}} / 1M tokens": "Prix de sortie {{symbol}}{{price}} / 1M tokens",
"输出价格:{{symbol}}{{price}} / 1M tokens": "Prix de sortie : {{symbol}}{{price}} / 1M tokens",
"输出价格:{{symbol}}{{total}} / 1M tokens": "Prix de sortie : {{symbol}}{{total}} / 1M tokens"
} }
} }
...@@ -17,7 +17,6 @@ ...@@ -17,7 +17,6 @@
"(输入 {{input}} tokens / 1M tokens * {{symbol}}{{price}}": "(入力 {{input}} tokens / 1M tokens * {{symbol}}{{price}}", "(输入 {{input}} tokens / 1M tokens * {{symbol}}{{price}}": "(入力 {{input}} tokens / 1M tokens * {{symbol}}{{price}}",
"(输入 {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + 音频输入 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}": "(入力 {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + オーディオ入力 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}", "(输入 {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + 音频输入 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}": "(入力 {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + オーディオ入力 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}",
"(输入 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + 缓存 {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}": "(入力 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + キャッシュ {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}", "(输入 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + 缓存 {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}": "(入力 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + キャッシュ {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}",
"(输入 {{nonImageInput}} tokens + 图片输入 {{imageInput}} tokens * {{imageRatio}} / 1M tokens * {{symbol}}{{price}}": "(入力 {{nonImageInput}} tokens + 画像入力 {{imageInput}} tokens * {{imageRatio}} / 1M tokens * {{symbol}}{{price}}",
"[最多请求次数]和[最多请求完成次数]的最大值为2147483647。": "[最大リクエスト数]と[最大成功リクエスト数]の最大値は2147483647です", "[最多请求次数]和[最多请求完成次数]的最大值为2147483647。": "[最大リクエスト数]と[最大成功リクエスト数]の最大値は2147483647です",
"[最多请求次数]必须大于等于0,[最多请求完成次数]必须大于等于1。": "[最大リクエスト数]は0以上、[最大成功リクエスト数]は1以上である必要があります", "[最多请求次数]必须大于等于0,[最多请求完成次数]必须大于等于1。": "[最大リクエスト数]は0以上、[最大成功リクエスト数]は1以上である必要があります",
"{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}": "{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}", "{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}": "{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}",
...@@ -151,10 +150,10 @@ ...@@ -151,10 +150,10 @@
"JSON格式错误": "JSON形式エラー", "JSON格式错误": "JSON形式エラー",
"JSON编辑": "JSON編集", "JSON编辑": "JSON編集",
"JSON解析错误:": "JSONの解析エラー:", "JSON解析错误:": "JSONの解析エラー:",
"Key": "", "Key": "Key",
"Key 或 Path": "", "Key 或 Path": "",
"Key 指纹": "", "Key 指纹": "",
"Key 摘要": "", "Key 摘要": "Key 要約",
"Key 来源": "", "Key 来源": "",
"Key 来源类型": "", "Key 来源类型": "",
"Linux DO Client ID": "Linux DO Client ID", "Linux DO Client ID": "Linux DO Client ID",
...@@ -1349,7 +1348,7 @@ ...@@ -1349,7 +1348,7 @@
"打开 CC Switch": "", "打开 CC Switch": "",
"打开侧边栏": "サイドバーを展開", "打开侧边栏": "サイドバーを展開",
"打开授权页面": "", "打开授权页面": "",
"扣费": "", "扣费": "課金",
"执行 GC": "", "执行 GC": "",
"执行中": "実行中", "执行中": "実行中",
"扫描二维码": "QRコードスキャン", "扫描二维码": "QRコードスキャン",
...@@ -1765,6 +1764,7 @@ ...@@ -1765,6 +1764,7 @@
"模型价格": "モデル料金", "模型价格": "モデル料金",
"模型价格 {{symbol}}{{price}},{{ratioType}} {{ratio}}": "モデル料金 {{symbol}}{{price}}、{{ratioType}} {{ratio}}", "模型价格 {{symbol}}{{price}},{{ratioType}} {{ratio}}": "モデル料金 {{symbol}}{{price}}、{{ratioType}} {{ratio}}",
"模型价格:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}": "モデル料金:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}", "模型价格:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}": "モデル料金:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}",
"按次:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}": "リクエストごと:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}",
"模型倍率": "モデル倍率", "模型倍率": "モデル倍率",
"模型倍率 {{modelRatio}}": "Model ratio {{modelRatio}}", "模型倍率 {{modelRatio}}": "Model ratio {{modelRatio}}",
"模型倍率 {{modelRatio}},缓存倍率 {{cacheRatio}},输出倍率 {{completionRatio}},{{ratioType}} {{ratio}}": "モデル倍率 {{modelRatio}}、キャッシュ倍率 {{cacheRatio}}、補完倍率 {{completionRatio}}、{{ratioType}} {{ratio}}", "模型倍率 {{modelRatio}},缓存倍率 {{cacheRatio}},输出倍率 {{completionRatio}},{{ratioType}} {{ratio}}": "モデル倍率 {{modelRatio}}、キャッシュ倍率 {{cacheRatio}}、補完倍率 {{completionRatio}}、{{ratioType}} {{ratio}}",
...@@ -1959,7 +1959,7 @@ ...@@ -1959,7 +1959,7 @@
"渠道": "チャネル", "渠道": "チャネル",
"渠道 ID": "チャネルID", "渠道 ID": "チャネルID",
"渠道ID,名称,密钥,API地址": "チャネルID\\名称\\キー\\ベースURL", "渠道ID,名称,密钥,API地址": "チャネルID\\名称\\キー\\ベースURL",
"渠道亲和性": "", "渠道亲和性": "チャネル親和性",
"渠道亲和性:上游缓存命中": "", "渠道亲和性:上游缓存命中": "",
"渠道亲和性会基于从请求上下文或 JSON Body 提取的 Key,优先复用上一次成功的渠道。": "", "渠道亲和性会基于从请求上下文或 JSON Body 提取的 Key,优先复用上一次成功的渠道。": "",
"渠道优先级": "チャネル優先度", "渠道优先级": "チャネル優先度",
...@@ -2058,7 +2058,7 @@ ...@@ -2058,7 +2058,7 @@
"用户账户管理": "ユーザーアカウント管理", "用户账户管理": "ユーザーアカウント管理",
"用时/首字": "所要時間 / 初回トークン", "用时/首字": "所要時間 / 初回トークン",
"由全站货币展示设置统一控制": "サイト全体の通貨表示設定で統一して管理", "由全站货币展示设置统一控制": "サイト全体の通貨表示設定で統一して管理",
"由订阅抵扣": "", "由订阅抵扣": "サブスクリプションで相殺",
"界面语言和其他个人偏好": "", "界面语言和其他个人偏好": "",
"留空使用系统临时目录": "", "留空使用系统临时目录": "",
"留空则使用账号绑定的邮箱": "未入力の場合、アカウントに登録されているメールアドレスが使用されます", "留空则使用账号绑定的邮箱": "未入力の場合、アカウントに登録されているメールアドレスが使用されます",
...@@ -2329,7 +2329,7 @@ ...@@ -2329,7 +2329,7 @@
"缓存创建倍率 {{cacheCreationRatio}}": "Cache creation ratio {{cacheCreationRatio}}", "缓存创建倍率 {{cacheCreationRatio}}": "Cache creation ratio {{cacheCreationRatio}}",
"缓存创建倍率 1h {{cacheCreationRatio1h}}": "キャッシュ作成倍率 1h {{cacheCreationRatio1h}}", "缓存创建倍率 1h {{cacheCreationRatio1h}}": "キャッシュ作成倍率 1h {{cacheCreationRatio1h}}",
"缓存创建倍率 5m {{cacheCreationRatio5m}}": "キャッシュ作成倍率 5m {{cacheCreationRatio5m}}", "缓存创建倍率 5m {{cacheCreationRatio5m}}": "キャッシュ作成倍率 5m {{cacheCreationRatio5m}}",
"缓存创建倍率 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}": "Cache creation ratio 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}", "缓存创建倍率 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}": "キャッシュ作成倍率 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}",
"缓存条目数": "", "缓存条目数": "",
"缓存目录": "", "缓存目录": "",
"缓存目录磁盘空间": "", "缓存目录磁盘空间": "",
...@@ -2452,7 +2452,7 @@ ...@@ -2452,7 +2452,7 @@
"覆盖模式:将完全替换现有的所有密钥": "上書きモード:既存のすべてのAPIキーを完全に置き換えます", "覆盖模式:将完全替换现有的所有密钥": "上書きモード:既存のすべてのAPIキーを完全に置き換えます",
"覆盖模板": "", "覆盖模板": "",
"覆盖现有密钥": "既存のAPIキーを上書き", "覆盖现有密钥": "既存のAPIキーを上書き",
"规则": "", "规则": "ルール",
"规则 JSON": "", "规则 JSON": "",
"规则 JSON 格式不正确": "", "规则 JSON 格式不正确": "",
"规则 ttl_seconds 为 0 时使用。0 表示使用后端默认 TTL:3600 秒。": "", "规则 ttl_seconds 为 0 时使用。0 表示使用后端默认 TTL:3600 秒。": "",
...@@ -2482,7 +2482,7 @@ ...@@ -2482,7 +2482,7 @@
"订阅套餐": "サブスクリプションプラン", "订阅套餐": "サブスクリプションプラン",
"订阅套餐管理": "サブスクリプションプラン管理", "订阅套餐管理": "サブスクリプションプラン管理",
"订阅实例": "", "订阅实例": "",
"订阅抵扣": "", "订阅抵扣": "サブスクリプション控除",
"订阅管理": "サブスクリプション管理", "订阅管理": "サブスクリプション管理",
"订阅结算": "", "订阅结算": "",
"订阅说明": "", "订阅说明": "",
...@@ -2869,7 +2869,7 @@ ...@@ -2869,7 +2869,7 @@
"进度": "進捗", "进度": "進捗",
"进行中": "進行中", "进行中": "進行中",
"进行该操作时,可能导致渠道访问错误,请仅在数据库出现问题时使用": "この操作の実行時、チャネルへのアクセスエラーが発生する可能性があります。データベースに問題がある場合のみ使用してください", "进行该操作时,可能导致渠道访问错误,请仅在数据库出现问题时使用": "この操作の実行時、チャネルへのアクセスエラーが発生する可能性があります。データベースに問題がある場合のみ使用してください",
"违规扣费": "", "违规扣费": "違反課金",
"违规扣费金额": "違反課金金額", "违规扣费金额": "違反課金金額",
"连接保活设置": "接続キープアライブ設定", "连接保活设置": "接続キープアライブ設定",
"连接已断开": "接続が切断されました", "连接已断开": "接続が切断されました",
...@@ -3189,7 +3189,9 @@ ...@@ -3189,7 +3189,9 @@
"计费显示模式": "課金表示モード", "计费显示模式": "課金表示モード",
"价格模式(默认)": "価格モード(デフォルト)", "价格模式(默认)": "価格モード(デフォルト)",
"模型价格 {{symbol}}{{price}} / 次": "モデル価格 {{symbol}}{{price}} / リクエスト", "模型价格 {{symbol}}{{price}} / 次": "モデル価格 {{symbol}}{{price}} / リクエスト",
"按次 {{symbol}}{{price}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}": "リクエストごと {{symbol}}{{price}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}",
"模型价格:{{symbol}}{{price}} / 次": "モデル価格:{{symbol}}{{price}} / リクエスト", "模型价格:{{symbol}}{{price}} / 次": "モデル価格:{{symbol}}{{price}} / リクエスト",
"按次:{{symbol}}{{price}}": "リクエストごと:{{symbol}}{{price}}",
"实际结算金额:{{symbol}}{{total}}(已包含分组价格调整)": "実際の請求額:{{symbol}}{{total}}(グループ価格調整込み)", "实际结算金额:{{symbol}}{{total}}(已包含分组价格调整)": "実際の請求額:{{symbol}}{{total}}(グループ価格調整込み)",
"缓存读取价格:{{symbol}}{{price}} / 1M tokens": "キャッシュ読み取り価格:{{symbol}}{{price}} / 1M tokens", "缓存读取价格:{{symbol}}{{price}} / 1M tokens": "キャッシュ読み取り価格:{{symbol}}{{price}} / 1M tokens",
"缓存读取价格 {{symbol}}{{price}} / 1M tokens": "キャッシュ読み取り価格 {{symbol}}{{price}} / 1M tokens", "缓存读取价格 {{symbol}}{{price}} / 1M tokens": "キャッシュ読み取り価格 {{symbol}}{{price}} / 1M tokens",
...@@ -3202,7 +3204,6 @@ ...@@ -3202,7 +3204,6 @@
"图片输入价格:{{symbol}}{{price}} / 1M tokens": "画像入力価格:{{symbol}}{{price}} / 1M tokens", "图片输入价格:{{symbol}}{{price}} / 1M tokens": "画像入力価格:{{symbol}}{{price}} / 1M tokens",
"图片输入价格 {{symbol}}{{price}} / 1M tokens": "画像入力価格 {{symbol}}{{price}} / 1M tokens", "图片输入价格 {{symbol}}{{price}} / 1M tokens": "画像入力価格 {{symbol}}{{price}} / 1M tokens",
"输入价格 {{symbol}}{{price}} / 1M tokens": "入力価格 {{symbol}}{{price}} / 1M tokens", "输入价格 {{symbol}}{{price}} / 1M tokens": "入力価格 {{symbol}}{{price}} / 1M tokens",
"补全价格 {{symbol}}{{price}} / 1M tokens": "補完価格 {{symbol}}{{price}} / 1M tokens",
"音频输入价格:{{symbol}}{{price}} / 1M tokens": "音声入力価格:{{symbol}}{{price}} / 1M tokens", "音频输入价格:{{symbol}}{{price}} / 1M tokens": "音声入力価格:{{symbol}}{{price}} / 1M tokens",
"音频补全价格:{{symbol}}{{price}} / 1M tokens": "音声補完価格:{{symbol}}{{price}} / 1M tokens", "音频补全价格:{{symbol}}{{price}} / 1M tokens": "音声補完価格:{{symbol}}{{price}} / 1M tokens",
"Web 搜索调用 {{webSearchCallCount}} 次": "Web 検索呼び出し {{webSearchCallCount}} 回", "Web 搜索调用 {{webSearchCallCount}} 次": "Web 検索呼び出し {{webSearchCallCount}} 回",
...@@ -3223,12 +3224,35 @@ ...@@ -3223,12 +3224,35 @@
"音频输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 音频倍率 {{audioRatio}} * 音频补全倍率 {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "音声出力: {{tokens}} / 1M * モデル倍率 {{modelRatio}} * 音声倍率 {{audioRatio}} * 音声補完倍率 {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "音频输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 音频倍率 {{audioRatio}} * 音频补全倍率 {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "音声出力: {{tokens}} / 1M * モデル倍率 {{modelRatio}} * 音声倍率 {{audioRatio}} * 音声補完倍率 {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"合计:文字部分 {{textTotal}} + 音频部分 {{audioTotal}} = {{total}}": "合計: テキスト部分 {{textTotal}} + 音声部分 {{audioTotal}} = {{total}}", "合计:文字部分 {{textTotal}} + 音频部分 {{audioTotal}} = {{total}}": "合計: テキスト部分 {{textTotal}} + 音声部分 {{audioTotal}} = {{total}}",
"模型倍率 {{modelRatio}},输出倍率 {{completionRatio}},缓存倍率 {{cacheRatio}},{{ratioType}} {{ratio}}": "モデル倍率 {{modelRatio}}、出力倍率 {{completionRatio}}、キャッシュ倍率 {{cacheRatio}}、{{ratioType}} {{ratio}}", "模型倍率 {{modelRatio}},输出倍率 {{completionRatio}},缓存倍率 {{cacheRatio}},{{ratioType}} {{ratio}}": "モデル倍率 {{modelRatio}}、出力倍率 {{completionRatio}}、キャッシュ倍率 {{cacheRatio}}、{{ratioType}} {{ratio}}",
"缓存创建倍率 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}": "キャッシュ作成倍率 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}",
"缓存读取:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "キャッシュ読み取り: {{tokens}} / 1M * モデル倍率 {{modelRatio}} * キャッシュ倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "缓存读取:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "キャッシュ読み取り: {{tokens}} / 1M * モデル倍率 {{modelRatio}} * キャッシュ倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存创建倍率 {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "キャッシュ作成: {{tokens}} / 1M * モデル倍率 {{modelRatio}} * キャッシュ作成倍率 {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存创建倍率 {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "キャッシュ作成: {{tokens}} / 1M * モデル倍率 {{modelRatio}} * キャッシュ作成倍率 {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"5m缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 5m缓存创建倍率 {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}": "5m キャッシュ作成: {{tokens}} / 1M * モデル倍率 {{modelRatio}} * 5m キャッシュ作成倍率 {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}", "5m缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 5m缓存创建倍率 {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}": "5m キャッシュ作成: {{tokens}} / 1M * モデル倍率 {{modelRatio}} * 5m キャッシュ作成倍率 {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}",
"1h缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 1h缓存创建倍率 {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}": "1h キャッシュ作成: {{tokens}} / 1M * モデル倍率 {{modelRatio}} * 1h キャッシュ作成倍率 {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}", "1h缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 1h缓存创建倍率 {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}": "1h キャッシュ作成: {{tokens}} / 1M * モデル倍率 {{modelRatio}} * 1h キャッシュ作成倍率 {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}",
"输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 输出倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "出力: {{tokens}} / 1M * モデル倍率 {{modelRatio}} * 出力倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 输出倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "出力: {{tokens}} / 1M * モデル倍率 {{modelRatio}} * 出力倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"空": "空" "空": "空",
"{{ratioType}} {{ratio}}x": "{{ratioType}} {{ratio}}x",
"模型价格:{{symbol}}{{price}}": "モデル価格:{{symbol}}{{price}}",
"模型价格 {{price}}": "モデル価格 {{price}}",
"缓存读 {{price}} / 1M tokens": "キャッシュ読み取り {{price}} / 1M tokens",
"5m缓存创建 {{price}} / 1M tokens": "5m キャッシュ作成 {{price}} / 1M tokens",
"1h缓存创建 {{price}} / 1M tokens": "1h キャッシュ作成 {{price}} / 1M tokens",
"缓存创建 {{price}} / 1M tokens": "キャッシュ作成 {{price}} / 1M tokens",
"图片输入 {{price}} / 1M tokens": "画像入力 {{price}} / 1M tokens",
"输入 {{price}} / 1M tokens": "入力 {{price}} / 1M tokens",
"缓存 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "キャッシュ {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
"缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "キャッシュ作成 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
"5m缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "5m キャッシュ作成 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
"1h缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "1h キャッシュ作成 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
"(输入 {{nonImageInput}} tokens + 图片输入 {{imageInput}} tokens / 1M tokens * {{symbol}}{{price}}": "(入力 {{nonImageInput}} tokens + 画像入力 {{imageInput}} tokens / 1M tokens * {{symbol}}{{price}}",
"图片输入价格:{{symbol}}{{total}} / 1M tokens": "画像入力価格:{{symbol}}{{total}} / 1M tokens",
"文字提示 {{input}} tokens / 1M tokens * {{symbol}}{{textInputPrice}} + 文字补全 {{completion}} tokens / 1M tokens * {{symbol}}{{textCompPrice}} + 音频提示 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioInputPrice}} + 音频补全 {{audioCompletion}} tokens / 1M tokens * {{symbol}}{{audioCompPrice}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}": "テキストプロンプト {{input}} tokens / 1M tokens * {{symbol}}{{textInputPrice}} + テキスト補完 {{completion}} tokens / 1M tokens * {{symbol}}{{textCompPrice}} + 音声プロンプト {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioInputPrice}} + 音声補完 {{audioCompletion}} tokens / 1M tokens * {{symbol}}{{audioCompPrice}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}",
"模型价格 {{symbol}}{{price}} / 次 * {{ratioType}} {{ratio}} = {{symbol}}{{total}}": "モデル価格 {{symbol}}{{price}} / リクエスト * {{ratioType}} {{ratio}} = {{symbol}}{{total}}",
"缓存读取价格:{{symbol}}{{total}} / 1M tokens": "キャッシュ読み取り価格:{{symbol}}{{total}} / 1M tokens",
"补全 {{completion}} tokens * 输出倍率 {{completionRatio}}": "補完 {{completion}} tokens * 出力倍率 {{completionRatio}}",
"补全倍率 {{completionRatio}}": "補完倍率 {{completionRatio}}",
"输入价格:{{symbol}}{{price}} / 1M tokens": "入力価格:{{symbol}}{{price}} / 1M tokens",
"输出价格 {{symbol}}{{price}} / 1M tokens": "補完料金 {{symbol}}{{price}} / 1M tokens",
"输出价格:{{symbol}}{{price}} / 1M tokens": "補完料金:{{symbol}}{{price}} / 1M tokens",
"输出价格:{{symbol}}{{total}} / 1M tokens": "補完料金:{{symbol}}{{total}} / 1M tokens"
} }
} }
...@@ -24,7 +24,6 @@ ...@@ -24,7 +24,6 @@
"(输入 {{input}} tokens / 1M tokens * {{symbol}}{{price}}": "(Ввод {{input}} токенов / 1M токенов * {{symbol}}{{price}}", "(输入 {{input}} tokens / 1M tokens * {{symbol}}{{price}}": "(Ввод {{input}} токенов / 1M токенов * {{symbol}}{{price}}",
"(输入 {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + 音频输入 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}": "(Ввод {{nonAudioInput}} токенов / 1M токенов * {{symbol}}{{price}} + аудио ввод {{audioInput}} токенов / 1M токенов * {{symbol}}{{audioPrice}}", "(输入 {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + 音频输入 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}": "(Ввод {{nonAudioInput}} токенов / 1M токенов * {{symbol}}{{price}} + аудио ввод {{audioInput}} токенов / 1M токенов * {{symbol}}{{audioPrice}}",
"(输入 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + 缓存 {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}": "(Ввод {{nonCacheInput}} токенов / 1M токенов * {{symbol}}{{price}} + кэш {{cacheInput}} токенов / 1M токенов * {{symbol}}{{cachePrice}}", "(输入 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + 缓存 {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}": "(Ввод {{nonCacheInput}} токенов / 1M токенов * {{symbol}}{{price}} + кэш {{cacheInput}} токенов / 1M токенов * {{symbol}}{{cachePrice}}",
"(输入 {{nonImageInput}} tokens + 图片输入 {{imageInput}} tokens * {{imageRatio}} / 1M tokens * {{symbol}}{{price}}": "(Ввод {{nonImageInput}} токенов + ввод изображения {{imageInput}} токенов * {{imageRatio}} / 1M токенов * {{symbol}}{{price}}",
"[最多请求次数]和[最多请求完成次数]的最大值为2147483647。": "[Максимальное количество запросов] и [Максимальное количество выполненных запросов] имеют максимальное значение 2147483647.", "[最多请求次数]和[最多请求完成次数]的最大值为2147483647。": "[Максимальное количество запросов] и [Максимальное количество выполненных запросов] имеют максимальное значение 2147483647.",
"[最多请求次数]必须大于等于0,[最多请求完成次数]必须大于等于1。": "[Максимальное количество запросов] должно быть больше или равно 0, [Максимальное количество выполненных запросов] должно быть больше или равно 1.", "[最多请求次数]必须大于等于0,[最多请求完成次数]必须大于等于1。": "[Максимальное количество запросов] должно быть больше или равно 0, [Максимальное количество выполненных запросов] должно быть больше или равно 1.",
"{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}": "{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}", "{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}": "{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}",
...@@ -158,10 +157,10 @@ ...@@ -158,10 +157,10 @@
"JSON格式错误": "Ошибка формата JSON", "JSON格式错误": "Ошибка формата JSON",
"JSON编辑": "Редактирование JSON", "JSON编辑": "Редактирование JSON",
"JSON解析错误:": "Ошибка парсинга JSON:", "JSON解析错误:": "Ошибка парсинга JSON:",
"Key": "", "Key": "Key",
"Key 或 Path": "", "Key 或 Path": "",
"Key 指纹": "", "Key 指纹": "",
"Key 摘要": "", "Key 摘要": "Сводка Key",
"Key 来源": "", "Key 来源": "",
"Key 来源类型": "", "Key 来源类型": "",
"Linux DO Client ID": "ID клиента Linux DO", "Linux DO Client ID": "ID клиента Linux DO",
...@@ -1378,7 +1377,7 @@ ...@@ -1378,7 +1377,7 @@
"打开 CC Switch": "", "打开 CC Switch": "",
"打开侧边栏": "Открыть боковую панель", "打开侧边栏": "Открыть боковую панель",
"打开授权页面": "", "打开授权页面": "",
"扣费": "", "扣费": "Списание",
"执行 GC": "", "执行 GC": "",
"执行中": "Выполняется", "执行中": "Выполняется",
"扫描二维码": "Сканировать QR-код", "扫描二维码": "Сканировать QR-код",
...@@ -1794,6 +1793,7 @@ ...@@ -1794,6 +1793,7 @@
"模型价格": "Цена модели", "模型价格": "Цена модели",
"模型价格 {{symbol}}{{price}},{{ratioType}} {{ratio}}": "Цена модели {{symbol}}{{price}}, {{ratioType}} {{ratio}}", "模型价格 {{symbol}}{{price}},{{ratioType}} {{ratio}}": "Цена модели {{symbol}}{{price}}, {{ratioType}} {{ratio}}",
"模型价格:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}": "Цена модели: {{symbol}}{{price}} * {{ratioType}}: {{ratio}} = {{symbol}}{{total}}", "模型价格:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}": "Цена модели: {{symbol}}{{price}} * {{ratioType}}: {{ratio}} = {{symbol}}{{total}}",
"按次:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}": "За запрос: {{symbol}}{{price}} * {{ratioType}}: {{ratio}} = {{symbol}}{{total}}",
"模型倍率": "Коэффициент модели", "模型倍率": "Коэффициент модели",
"模型倍率 {{modelRatio}}": "Коэффициент модели {{modelRatio}}", "模型倍率 {{modelRatio}}": "Коэффициент модели {{modelRatio}}",
"模型倍率 {{modelRatio}},缓存倍率 {{cacheRatio}},输出倍率 {{completionRatio}},{{ratioType}} {{ratio}}": "Коэффициент модели {{modelRatio}}, коэффициент кэша {{cacheRatio}}, коэффициент вывода {{completionRatio}}, {{ratioType}} {{ratio}}", "模型倍率 {{modelRatio}},缓存倍率 {{cacheRatio}},输出倍率 {{completionRatio}},{{ratioType}} {{ratio}}": "Коэффициент модели {{modelRatio}}, коэффициент кэша {{cacheRatio}}, коэффициент вывода {{completionRatio}}, {{ratioType}} {{ratio}}",
...@@ -1988,7 +1988,7 @@ ...@@ -1988,7 +1988,7 @@
"渠道": "Канал", "渠道": "Канал",
"渠道 ID": "ID канала", "渠道 ID": "ID канала",
"渠道ID,名称,密钥,API地址": "ID Канала, имя, Токен, адрес API", "渠道ID,名称,密钥,API地址": "ID Канала, имя, Токен, адрес API",
"渠道亲和性": "", "渠道亲和性": "Аффинитет канала",
"渠道亲和性:上游缓存命中": "", "渠道亲和性:上游缓存命中": "",
"渠道亲和性会基于从请求上下文或 JSON Body 提取的 Key,优先复用上一次成功的渠道。": "", "渠道亲和性会基于从请求上下文或 JSON Body 提取的 Key,优先复用上一次成功的渠道。": "",
"渠道优先级": "Приоритет канала", "渠道优先级": "Приоритет канала",
...@@ -2087,7 +2087,7 @@ ...@@ -2087,7 +2087,7 @@
"用户账户管理": "Управление аккаунтами пользователей", "用户账户管理": "Управление аккаунтами пользователей",
"用时/首字": "Время/первый символ", "用时/首字": "Время/первый символ",
"由全站货币展示设置统一控制": "Управляется глобальными настройками отображения валюты", "由全站货币展示设置统一控制": "Управляется глобальными настройками отображения валюты",
"由订阅抵扣": "", "由订阅抵扣": "Списано по подписке",
"界面语言和其他个人偏好": "", "界面语言和其他个人偏好": "",
"留空使用系统临时目录": "", "留空使用系统临时目录": "",
"留空则使用账号绑定的邮箱": "Если оставить пустым, будет использован email, привязанный к аккаунту", "留空则使用账号绑定的邮箱": "Если оставить пустым, будет использован email, привязанный к аккаунту",
...@@ -2485,7 +2485,7 @@ ...@@ -2485,7 +2485,7 @@
"覆盖模式:将完全替换现有的所有密钥": "Режим перезаписи: полностью заменит все существующие ключи", "覆盖模式:将完全替换现有的所有密钥": "Режим перезаписи: полностью заменит все существующие ключи",
"覆盖模板": "", "覆盖模板": "",
"覆盖现有密钥": "Перезаписать существующие ключи", "覆盖现有密钥": "Перезаписать существующие ключи",
"规则": "", "规则": "Правило",
"规则 JSON": "", "规则 JSON": "",
"规则 JSON 格式不正确": "", "规则 JSON 格式不正确": "",
"规则 ttl_seconds 为 0 时使用。0 表示使用后端默认 TTL:3600 秒。": "", "规则 ttl_seconds 为 0 时使用。0 表示使用后端默认 TTL:3600 秒。": "",
...@@ -2515,7 +2515,7 @@ ...@@ -2515,7 +2515,7 @@
"订阅套餐": "Планы подписки", "订阅套餐": "Планы подписки",
"订阅套餐管理": "Управление тарифами подписки", "订阅套餐管理": "Управление тарифами подписки",
"订阅实例": "", "订阅实例": "",
"订阅抵扣": "", "订阅抵扣": "Списание по подписке",
"订阅管理": "Управление подписками", "订阅管理": "Управление подписками",
"订阅结算": "", "订阅结算": "",
"订阅说明": "", "订阅说明": "",
...@@ -2902,7 +2902,7 @@ ...@@ -2902,7 +2902,7 @@
"进度": "Прогресс", "进度": "Прогресс",
"进行中": "В процессе", "进行中": "В процессе",
"进行该操作时,可能导致渠道访问错误,请仅在数据库出现问题时使用": "При выполнении этой операции могут возникнуть ошибки доступа к каналам, используйте только при проблемах с базой данных", "进行该操作时,可能导致渠道访问错误,请仅在数据库出现问题时使用": "При выполнении этой операции могут возникнуть ошибки доступа к каналам, используйте только при проблемах с базой данных",
"违规扣费": "", "违规扣费": "Удержание за нарушение",
"违规扣费金额": "Сумма удержания за нарушение", "违规扣费金额": "Сумма удержания за нарушение",
"连接保活设置": "Настройки поддержания соединения", "连接保活设置": "Настройки поддержания соединения",
"连接已断开": "Соединение разорвано", "连接已断开": "Соединение разорвано",
...@@ -3222,7 +3222,9 @@ ...@@ -3222,7 +3222,9 @@
"计费显示模式": "Режим отображения тарификации", "计费显示模式": "Режим отображения тарификации",
"价格模式(默认)": "Режим цен (по умолчанию)", "价格模式(默认)": "Режим цен (по умолчанию)",
"模型价格 {{symbol}}{{price}} / 次": "Цена модели {{symbol}}{{price}} / запрос", "模型价格 {{symbol}}{{price}} / 次": "Цена модели {{symbol}}{{price}} / запрос",
"按次 {{symbol}}{{price}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}": "За запрос {{symbol}}{{price}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}",
"模型价格:{{symbol}}{{price}} / 次": "Цена модели: {{symbol}}{{price}} / запрос", "模型价格:{{symbol}}{{price}} / 次": "Цена модели: {{symbol}}{{price}} / запрос",
"按次:{{symbol}}{{price}}": "За запрос: {{symbol}}{{price}}",
"实际结算金额:{{symbol}}{{total}}(已包含分组价格调整)": "Фактическое списание: {{symbol}}{{total}} (включая групповую ценовую корректировку)", "实际结算金额:{{symbol}}{{total}}(已包含分组价格调整)": "Фактическое списание: {{symbol}}{{total}} (включая групповую ценовую корректировку)",
"缓存读取价格:{{symbol}}{{price}} / 1M tokens": "Цена чтения кеша: {{symbol}}{{price}} / 1M tokens", "缓存读取价格:{{symbol}}{{price}} / 1M tokens": "Цена чтения кеша: {{symbol}}{{price}} / 1M tokens",
"缓存读取价格 {{symbol}}{{price}} / 1M tokens": "Цена чтения кеша {{symbol}}{{price}} / 1M tokens", "缓存读取价格 {{symbol}}{{price}} / 1M tokens": "Цена чтения кеша {{symbol}}{{price}} / 1M tokens",
...@@ -3235,7 +3237,6 @@ ...@@ -3235,7 +3237,6 @@
"图片输入价格:{{symbol}}{{price}} / 1M tokens": "Цена входного изображения: {{symbol}}{{price}} / 1M tokens", "图片输入价格:{{symbol}}{{price}} / 1M tokens": "Цена входного изображения: {{symbol}}{{price}} / 1M tokens",
"图片输入价格 {{symbol}}{{price}} / 1M tokens": "Цена входного изображения {{symbol}}{{price}} / 1M tokens", "图片输入价格 {{symbol}}{{price}} / 1M tokens": "Цена входного изображения {{symbol}}{{price}} / 1M tokens",
"输入价格 {{symbol}}{{price}} / 1M tokens": "Цена ввода {{symbol}}{{price}} / 1M tokens", "输入价格 {{symbol}}{{price}} / 1M tokens": "Цена ввода {{symbol}}{{price}} / 1M tokens",
"补全价格 {{symbol}}{{price}} / 1M tokens": "Цена завершения {{symbol}}{{price}} / 1M tokens",
"音频输入价格:{{symbol}}{{price}} / 1M tokens": "Цена входного аудио: {{symbol}}{{price}} / 1M tokens", "音频输入价格:{{symbol}}{{price}} / 1M tokens": "Цена входного аудио: {{symbol}}{{price}} / 1M tokens",
"音频补全价格:{{symbol}}{{price}} / 1M tokens": "Цена завершения аудио: {{symbol}}{{price}} / 1M tokens", "音频补全价格:{{symbol}}{{price}} / 1M tokens": "Цена завершения аудио: {{symbol}}{{price}} / 1M tokens",
"Web 搜索调用 {{webSearchCallCount}} 次": "Web-поиск вызван {{webSearchCallCount}} раз", "Web 搜索调用 {{webSearchCallCount}} 次": "Web-поиск вызван {{webSearchCallCount}} раз",
...@@ -3256,12 +3257,35 @@ ...@@ -3256,12 +3257,35 @@
"音频输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 音频倍率 {{audioRatio}} * 音频补全倍率 {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Аудиовывод: {{tokens}} / 1M * коэффициент модели {{modelRatio}} * аудио-коэффициент {{audioRatio}} * коэффициент аудиозавершения {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "音频输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 音频倍率 {{audioRatio}} * 音频补全倍率 {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Аудиовывод: {{tokens}} / 1M * коэффициент модели {{modelRatio}} * аудио-коэффициент {{audioRatio}} * коэффициент аудиозавершения {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"合计:文字部分 {{textTotal}} + 音频部分 {{audioTotal}} = {{total}}": "Итого: текстовая часть {{textTotal}} + аудиочасть {{audioTotal}} = {{total}}", "合计:文字部分 {{textTotal}} + 音频部分 {{audioTotal}} = {{total}}": "Итого: текстовая часть {{textTotal}} + аудиочасть {{audioTotal}} = {{total}}",
"模型倍率 {{modelRatio}},输出倍率 {{completionRatio}},缓存倍率 {{cacheRatio}},{{ratioType}} {{ratio}}": "Коэффициент модели {{modelRatio}}, коэффициент вывода {{completionRatio}}, коэффициент кэша {{cacheRatio}}, {{ratioType}} {{ratio}}", "模型倍率 {{modelRatio}},输出倍率 {{completionRatio}},缓存倍率 {{cacheRatio}},{{ratioType}} {{ratio}}": "Коэффициент модели {{modelRatio}}, коэффициент вывода {{completionRatio}}, коэффициент кэша {{cacheRatio}}, {{ratioType}} {{ratio}}",
"缓存创建倍率 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}": "Коэффициент создания кэша 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}",
"缓存读取:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Чтение кэша: {{tokens}} / 1M * коэффициент модели {{modelRatio}} * коэффициент кэша {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "缓存读取:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Чтение кэша: {{tokens}} / 1M * коэффициент модели {{modelRatio}} * коэффициент кэша {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存创建倍率 {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Создание кэша: {{tokens}} / 1M * коэффициент модели {{modelRatio}} * коэффициент создания кэша {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存创建倍率 {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Создание кэша: {{tokens}} / 1M * коэффициент модели {{modelRatio}} * коэффициент создания кэша {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"5m缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 5m缓存创建倍率 {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}": "Создание кэша 5m: {{tokens}} / 1M * коэффициент модели {{modelRatio}} * коэффициент создания кэша 5m {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}", "5m缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 5m缓存创建倍率 {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}": "Создание кэша 5m: {{tokens}} / 1M * коэффициент модели {{modelRatio}} * коэффициент создания кэша 5m {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}",
"1h缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 1h缓存创建倍率 {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}": "Создание кэша 1h: {{tokens}} / 1M * коэффициент модели {{modelRatio}} * коэффициент создания кэша 1h {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}", "1h缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 1h缓存创建倍率 {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}": "Создание кэша 1h: {{tokens}} / 1M * коэффициент модели {{modelRatio}} * коэффициент создания кэша 1h {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}",
"输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 输出倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Вывод: {{tokens}} / 1M * коэффициент модели {{modelRatio}} * коэффициент вывода {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 输出倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Вывод: {{tokens}} / 1M * коэффициент модели {{modelRatio}} * коэффициент вывода {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"空": "Пусто" "空": "Пусто",
"{{ratioType}} {{ratio}}x": "{{ratioType}} {{ratio}}x",
"模型价格:{{symbol}}{{price}}": "Цена модели: {{symbol}}{{price}}",
"模型价格 {{price}}": "Цена модели {{price}}",
"缓存读 {{price}} / 1M tokens": "Чтение кеша {{price}} / 1M tokens",
"5m缓存创建 {{price}} / 1M tokens": "Создание кэша 5m {{price}} / 1M tokens",
"1h缓存创建 {{price}} / 1M tokens": "Создание кэша 1h {{price}} / 1M tokens",
"缓存创建 {{price}} / 1M tokens": "Создание кэша {{price}} / 1M tokens",
"图片输入 {{price}} / 1M tokens": "Ввод изображения {{price}} / 1M tokens",
"输入 {{price}} / 1M tokens": "Вход {{price}} / 1M tokens",
"缓存 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "Кэш {{tokens}} токенов / 1M токенов * {{symbol}}{{price}}",
"缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "Создание кэша {{tokens}} токенов / 1M токенов * {{symbol}}{{price}}",
"5m缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "Создание кэша 5m {{tokens}} токенов / 1M токенов * {{symbol}}{{price}}",
"1h缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "Создание кэша 1h {{tokens}} токенов / 1M токенов * {{symbol}}{{price}}",
"(输入 {{nonImageInput}} tokens + 图片输入 {{imageInput}} tokens / 1M tokens * {{symbol}}{{price}}": "(Ввод {{nonImageInput}} токенов + ввод изображения {{imageInput}} токенов / 1M токенов * {{symbol}}{{price}}",
"图片输入价格:{{symbol}}{{total}} / 1M tokens": "Цена входного изображения: {{symbol}}{{total}} / 1M tokens",
"文字提示 {{input}} tokens / 1M tokens * {{symbol}}{{textInputPrice}} + 文字补全 {{completion}} tokens / 1M tokens * {{symbol}}{{textCompPrice}} + 音频提示 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioInputPrice}} + 音频补全 {{audioCompletion}} tokens / 1M tokens * {{symbol}}{{audioCompPrice}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}": "Текстовый промпт {{input}} tokens / 1M tokens * {{symbol}}{{textInputPrice}} + Текстовое дополнение {{completion}} tokens / 1M tokens * {{symbol}}{{textCompPrice}} + Аудио промпт {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioInputPrice}} + Аудио дополнение {{audioCompletion}} tokens / 1M tokens * {{symbol}}{{audioCompPrice}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}",
"模型价格 {{symbol}}{{price}} / 次 * {{ratioType}} {{ratio}} = {{symbol}}{{total}}": "Цена модели {{symbol}}{{price}} / запрос * {{ratioType}} {{ratio}} = {{symbol}}{{total}}",
"缓存读取价格:{{symbol}}{{total}} / 1M tokens": "Цена чтения кеша: {{symbol}}{{total}} / 1M tokens",
"补全 {{completion}} tokens * 输出倍率 {{completionRatio}}": "Дополнение {{completion}} токенов * коэффициент вывода {{completionRatio}}",
"补全倍率 {{completionRatio}}": "Коэффициент вывода {{completionRatio}}",
"输入价格:{{symbol}}{{price}} / 1M tokens": "Цена ввода: {{symbol}}{{price}} / 1M tokens",
"输出价格 {{symbol}}{{price}} / 1M tokens": "Цена вывода {{symbol}}{{price}} / 1M tokens",
"输出价格:{{symbol}}{{price}} / 1M tokens": "Цена вывода: {{symbol}}{{price}} / 1M tokens",
"输出价格:{{symbol}}{{total}} / 1M tokens": "Цена вывода: {{symbol}}{{total}} / 1M tokens"
} }
} }
...@@ -17,7 +17,6 @@ ...@@ -17,7 +17,6 @@
"(输入 {{input}} tokens / 1M tokens * {{symbol}}{{price}}": "(Đầu vào {{input}} tokens / 1M tokens * {{symbol}}{{price}}", "(输入 {{input}} tokens / 1M tokens * {{symbol}}{{price}}": "(Đầu vào {{input}} tokens / 1M tokens * {{symbol}}{{price}}",
"(输入 {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + 音频输入 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}": "(Đầu vào {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + Đầu vào âm thanh {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}", "(输入 {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + 音频输入 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}": "(Đầu vào {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + Đầu vào âm thanh {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}",
"(输入 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + 缓存 {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}": "(Đầu vào {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + Bộ nhớ đệm {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}", "(输入 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + 缓存 {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}": "(Đầu vào {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + Bộ nhớ đệm {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}",
"(输入 {{nonImageInput}} tokens + 图片输入 {{imageInput}} tokens * {{imageRatio}} / 1M tokens * {{symbol}}{{price}}": "(Đầu vào {{nonImageInput}} tokens + Đầu vào hình ảnh {{imageInput}} tokens * {{imageRatio}} / 1M tokens * {{symbol}}{{price}}",
"[最多请求次数]和[最多请求完成次数]的最大值为2147483647。": "Giá trị tối đa của [Số lần yêu cầu tối đa] và [Số lần hoàn thành yêu cầu tối đa] là 2147483647.", "[最多请求次数]和[最多请求完成次数]的最大值为2147483647。": "Giá trị tối đa của [Số lần yêu cầu tối đa] và [Số lần hoàn thành yêu cầu tối đa] là 2147483647.",
"[最多请求次数]必须大于等于0,[最多请求完成次数]必须大于等于1。": "[Số lần yêu cầu tối đa] phải lớn hơn hoặc bằng 0, [Số lần hoàn thành yêu cầu tối đa] phải lớn hơn hoặc bằng 1.", "[最多请求次数]必须大于等于0,[最多请求完成次数]必须大于等于1。": "[Số lần yêu cầu tối đa] phải lớn hơn hoặc bằng 0, [Số lần hoàn thành yêu cầu tối đa] phải lớn hơn hoặc bằng 1.",
"{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}": "{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}", "{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}": "{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}",
...@@ -151,10 +150,10 @@ ...@@ -151,10 +150,10 @@
"JSON格式错误": "Lỗi định dạng JSON", "JSON格式错误": "Lỗi định dạng JSON",
"JSON编辑": "Trình chỉnh sửa JSON", "JSON编辑": "Trình chỉnh sửa JSON",
"JSON解析错误:": "Lỗi phân tích cú pháp JSON:", "JSON解析错误:": "Lỗi phân tích cú pháp JSON:",
"Key": "", "Key": "Key",
"Key 或 Path": "", "Key 或 Path": "",
"Key 指纹": "", "Key 指纹": "",
"Key 摘要": "", "Key 摘要": "Tóm tắt Key",
"Key 来源": "", "Key 来源": "",
"Key 来源类型": "", "Key 来源类型": "",
"Linux DO Client ID": "Linux DO Client ID", "Linux DO Client ID": "Linux DO Client ID",
...@@ -1350,7 +1349,7 @@ ...@@ -1350,7 +1349,7 @@
"打开 CC Switch": "", "打开 CC Switch": "",
"打开侧边栏": "Mở thanh bên", "打开侧边栏": "Mở thanh bên",
"打开授权页面": "", "打开授权页面": "",
"扣费": "", "扣费": "Khấu phí",
"执行 GC": "", "执行 GC": "",
"执行中": "đang xử lý", "执行中": "đang xử lý",
"扫描二维码": "Quét mã QR", "扫描二维码": "Quét mã QR",
...@@ -1766,6 +1765,7 @@ ...@@ -1766,6 +1765,7 @@
"模型价格": "Giá mô hình", "模型价格": "Giá mô hình",
"模型价格 {{symbol}}{{price}},{{ratioType}} {{ratio}}": "Giá mô hình {{symbol}}{{price}}, {{ratioType}} {{ratio}}", "模型价格 {{symbol}}{{price}},{{ratioType}} {{ratio}}": "Giá mô hình {{symbol}}{{price}}, {{ratioType}} {{ratio}}",
"模型价格:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}": "Giá mô hình: {{symbol}}{{price}} * {{ratioType}}: {{ratio}} = {{symbol}}{{total}}", "模型价格:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}": "Giá mô hình: {{symbol}}{{price}} * {{ratioType}}: {{ratio}} = {{symbol}}{{total}}",
"按次:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}": "Theo lượt gọi: {{symbol}}{{price}} * {{ratioType}}: {{ratio}} = {{symbol}}{{total}}",
"模型倍率": "Tỷ lệ mô hình", "模型倍率": "Tỷ lệ mô hình",
"模型倍率 {{modelRatio}}": "Model ratio {{modelRatio}}", "模型倍率 {{modelRatio}}": "Model ratio {{modelRatio}}",
"模型倍率 {{modelRatio}},缓存倍率 {{cacheRatio}},输出倍率 {{completionRatio}},{{ratioType}} {{ratio}}": "Tỷ lệ mô hình {{modelRatio}}, tỷ lệ bộ nhớ đệm {{cacheRatio}}, tỷ lệ hoàn thành {{completionRatio}}, {{ratioType}} {{ratio}}", "模型倍率 {{modelRatio}},缓存倍率 {{cacheRatio}},输出倍率 {{completionRatio}},{{ratioType}} {{ratio}}": "Tỷ lệ mô hình {{modelRatio}}, tỷ lệ bộ nhớ đệm {{cacheRatio}}, tỷ lệ hoàn thành {{completionRatio}}, {{ratioType}} {{ratio}}",
...@@ -2068,7 +2068,7 @@ ...@@ -2068,7 +2068,7 @@
"渠道 ID": "ID kênh", "渠道 ID": "ID kênh",
"渠道ID": "ID kênh", "渠道ID": "ID kênh",
"渠道ID,名称,密钥,API地址": "ID kênh, tên, khóa, Base URL", "渠道ID,名称,密钥,API地址": "ID kênh, tên, khóa, Base URL",
"渠道亲和性": "", "渠道亲和性": "Độ ưu tiên kênh",
"渠道亲和性:上游缓存命中": "", "渠道亲和性:上游缓存命中": "",
"渠道亲和性会基于从请求上下文或 JSON Body 提取的 Key,优先复用上一次成功的渠道。": "", "渠道亲和性会基于从请求上下文或 JSON Body 提取的 Key,优先复用上一次成功的渠道。": "",
"渠道优先级": "Ưu tiên kênh", "渠道优先级": "Ưu tiên kênh",
...@@ -2243,7 +2243,7 @@ ...@@ -2243,7 +2243,7 @@
"用时/首字": "Thời gian/từ đầu tiên", "用时/首字": "Thời gian/từ đầu tiên",
"用途": "Mục đích", "用途": "Mục đích",
"由全站货币展示设置统一控制": "Được điều khiển bởi cài đặt hiển thị tiền tệ toàn site", "由全站货币展示设置统一控制": "Được điều khiển bởi cài đặt hiển thị tiền tệ toàn site",
"由订阅抵扣": "", "由订阅抵扣": "Khấu trừ bởi gói đăng ký",
"申请": "Đăng ký", "申请": "Đăng ký",
"申请时间": "Thời gian đăng ký", "申请时间": "Thời gian đăng ký",
"电子邮箱": "Email", "电子邮箱": "Email",
...@@ -2634,7 +2634,7 @@ ...@@ -2634,7 +2634,7 @@
"缓存创建倍率 {{cacheCreationRatio}}": "Cache creation ratio {{cacheCreationRatio}}", "缓存创建倍率 {{cacheCreationRatio}}": "Cache creation ratio {{cacheCreationRatio}}",
"缓存创建倍率 1h {{cacheCreationRatio1h}}": "Tỷ lệ tạo bộ nhớ đệm 1h {{cacheCreationRatio1h}}", "缓存创建倍率 1h {{cacheCreationRatio1h}}": "Tỷ lệ tạo bộ nhớ đệm 1h {{cacheCreationRatio1h}}",
"缓存创建倍率 5m {{cacheCreationRatio5m}}": "Tỷ lệ tạo bộ nhớ đệm 5m {{cacheCreationRatio5m}}", "缓存创建倍率 5m {{cacheCreationRatio5m}}": "Tỷ lệ tạo bộ nhớ đệm 5m {{cacheCreationRatio5m}}",
"缓存创建倍率 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}": "Cache creation ratio 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}", "缓存创建倍率 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}": "Hệ số tạo bộ nhớ đệm 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}",
"缓存条目数": "", "缓存条目数": "",
"缓存目录": "", "缓存目录": "",
"缓存目录磁盘空间": "", "缓存目录磁盘空间": "",
...@@ -2790,7 +2790,6 @@ ...@@ -2790,7 +2790,6 @@
"补全 {{completion}} tokens / 1M tokens * {{symbol}}{{price}}": "Completion {{completion}} tokens / 1M tokens * {{symbol}}{{price}}", "补全 {{completion}} tokens / 1M tokens * {{symbol}}{{price}}": "Completion {{completion}} tokens / 1M tokens * {{symbol}}{{price}}",
"补全价格:{{symbol}}{{price}} * {{completionRatio}} = {{symbol}}{{total}} / 1M tokens (补全倍率: {{completionRatio}})": "Giá hoàn thành: {{symbol}}{{price}} * {{completionRatio}} = {{symbol}}{{total}} / 1M tokens (Tỷ lệ hoàn thành: {{completionRatio}})", "补全价格:{{symbol}}{{price}} * {{completionRatio}} = {{symbol}}{{total}} / 1M tokens (补全倍率: {{completionRatio}})": "Giá hoàn thành: {{symbol}}{{price}} * {{completionRatio}} = {{symbol}}{{total}} / 1M tokens (Tỷ lệ hoàn thành: {{completionRatio}})",
"补全价格:{{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens": "Giá hoàn thành: {{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens", "补全价格:{{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens": "Giá hoàn thành: {{symbol}}{{price}} * {{ratio}} = {{symbol}}{{total}} / 1M tokens",
"补全价格:{{symbol}}{{price}} / 1M tokens": "Giá hoàn thành: {{symbol}}{{price}} / 1M tokens",
"补全倍率": "Tỷ lệ hoàn thành", "补全倍率": "Tỷ lệ hoàn thành",
"补全倍率值": "Giá trị tỷ lệ hoàn thành", "补全倍率值": "Giá trị tỷ lệ hoàn thành",
"补单": "Bổ sung đơn hàng", "补单": "Bổ sung đơn hàng",
...@@ -2806,7 +2805,7 @@ ...@@ -2806,7 +2805,7 @@
"覆盖模式:将完全替换现有的所有密钥": "Chế độ ghi đè: sẽ thay thế hoàn toàn tất cả các khóa hiện có", "覆盖模式:将完全替换现有的所有密钥": "Chế độ ghi đè: sẽ thay thế hoàn toàn tất cả các khóa hiện có",
"覆盖模板": "", "覆盖模板": "",
"覆盖现有密钥": "Ghi đè khóa hiện có", "覆盖现有密钥": "Ghi đè khóa hiện có",
"规则": "", "规则": "Quy tắc",
"规则 JSON": "", "规则 JSON": "",
"规则 JSON 格式不正确": "", "规则 JSON 格式不正确": "",
"规则 ttl_seconds 为 0 时使用。0 表示使用后端默认 TTL:3600 秒。": "", "规则 ttl_seconds 为 0 时使用。0 表示使用后端默认 TTL:3600 秒。": "",
...@@ -2841,7 +2840,7 @@ ...@@ -2841,7 +2840,7 @@
"订阅套餐": "Gói đăng ký", "订阅套餐": "Gói đăng ký",
"订阅套餐管理": "Quản lý gói đăng ký", "订阅套餐管理": "Quản lý gói đăng ký",
"订阅实例": "", "订阅实例": "",
"订阅抵扣": "", "订阅抵扣": "Khấu trừ gói đăng ký",
"订阅管理": "Quản lý đăng ký", "订阅管理": "Quản lý đăng ký",
"订阅结算": "", "订阅结算": "",
"订阅说明": "", "订阅说明": "",
...@@ -3358,7 +3357,7 @@ ...@@ -3358,7 +3357,7 @@
"进度": "Tiến độ", "进度": "Tiến độ",
"进行中": "Đang tiến hành", "进行中": "Đang tiến hành",
"进行该操作时,可能导致渠道访问错误,请仅在数据库出现问题时使用": "Khi thực hiện thao tác này, có thể gây ra lỗi truy cập kênh. Vui lòng chỉ sử dụng khi có vấn đề với cơ sở dữ liệu.", "进行该操作时,可能导致渠道访问错误,请仅在数据库出现问题时使用": "Khi thực hiện thao tác này, có thể gây ra lỗi truy cập kênh. Vui lòng chỉ sử dụng khi có vấn đề với cơ sở dữ liệu.",
"违规扣费": "", "违规扣费": "Khấu phí vi phạm",
"违规扣费金额": "Số tiền trừ phí vi phạm", "违规扣费金额": "Số tiền trừ phí vi phạm",
"连接保活设置": "Cài đặt giữ kết nối", "连接保活设置": "Cài đặt giữ kết nối",
"连接已断开": "Kết nối đã ngắt", "连接已断开": "Kết nối đã ngắt",
...@@ -3761,7 +3760,9 @@ ...@@ -3761,7 +3760,9 @@
"计费显示模式": "Chế độ hiển thị tính phí", "计费显示模式": "Chế độ hiển thị tính phí",
"价格模式(默认)": "Chế độ giá (mặc định)", "价格模式(默认)": "Chế độ giá (mặc định)",
"模型价格 {{symbol}}{{price}} / 次": "Giá mô hình {{symbol}}{{price}} / lượt gọi", "模型价格 {{symbol}}{{price}} / 次": "Giá mô hình {{symbol}}{{price}} / lượt gọi",
"按次 {{symbol}}{{price}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}": "Theo lượt gọi {{symbol}}{{price}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}",
"模型价格:{{symbol}}{{price}} / 次": "Giá mô hình: {{symbol}}{{price}} / lượt gọi", "模型价格:{{symbol}}{{price}} / 次": "Giá mô hình: {{symbol}}{{price}} / lượt gọi",
"按次:{{symbol}}{{price}}": "Theo lượt gọi: {{symbol}}{{price}}",
"实际结算金额:{{symbol}}{{total}}(已包含分组价格调整)": "Khoản phí thực tế: {{symbol}}{{total}} (đã bao gồm điều chỉnh giá theo nhóm)", "实际结算金额:{{symbol}}{{total}}(已包含分组价格调整)": "Khoản phí thực tế: {{symbol}}{{total}} (đã bao gồm điều chỉnh giá theo nhóm)",
"缓存读取价格:{{symbol}}{{price}} / 1M tokens": "Giá đọc bộ nhớ đệm: {{symbol}}{{price}} / 1M tokens", "缓存读取价格:{{symbol}}{{price}} / 1M tokens": "Giá đọc bộ nhớ đệm: {{symbol}}{{price}} / 1M tokens",
"缓存读取价格 {{symbol}}{{price}} / 1M tokens": "Giá đọc bộ nhớ đệm {{symbol}}{{price}} / 1M tokens", "缓存读取价格 {{symbol}}{{price}} / 1M tokens": "Giá đọc bộ nhớ đệm {{symbol}}{{price}} / 1M tokens",
...@@ -3774,7 +3775,6 @@ ...@@ -3774,7 +3775,6 @@
"图片输入价格:{{symbol}}{{price}} / 1M tokens": "Giá đầu vào hình ảnh: {{symbol}}{{price}} / 1M tokens", "图片输入价格:{{symbol}}{{price}} / 1M tokens": "Giá đầu vào hình ảnh: {{symbol}}{{price}} / 1M tokens",
"图片输入价格 {{symbol}}{{price}} / 1M tokens": "Giá đầu vào hình ảnh {{symbol}}{{price}} / 1M tokens", "图片输入价格 {{symbol}}{{price}} / 1M tokens": "Giá đầu vào hình ảnh {{symbol}}{{price}} / 1M tokens",
"输入价格 {{symbol}}{{price}} / 1M tokens": "Giá đầu vào {{symbol}}{{price}} / 1M tokens", "输入价格 {{symbol}}{{price}} / 1M tokens": "Giá đầu vào {{symbol}}{{price}} / 1M tokens",
"补全价格 {{symbol}}{{price}} / 1M tokens": "Giá hoàn thành {{symbol}}{{price}} / 1M tokens",
"音频输入价格:{{symbol}}{{price}} / 1M tokens": "Giá đầu vào âm thanh: {{symbol}}{{price}} / 1M tokens", "音频输入价格:{{symbol}}{{price}} / 1M tokens": "Giá đầu vào âm thanh: {{symbol}}{{price}} / 1M tokens",
"音频补全价格:{{symbol}}{{price}} / 1M tokens": "Giá hoàn thành âm thanh: {{symbol}}{{price}} / 1M tokens", "音频补全价格:{{symbol}}{{price}} / 1M tokens": "Giá hoàn thành âm thanh: {{symbol}}{{price}} / 1M tokens",
"Web 搜索调用 {{webSearchCallCount}} 次": "Đã gọi tìm kiếm Web {{webSearchCallCount}} lần", "Web 搜索调用 {{webSearchCallCount}} 次": "Đã gọi tìm kiếm Web {{webSearchCallCount}} lần",
...@@ -3795,12 +3795,34 @@ ...@@ -3795,12 +3795,34 @@
"音频输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 音频倍率 {{audioRatio}} * 音频补全倍率 {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Đầu ra âm thanh: {{tokens}} / 1M * hệ số mô hình {{modelRatio}} * hệ số âm thanh {{audioRatio}} * hệ số hoàn thành âm thanh {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "音频输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 音频倍率 {{audioRatio}} * 音频补全倍率 {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Đầu ra âm thanh: {{tokens}} / 1M * hệ số mô hình {{modelRatio}} * hệ số âm thanh {{audioRatio}} * hệ số hoàn thành âm thanh {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"合计:文字部分 {{textTotal}} + 音频部分 {{audioTotal}} = {{total}}": "Tổng cộng: phần văn bản {{textTotal}} + phần âm thanh {{audioTotal}} = {{total}}", "合计:文字部分 {{textTotal}} + 音频部分 {{audioTotal}} = {{total}}": "Tổng cộng: phần văn bản {{textTotal}} + phần âm thanh {{audioTotal}} = {{total}}",
"模型倍率 {{modelRatio}},输出倍率 {{completionRatio}},缓存倍率 {{cacheRatio}},{{ratioType}} {{ratio}}": "Hệ số mô hình {{modelRatio}}, hệ số đầu ra {{completionRatio}}, hệ số bộ nhớ đệm {{cacheRatio}}, {{ratioType}} {{ratio}}", "模型倍率 {{modelRatio}},输出倍率 {{completionRatio}},缓存倍率 {{cacheRatio}},{{ratioType}} {{ratio}}": "Hệ số mô hình {{modelRatio}}, hệ số đầu ra {{completionRatio}}, hệ số bộ nhớ đệm {{cacheRatio}}, {{ratioType}} {{ratio}}",
"缓存创建倍率 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}": "Hệ số tạo bộ nhớ đệm 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}",
"缓存读取:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Đọc bộ nhớ đệm: {{tokens}} / 1M * hệ số mô hình {{modelRatio}} * hệ số bộ nhớ đệm {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "缓存读取:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Đọc bộ nhớ đệm: {{tokens}} / 1M * hệ số mô hình {{modelRatio}} * hệ số bộ nhớ đệm {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存创建倍率 {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Tạo bộ nhớ đệm: {{tokens}} / 1M * hệ số mô hình {{modelRatio}} * hệ số tạo bộ nhớ đệm {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存创建倍率 {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Tạo bộ nhớ đệm: {{tokens}} / 1M * hệ số mô hình {{modelRatio}} * hệ số tạo bộ nhớ đệm {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"5m缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 5m缓存创建倍率 {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}": "Tạo bộ nhớ đệm 5m: {{tokens}} / 1M * hệ số mô hình {{modelRatio}} * hệ số tạo bộ nhớ đệm 5m {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}", "5m缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 5m缓存创建倍率 {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}": "Tạo bộ nhớ đệm 5m: {{tokens}} / 1M * hệ số mô hình {{modelRatio}} * hệ số tạo bộ nhớ đệm 5m {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}",
"1h缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 1h缓存创建倍率 {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}": "Tạo bộ nhớ đệm 1h: {{tokens}} / 1M * hệ số mô hình {{modelRatio}} * hệ số tạo bộ nhớ đệm 1h {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}", "1h缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 1h缓存创建倍率 {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}": "Tạo bộ nhớ đệm 1h: {{tokens}} / 1M * hệ số mô hình {{modelRatio}} * hệ số tạo bộ nhớ đệm 1h {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}",
"输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 输出倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Đầu ra: {{tokens}} / 1M * hệ số mô hình {{modelRatio}} * hệ số đầu ra {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 输出倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "Đầu ra: {{tokens}} / 1M * hệ số mô hình {{modelRatio}} * hệ số đầu ra {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"空": "Trống" "空": "Trống",
"{{ratioType}} {{ratio}}x": "{{ratioType}} {{ratio}}x",
"模型价格:{{symbol}}{{price}}": "Giá mô hình: {{symbol}}{{price}}",
"模型价格 {{price}}": "Giá mô hình {{price}}",
"缓存读 {{price}} / 1M tokens": "Đọc bộ nhớ đệm {{price}} / 1M tokens",
"5m缓存创建 {{price}} / 1M tokens": "Tạo bộ nhớ đệm 5m {{price}} / 1M tokens",
"1h缓存创建 {{price}} / 1M tokens": "Tạo bộ nhớ đệm 1h {{price}} / 1M tokens",
"缓存创建 {{price}} / 1M tokens": "Tạo bộ nhớ đệm {{price}} / 1M tokens",
"图片输入 {{price}} / 1M tokens": "Đầu vào hình ảnh {{price}} / 1M tokens",
"输入 {{price}} / 1M tokens": "Đầu vào {{price}} / 1M tokens",
"缓存 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "Bộ nhớ đệm {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
"缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "Tạo bộ nhớ đệm {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
"5m缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "Tạo bộ nhớ đệm 5m {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
"1h缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "Tạo bộ nhớ đệm 1h {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
"(输入 {{nonImageInput}} tokens + 图片输入 {{imageInput}} tokens / 1M tokens * {{symbol}}{{price}}": "(Đầu vào {{nonImageInput}} tokens + Đầu vào hình ảnh {{imageInput}} tokens / 1M tokens * {{symbol}}{{price}}",
"图片输入价格:{{symbol}}{{total}} / 1M tokens": "Giá đầu vào hình ảnh: {{symbol}}{{total}} / 1M tokens",
"文字提示 {{input}} tokens / 1M tokens * {{symbol}}{{textInputPrice}} + 文字补全 {{completion}} tokens / 1M tokens * {{symbol}}{{textCompPrice}} + 音频提示 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioInputPrice}} + 音频补全 {{audioCompletion}} tokens / 1M tokens * {{symbol}}{{audioCompPrice}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}": "Prompt văn bản {{input}} tokens / 1M tokens * {{symbol}}{{textInputPrice}} + Hoàn thành văn bản {{completion}} tokens / 1M tokens * {{symbol}}{{textCompPrice}} + Prompt âm thanh {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioInputPrice}} + Hoàn thành âm thanh {{audioCompletion}} tokens / 1M tokens * {{symbol}}{{audioCompPrice}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}",
"模型价格 {{symbol}}{{price}} / 次 * {{ratioType}} {{ratio}} = {{symbol}}{{total}}": "Giá mô hình {{symbol}}{{price}} / lượt gọi * {{ratioType}} {{ratio}} = {{symbol}}{{total}}",
"缓存读取价格:{{symbol}}{{total}} / 1M tokens": "Giá đọc bộ nhớ đệm: {{symbol}}{{total}} / 1M tokens",
"补全 {{completion}} tokens * 输出倍率 {{completionRatio}}": "Hoàn thành {{completion}} tokens * Tỷ lệ đầu ra {{completionRatio}}",
"补全倍率 {{completionRatio}}": "Tỷ lệ hoàn thành {{completionRatio}}",
"输出价格 {{symbol}}{{price}} / 1M tokens": "Giá đầu ra {{symbol}}{{price}} / 1M tokens",
"输出价格:{{symbol}}{{price}} / 1M tokens": "Giá đầu ra: {{symbol}}{{price}} / 1M tokens",
"输出价格:{{symbol}}{{total}} / 1M tokens": "Giá đầu ra: {{symbol}}{{total}} / 1M tokens"
} }
} }
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
"(输入 {{input}} tokens / 1M tokens * {{symbol}}{{price}}": "(输入 {{input}} tokens / 1M tokens * {{symbol}}{{price}}", "(输入 {{input}} tokens / 1M tokens * {{symbol}}{{price}}": "(输入 {{input}} tokens / 1M tokens * {{symbol}}{{price}}",
"(输入 {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + 音频输入 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}": "(输入 {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + 音频输入 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}", "(输入 {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + 音频输入 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}": "(输入 {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + 音频输入 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}",
"(输入 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + 缓存 {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}": "(输入 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + 缓存 {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}", "(输入 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + 缓存 {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}": "(输入 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + 缓存 {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}",
"(输入 {{nonImageInput}} tokens + 图片输入 {{imageInput}} tokens * {{imageRatio}} / 1M tokens * {{symbol}}{{price}}": "(输入 {{nonImageInput}} tokens + 图片输入 {{imageInput}} tokens * {{imageRatio}} / 1M tokens * {{symbol}}{{price}}",
"[最多请求次数]和[最多请求完成次数]的最大值为2147483647。": "[最多请求次数]和[最多请求完成次数]的最大值为2147483647。", "[最多请求次数]和[最多请求完成次数]的最大值为2147483647。": "[最多请求次数]和[最多请求完成次数]的最大值为2147483647。",
"[最多请求次数]必须大于等于0,[最多请求完成次数]必须大于等于1。": "[最多请求次数]必须大于等于0,[最多请求完成次数]必须大于等于1。", "[最多请求次数]必须大于等于0,[最多请求完成次数]必须大于等于1。": "[最多请求次数]必须大于等于0,[最多请求完成次数]必须大于等于1。",
"{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}": "{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}", "{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}": "{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}",
...@@ -1106,7 +1105,6 @@ ...@@ -1106,7 +1105,6 @@
"按倍率类型筛选": "按倍率类型筛选", "按倍率类型筛选": "按倍率类型筛选",
"按倍率设置": "按倍率设置", "按倍率设置": "按倍率设置",
"按次": "按次", "按次": "按次",
"按次 {{price}} / 次": "按次 {{price}} / 次",
"按次计费": "按次计费", "按次计费": "按次计费",
"按照如下格式输入:AccessKey|SecretAccessKey|Region": "按照如下格式输入:AccessKey|SecretAccessKey|Region", "按照如下格式输入:AccessKey|SecretAccessKey|Region": "按照如下格式输入:AccessKey|SecretAccessKey|Region",
"按量计费": "按量计费", "按量计费": "按量计费",
...@@ -1430,6 +1428,7 @@ ...@@ -1430,6 +1428,7 @@
"模型价格": "模型价格", "模型价格": "模型价格",
"模型价格 {{symbol}}{{price}},{{ratioType}} {{ratio}}": "模型价格 {{symbol}}{{price}},{{ratioType}} {{ratio}}", "模型价格 {{symbol}}{{price}},{{ratioType}} {{ratio}}": "模型价格 {{symbol}}{{price}},{{ratioType}} {{ratio}}",
"模型价格:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}": "模型价格:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}", "模型价格:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}": "模型价格:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}",
"按次:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}": "按次:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}",
"模型倍率": "模型倍率", "模型倍率": "模型倍率",
"模型倍率 {{modelRatio}}": "模型倍率 {{modelRatio}}", "模型倍率 {{modelRatio}}": "模型倍率 {{modelRatio}}",
"模型倍率 {{modelRatio}},缓存倍率 {{cacheRatio}},输出倍率 {{completionRatio}},{{ratioType}} {{ratio}}": "模型倍率 {{modelRatio}},缓存倍率 {{cacheRatio}},输出倍率 {{completionRatio}},{{ratioType}} {{ratio}}", "模型倍率 {{modelRatio}},缓存倍率 {{cacheRatio}},输出倍率 {{completionRatio}},{{ratioType}} {{ratio}}": "模型倍率 {{modelRatio}},缓存倍率 {{cacheRatio}},输出倍率 {{completionRatio}},{{ratioType}} {{ratio}}",
...@@ -2867,26 +2866,21 @@ ...@@ -2867,26 +2866,21 @@
"计费显示模式": "计费显示模式", "计费显示模式": "计费显示模式",
"价格模式(默认)": "价格模式(默认)", "价格模式(默认)": "价格模式(默认)",
"模型价格 {{symbol}}{{price}} / 次": "模型价格 {{symbol}}{{price}} / 次", "模型价格 {{symbol}}{{price}} / 次": "模型价格 {{symbol}}{{price}} / 次",
"按次 {{symbol}}{{price}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}": "按次 {{symbol}}{{price}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}",
"模型价格:{{symbol}}{{price}} / 次": "模型价格:{{symbol}}{{price}} / 次", "模型价格:{{symbol}}{{price}} / 次": "模型价格:{{symbol}}{{price}} / 次",
"输入 {{price}} / 1M tokens": "输入 {{price}} / 1M tokens", "按次:{{symbol}}{{price}}": "按次:{{symbol}}{{price}}",
"实际结算金额:{{symbol}}{{total}}(已包含分组价格调整)": "实际结算金额:{{symbol}}{{total}}(已包含分组价格调整)", "实际结算金额:{{symbol}}{{total}}(已包含分组价格调整)": "实际结算金额:{{symbol}}{{total}}(已包含分组价格调整)",
"缓存读取价格:{{symbol}}{{price}} / 1M tokens": "缓存读取价格:{{symbol}}{{price}} / 1M tokens", "缓存读取价格:{{symbol}}{{price}} / 1M tokens": "缓存读取价格:{{symbol}}{{price}} / 1M tokens",
"缓存读取价格 {{symbol}}{{price}} / 1M tokens": "缓存读取价格 {{symbol}}{{price}} / 1M tokens", "缓存读取价格 {{symbol}}{{price}} / 1M tokens": "缓存读取价格 {{symbol}}{{price}} / 1M tokens",
"缓存读取 {{price}}": "缓存读取 {{price}}",
"缓存创建价格:{{symbol}}{{price}} / 1M tokens": "缓存创建价格:{{symbol}}{{price}} / 1M tokens", "缓存创建价格:{{symbol}}{{price}} / 1M tokens": "缓存创建价格:{{symbol}}{{price}} / 1M tokens",
"缓存创建价格 {{symbol}}{{price}} / 1M tokens": "缓存创建价格 {{symbol}}{{price}} / 1M tokens", "缓存创建价格 {{symbol}}{{price}} / 1M tokens": "缓存创建价格 {{symbol}}{{price}} / 1M tokens",
"缓存创建 {{price}}": "缓存创建 {{price}}",
"5m缓存创建价格:{{symbol}}{{price}} / 1M tokens": "5m缓存创建价格:{{symbol}}{{price}} / 1M tokens", "5m缓存创建价格:{{symbol}}{{price}} / 1M tokens": "5m缓存创建价格:{{symbol}}{{price}} / 1M tokens",
"5m缓存创建价格 {{symbol}}{{price}} / 1M tokens": "5m缓存创建价格 {{symbol}}{{price}} / 1M tokens", "5m缓存创建价格 {{symbol}}{{price}} / 1M tokens": "5m缓存创建价格 {{symbol}}{{price}} / 1M tokens",
"5m缓存创建 {{price}}": "5m缓存创建 {{price}}",
"1h缓存创建价格:{{symbol}}{{price}} / 1M tokens": "1h缓存创建价格:{{symbol}}{{price}} / 1M tokens", "1h缓存创建价格:{{symbol}}{{price}} / 1M tokens": "1h缓存创建价格:{{symbol}}{{price}} / 1M tokens",
"1h缓存创建价格 {{symbol}}{{price}} / 1M tokens": "1h缓存创建价格 {{symbol}}{{price}} / 1M tokens", "1h缓存创建价格 {{symbol}}{{price}} / 1M tokens": "1h缓存创建价格 {{symbol}}{{price}} / 1M tokens",
"1h缓存创建 {{price}}": "1h缓存创建 {{price}}",
"图片输入价格:{{symbol}}{{price}} / 1M tokens": "图片输入价格:{{symbol}}{{price}} / 1M tokens", "图片输入价格:{{symbol}}{{price}} / 1M tokens": "图片输入价格:{{symbol}}{{price}} / 1M tokens",
"图片输入价格 {{symbol}}{{price}} / 1M tokens": "图片输入价格 {{symbol}}{{price}} / 1M tokens", "图片输入价格 {{symbol}}{{price}} / 1M tokens": "图片输入价格 {{symbol}}{{price}} / 1M tokens",
"图片输入 {{price}}": "图片输入 {{price}}",
"输入价格 {{symbol}}{{price}} / 1M tokens": "输入价格 {{symbol}}{{price}} / 1M tokens", "输入价格 {{symbol}}{{price}} / 1M tokens": "输入价格 {{symbol}}{{price}} / 1M tokens",
"补全价格 {{symbol}}{{price}} / 1M tokens": "补全价格 {{symbol}}{{price}} / 1M tokens",
"音频输入价格:{{symbol}}{{price}} / 1M tokens": "音频输入价格:{{symbol}}{{price}} / 1M tokens", "音频输入价格:{{symbol}}{{price}} / 1M tokens": "音频输入价格:{{symbol}}{{price}} / 1M tokens",
"音频补全价格:{{symbol}}{{price}} / 1M tokens": "音频补全价格:{{symbol}}{{price}} / 1M tokens", "音频补全价格:{{symbol}}{{price}} / 1M tokens": "音频补全价格:{{symbol}}{{price}} / 1M tokens",
"Web 搜索调用 {{webSearchCallCount}} 次": "Web 搜索调用 {{webSearchCallCount}} 次", "Web 搜索调用 {{webSearchCallCount}} 次": "Web 搜索调用 {{webSearchCallCount}} 次",
...@@ -2907,12 +2901,43 @@ ...@@ -2907,12 +2901,43 @@
"音频输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 音频倍率 {{audioRatio}} * 音频补全倍率 {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "音频输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 音频倍率 {{audioRatio}} * 音频补全倍率 {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "音频输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 音频倍率 {{audioRatio}} * 音频补全倍率 {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "音频输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 音频倍率 {{audioRatio}} * 音频补全倍率 {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"合计:文字部分 {{textTotal}} + 音频部分 {{audioTotal}} = {{total}}": "合计:文字部分 {{textTotal}} + 音频部分 {{audioTotal}} = {{total}}", "合计:文字部分 {{textTotal}} + 音频部分 {{audioTotal}} = {{total}}": "合计:文字部分 {{textTotal}} + 音频部分 {{audioTotal}} = {{total}}",
"模型倍率 {{modelRatio}},输出倍率 {{completionRatio}},缓存倍率 {{cacheRatio}},{{ratioType}} {{ratio}}": "模型倍率 {{modelRatio}},输出倍率 {{completionRatio}},缓存倍率 {{cacheRatio}},{{ratioType}} {{ratio}}", "模型倍率 {{modelRatio}},输出倍率 {{completionRatio}},缓存倍率 {{cacheRatio}},{{ratioType}} {{ratio}}": "模型倍率 {{modelRatio}},输出倍率 {{completionRatio}},缓存倍率 {{cacheRatio}},{{ratioType}} {{ratio}}",
"缓存创建倍率 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}": "缓存创建倍率 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}",
"缓存读取:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "缓存读取:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "缓存读取:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "缓存读取:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存创建倍率 {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存创建倍率 {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存创建倍率 {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存创建倍率 {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"5m缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 5m缓存创建倍率 {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}": "5m缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 5m缓存创建倍率 {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}", "5m缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 5m缓存创建倍率 {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}": "5m缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 5m缓存创建倍率 {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}",
"1h缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 1h缓存创建倍率 {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}": "1h缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 1h缓存创建倍率 {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}", "1h缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 1h缓存创建倍率 {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}": "1h缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 1h缓存创建倍率 {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}",
"输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 输出倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 输出倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 输出倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 输出倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"空": "空" "空": "空",
"{{ratioType}} {{ratio}}x": "{{ratioType}} {{ratio}}x",
"模型价格:{{symbol}}{{price}}": "模型价格:{{symbol}}{{price}}",
"模型价格 {{price}}": "模型价格 {{price}}",
"缓存读 {{price}} / 1M tokens": "缓存读 {{price}} / 1M tokens",
"5m缓存创建 {{price}} / 1M tokens": "5m缓存创建 {{price}} / 1M tokens",
"1h缓存创建 {{price}} / 1M tokens": "1h缓存创建 {{price}} / 1M tokens",
"缓存创建 {{price}} / 1M tokens": "缓存创建 {{price}} / 1M tokens",
"图片输入 {{price}} / 1M tokens": "图片输入 {{price}} / 1M tokens",
"输入 {{price}} / 1M tokens": "输入 {{price}} / 1M tokens",
"缓存 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "缓存 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
"缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
"5m缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "5m缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
"1h缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "1h缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
"Key": "Key",
"Key 摘要": "Key 摘要",
"扣费": "扣费",
"渠道亲和性": "渠道亲和性",
"由订阅抵扣": "由订阅抵扣",
"规则": "规则",
"订阅抵扣": "订阅抵扣",
"违规扣费": "违规扣费",
"(输入 {{nonImageInput}} tokens + 图片输入 {{imageInput}} tokens / 1M tokens * {{symbol}}{{price}}": "(输入 {{nonImageInput}} tokens + 图片输入 {{imageInput}} tokens / 1M tokens * {{symbol}}{{price}}",
"图片输入价格:{{symbol}}{{total}} / 1M tokens": "图片输入价格:{{symbol}}{{total}} / 1M tokens",
"文字提示 {{input}} tokens / 1M tokens * {{symbol}}{{textInputPrice}} + 文字补全 {{completion}} tokens / 1M tokens * {{symbol}}{{textCompPrice}} + 音频提示 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioInputPrice}} + 音频补全 {{audioCompletion}} tokens / 1M tokens * {{symbol}}{{audioCompPrice}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}": "文字提示 {{input}} tokens / 1M tokens * {{symbol}}{{textInputPrice}} + 文字补全 {{completion}} tokens / 1M tokens * {{symbol}}{{textCompPrice}} + 音频提示 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioInputPrice}} + 音频补全 {{audioCompletion}} tokens / 1M tokens * {{symbol}}{{audioCompPrice}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}",
"模型价格 {{symbol}}{{price}} / 次 * {{ratioType}} {{ratio}} = {{symbol}}{{total}}": "模型价格 {{symbol}}{{price}} / 次 * {{ratioType}} {{ratio}} = {{symbol}}{{total}}",
"缓存读取价格:{{symbol}}{{total}} / 1M tokens": "缓存读取价格:{{symbol}}{{total}} / 1M tokens",
"补全 {{completion}} tokens * 输出倍率 {{completionRatio}}": "补全 {{completion}} tokens * 输出倍率 {{completionRatio}}",
"补全倍率 {{completionRatio}}": "补全倍率 {{completionRatio}}",
"输入价格:{{symbol}}{{price}} / 1M tokens": "输入价格:{{symbol}}{{price}} / 1M tokens",
"输出价格 {{symbol}}{{price}} / 1M tokens": "输出价格 {{symbol}}{{price}} / 1M tokens",
"输出价格:{{symbol}}{{price}} / 1M tokens": "输出价格:{{symbol}}{{price}} / 1M tokens",
"输出价格:{{symbol}}{{total}} / 1M tokens": "输出价格:{{symbol}}{{total}} / 1M tokens"
} }
} }
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
"(输入 {{input}} tokens / 1M tokens * {{symbol}}{{price}}": "(輸入 {{input}} tokens / 1M tokens * {{symbol}}{{price}}", "(输入 {{input}} tokens / 1M tokens * {{symbol}}{{price}}": "(輸入 {{input}} tokens / 1M tokens * {{symbol}}{{price}}",
"(输入 {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + 音频输入 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}": "(輸入 {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + 音訊輸入 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}", "(输入 {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + 音频输入 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}": "(輸入 {{nonAudioInput}} tokens / 1M tokens * {{symbol}}{{price}} + 音訊輸入 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioPrice}}",
"(输入 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + 缓存 {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}": "(輸入 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + 快取 {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}", "(输入 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + 缓存 {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}": "(輸入 {{nonCacheInput}} tokens / 1M tokens * {{symbol}}{{price}} + 快取 {{cacheInput}} tokens / 1M tokens * {{symbol}}{{cachePrice}}",
"(输入 {{nonImageInput}} tokens + 图片输入 {{imageInput}} tokens * {{imageRatio}} / 1M tokens * {{symbol}}{{price}}": "(輸入 {{nonImageInput}} tokens + 圖片輸入 {{imageInput}} tokens * {{imageRatio}} / 1M tokens * {{symbol}}{{price}}",
"[最多请求次数]和[最多请求完成次数]的最大值为2147483647。": "[最多請求次數]和[最多請求完成次數]的最大值為2147483647。", "[最多请求次数]和[最多请求完成次数]的最大值为2147483647。": "[最多請求次數]和[最多請求完成次數]的最大值為2147483647。",
"[最多请求次数]必须大于等于0,[最多请求完成次数]必须大于等于1。": "[最多請求次數]必須大於等於0,[最多請求完成次數]必須大於等於1。", "[最多请求次数]必须大于等于0,[最多请求完成次数]必须大于等于1。": "[最多請求次數]必須大於等於0,[最多請求完成次數]必須大於等於1。",
"{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}": "{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}", "{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}": "{\n \"default\": [200, 100],\n \"vip\": [0, 1000]\n}",
...@@ -1109,7 +1108,6 @@ ...@@ -1109,7 +1108,6 @@
"按倍率类型筛选": "按倍率類型篩選", "按倍率类型筛选": "按倍率類型篩選",
"按倍率设置": "按倍率設定", "按倍率设置": "按倍率設定",
"按次": "按次", "按次": "按次",
"按次 {{price}} / 次": "按次 {{price}} / 次",
"按次计费": "按次計費", "按次计费": "按次計費",
"按照如下格式输入:AccessKey|SecretAccessKey|Region": "按照如下格式輸入:AccessKey|SecretAccessKey|Region", "按照如下格式输入:AccessKey|SecretAccessKey|Region": "按照如下格式輸入:AccessKey|SecretAccessKey|Region",
"按量计费": "按量計費", "按量计费": "按量計費",
...@@ -1436,6 +1434,7 @@ ...@@ -1436,6 +1434,7 @@
"模型价格": "模型價格", "模型价格": "模型價格",
"模型价格 {{symbol}}{{price}},{{ratioType}} {{ratio}}": "模型價格 {{symbol}}{{price}},{{ratioType}} {{ratio}}", "模型价格 {{symbol}}{{price}},{{ratioType}} {{ratio}}": "模型價格 {{symbol}}{{price}},{{ratioType}} {{ratio}}",
"模型价格:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}": "模型價格:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}", "模型价格:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}": "模型價格:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}",
"按次:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}": "按次:{{symbol}}{{price}} * {{ratioType}}:{{ratio}} = {{symbol}}{{total}}",
"模型倍率": "模型倍率", "模型倍率": "模型倍率",
"模型倍率 {{modelRatio}}": "模型倍率 {{modelRatio}}", "模型倍率 {{modelRatio}}": "模型倍率 {{modelRatio}}",
"模型倍率 {{modelRatio}},缓存倍率 {{cacheRatio}},输出倍率 {{completionRatio}},{{ratioType}} {{ratio}}": "模型倍率 {{modelRatio}},快取倍率 {{cacheRatio}},輸出倍率 {{completionRatio}},{{ratioType}} {{ratio}}", "模型倍率 {{modelRatio}},缓存倍率 {{cacheRatio}},输出倍率 {{completionRatio}},{{ratioType}} {{ratio}}": "模型倍率 {{modelRatio}},快取倍率 {{cacheRatio}},輸出倍率 {{completionRatio}},{{ratioType}} {{ratio}}",
...@@ -2860,26 +2859,21 @@ ...@@ -2860,26 +2859,21 @@
"计费显示模式": "計費顯示模式", "计费显示模式": "計費顯示模式",
"价格模式(默认)": "價格模式(預設)", "价格模式(默认)": "價格模式(預設)",
"模型价格 {{symbol}}{{price}} / 次": "模型價格 {{symbol}}{{price}} / 次", "模型价格 {{symbol}}{{price}} / 次": "模型價格 {{symbol}}{{price}} / 次",
"按次 {{symbol}}{{price}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}": "按次 {{symbol}}{{price}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}",
"模型价格:{{symbol}}{{price}} / 次": "模型價格:{{symbol}}{{price}} / 次", "模型价格:{{symbol}}{{price}} / 次": "模型價格:{{symbol}}{{price}} / 次",
"输入 {{price}} / 1M tokens": "輸入 {{price}} / 1M tokens", "按次:{{symbol}}{{price}}": "按次:{{symbol}}{{price}}",
"实际结算金额:{{symbol}}{{total}}(已包含分组价格调整)": "實際結算金額:{{symbol}}{{total}}(已包含分組價格調整)", "实际结算金额:{{symbol}}{{total}}(已包含分组价格调整)": "實際結算金額:{{symbol}}{{total}}(已包含分組價格調整)",
"缓存读取价格:{{symbol}}{{price}} / 1M tokens": "快取讀取價格:{{symbol}}{{price}} / 1M tokens", "缓存读取价格:{{symbol}}{{price}} / 1M tokens": "快取讀取價格:{{symbol}}{{price}} / 1M tokens",
"缓存读取价格 {{symbol}}{{price}} / 1M tokens": "快取讀取價格 {{symbol}}{{price}} / 1M tokens", "缓存读取价格 {{symbol}}{{price}} / 1M tokens": "快取讀取價格 {{symbol}}{{price}} / 1M tokens",
"缓存读取 {{price}}": "快取讀取 {{price}}",
"缓存创建价格:{{symbol}}{{price}} / 1M tokens": "快取建立價格:{{symbol}}{{price}} / 1M tokens", "缓存创建价格:{{symbol}}{{price}} / 1M tokens": "快取建立價格:{{symbol}}{{price}} / 1M tokens",
"缓存创建价格 {{symbol}}{{price}} / 1M tokens": "快取建立價格 {{symbol}}{{price}} / 1M tokens", "缓存创建价格 {{symbol}}{{price}} / 1M tokens": "快取建立價格 {{symbol}}{{price}} / 1M tokens",
"缓存创建 {{price}}": "快取建立 {{price}}",
"5m缓存创建价格:{{symbol}}{{price}} / 1M tokens": "5m快取建立價格:{{symbol}}{{price}} / 1M tokens", "5m缓存创建价格:{{symbol}}{{price}} / 1M tokens": "5m快取建立價格:{{symbol}}{{price}} / 1M tokens",
"5m缓存创建价格 {{symbol}}{{price}} / 1M tokens": "5m快取建立價格 {{symbol}}{{price}} / 1M tokens", "5m缓存创建价格 {{symbol}}{{price}} / 1M tokens": "5m快取建立價格 {{symbol}}{{price}} / 1M tokens",
"5m缓存创建 {{price}}": "5m快取建立 {{price}}",
"1h缓存创建价格:{{symbol}}{{price}} / 1M tokens": "1h快取建立價格:{{symbol}}{{price}} / 1M tokens", "1h缓存创建价格:{{symbol}}{{price}} / 1M tokens": "1h快取建立價格:{{symbol}}{{price}} / 1M tokens",
"1h缓存创建价格 {{symbol}}{{price}} / 1M tokens": "1h快取建立價格 {{symbol}}{{price}} / 1M tokens", "1h缓存创建价格 {{symbol}}{{price}} / 1M tokens": "1h快取建立價格 {{symbol}}{{price}} / 1M tokens",
"1h缓存创建 {{price}}": "1h快取建立 {{price}}",
"图片输入价格:{{symbol}}{{price}} / 1M tokens": "圖片輸入價格:{{symbol}}{{price}} / 1M tokens", "图片输入价格:{{symbol}}{{price}} / 1M tokens": "圖片輸入價格:{{symbol}}{{price}} / 1M tokens",
"图片输入价格 {{symbol}}{{price}} / 1M tokens": "圖片輸入價格 {{symbol}}{{price}} / 1M tokens", "图片输入价格 {{symbol}}{{price}} / 1M tokens": "圖片輸入價格 {{symbol}}{{price}} / 1M tokens",
"图片输入 {{price}}": "圖片輸入 {{price}}",
"输入价格 {{symbol}}{{price}} / 1M tokens": "輸入價格 {{symbol}}{{price}} / 1M tokens", "输入价格 {{symbol}}{{price}} / 1M tokens": "輸入價格 {{symbol}}{{price}} / 1M tokens",
"补全价格 {{symbol}}{{price}} / 1M tokens": "補全價格 {{symbol}}{{price}} / 1M tokens",
"音频输入价格:{{symbol}}{{price}} / 1M tokens": "音訊輸入價格:{{symbol}}{{price}} / 1M tokens", "音频输入价格:{{symbol}}{{price}} / 1M tokens": "音訊輸入價格:{{symbol}}{{price}} / 1M tokens",
"音频补全价格:{{symbol}}{{price}} / 1M tokens": "音訊補全價格:{{symbol}}{{price}} / 1M tokens", "音频补全价格:{{symbol}}{{price}} / 1M tokens": "音訊補全價格:{{symbol}}{{price}} / 1M tokens",
"Web 搜索调用 {{webSearchCallCount}} 次": "Web 搜尋呼叫 {{webSearchCallCount}} 次", "Web 搜索调用 {{webSearchCallCount}} 次": "Web 搜尋呼叫 {{webSearchCallCount}} 次",
...@@ -2900,12 +2894,49 @@ ...@@ -2900,12 +2894,49 @@
"音频输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 音频倍率 {{audioRatio}} * 音频补全倍率 {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "音訊輸出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 音訊倍率 {{audioRatio}} * 音訊補全倍率 {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "音频输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 音频倍率 {{audioRatio}} * 音频补全倍率 {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "音訊輸出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 音訊倍率 {{audioRatio}} * 音訊補全倍率 {{audioCompletionRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"合计:文字部分 {{textTotal}} + 音频部分 {{audioTotal}} = {{total}}": "合計:文字部分 {{textTotal}} + 音訊部分 {{audioTotal}} = {{total}}", "合计:文字部分 {{textTotal}} + 音频部分 {{audioTotal}} = {{total}}": "合計:文字部分 {{textTotal}} + 音訊部分 {{audioTotal}} = {{total}}",
"模型倍率 {{modelRatio}},输出倍率 {{completionRatio}},缓存倍率 {{cacheRatio}},{{ratioType}} {{ratio}}": "模型倍率 {{modelRatio}},輸出倍率 {{completionRatio}},快取倍率 {{cacheRatio}},{{ratioType}} {{ratio}}", "模型倍率 {{modelRatio}},输出倍率 {{completionRatio}},缓存倍率 {{cacheRatio}},{{ratioType}} {{ratio}}": "模型倍率 {{modelRatio}},輸出倍率 {{completionRatio}},快取倍率 {{cacheRatio}},{{ratioType}} {{ratio}}",
"缓存创建倍率 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}": "快取建立倍率 5m {{cacheCreationRatio5m}} / 1h {{cacheCreationRatio1h}}",
"缓存读取:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "快取讀取:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 快取倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "缓存读取:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "快取讀取:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 快取倍率 {{cacheRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存创建倍率 {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "快取建立:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 快取建立倍率 {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 缓存创建倍率 {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "快取建立:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 快取建立倍率 {{cacheCreationRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"5m缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 5m缓存创建倍率 {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}": "5m快取建立:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 5m快取建立倍率 {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}", "5m缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 5m缓存创建倍率 {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}": "5m快取建立:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 5m快取建立倍率 {{cacheCreationRatio5m}} * {{ratioType}} {{ratio}} = {{amount}}",
"1h缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 1h缓存创建倍率 {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}": "1h快取建立:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 1h快取建立倍率 {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}", "1h缓存创建:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 1h缓存创建倍率 {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}": "1h快取建立:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 1h快取建立倍率 {{cacheCreationRatio1h}} * {{ratioType}} {{ratio}} = {{amount}}",
"输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 输出倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "輸出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 輸出倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}", "输出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 输出倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}": "輸出:{{tokens}} / 1M * 模型倍率 {{modelRatio}} * 輸出倍率 {{completionRatio}} * {{ratioType}} {{ratio}} = {{amount}}",
"空": "空" "空": "空",
"{{ratioType}} {{ratio}}x": "{{ratioType}} {{ratio}}x",
"模型价格:{{symbol}}{{price}}": "模型價格:{{symbol}}{{price}}",
"模型价格 {{price}}": "模型價格 {{price}}",
"缓存读 {{price}} / 1M tokens": "快取讀 {{price}} / 1M tokens",
"5m缓存创建 {{price}} / 1M tokens": "5m快取建立 {{price}} / 1M tokens",
"1h缓存创建 {{price}} / 1M tokens": "1h快取建立 {{price}} / 1M tokens",
"缓存创建 {{price}} / 1M tokens": "快取建立 {{price}} / 1M tokens",
"图片输入 {{price}} / 1M tokens": "圖片輸入 {{price}} / 1M tokens",
"输入 {{price}} / 1M tokens": "輸入 {{price}} / 1M tokens",
"缓存 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "快取 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
"缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "快取建立 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
"5m缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "5m快取建立 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
"1h缓存创建 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}": "1h快取建立 {{tokens}} tokens / 1M tokens * {{symbol}}{{price}}",
"Key": "Key",
"Key 摘要": "Key 摘要",
"写": "寫",
"异步任务退款": "非同步任務退款",
"扣费": "扣費",
"根据 Anthropic 协定,/v1/messages 的输入 tokens 仅统计非缓存输入,不包含缓存读取与缓存写入 tokens。": "根據 Anthropic 協定,/v1/messages 的輸入 tokens 僅統計非快取輸入,不包含快取讀取與快取寫入 tokens。",
"渠道亲和性": "渠道親和性",
"由订阅抵扣": "由訂閱抵扣",
"缓存写": "快取寫",
"缓存读": "快取讀",
"规则": "規則",
"订阅抵扣": "訂閱抵扣",
"违规扣费": "違規扣費",
"退款": "退款",
"(输入 {{nonImageInput}} tokens + 图片输入 {{imageInput}} tokens / 1M tokens * {{symbol}}{{price}}": "(輸入 {{nonImageInput}} tokens + 圖片輸入 {{imageInput}} tokens / 1M tokens * {{symbol}}{{price}}",
"图片输入价格:{{symbol}}{{total}} / 1M tokens": "圖片輸入價格:{{symbol}}{{total}} / 1M tokens",
"文字提示 {{input}} tokens / 1M tokens * {{symbol}}{{textInputPrice}} + 文字补全 {{completion}} tokens / 1M tokens * {{symbol}}{{textCompPrice}} + 音频提示 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioInputPrice}} + 音频补全 {{audioCompletion}} tokens / 1M tokens * {{symbol}}{{audioCompPrice}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}": "文字提示 {{input}} tokens / 1M tokens * {{symbol}}{{textInputPrice}} + 文字補全 {{completion}} tokens / 1M tokens * {{symbol}}{{textCompPrice}} + 音訊提示 {{audioInput}} tokens / 1M tokens * {{symbol}}{{audioInputPrice}} + 音訊補全 {{audioCompletion}} tokens / 1M tokens * {{symbol}}{{audioCompPrice}} * {{ratioType}} {{ratio}} = {{symbol}}{{total}}",
"模型价格 {{symbol}}{{price}} / 次 * {{ratioType}} {{ratio}} = {{symbol}}{{total}}": "模型價格 {{symbol}}{{price}} / 次 * {{ratioType}} {{ratio}} = {{symbol}}{{total}}",
"缓存读取价格:{{symbol}}{{total}} / 1M tokens": "快取讀取價格:{{symbol}}{{total}} / 1M tokens",
"补全 {{completion}} tokens * 输出倍率 {{completionRatio}}": "補全 {{completion}} tokens * 輸出倍率 {{completionRatio}}",
"补全倍率 {{completionRatio}}": "補全倍率 {{completionRatio}}",
"输入价格:{{symbol}}{{price}} / 1M tokens": "輸入價格:{{symbol}}{{price}} / 1M tokens",
"输出价格 {{symbol}}{{price}} / 1M tokens": "輸出價格 {{symbol}}{{price}} / 1M tokens",
"输出价格:{{symbol}}{{price}} / 1M tokens": "輸出價格:{{symbol}}{{price}} / 1M tokens",
"输出价格:{{symbol}}{{total}} / 1M tokens": "輸出價格:{{symbol}}{{total}} / 1M tokens"
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment