فهرست منبع

feat: 完善日志详情

CaIon 1 سال پیش
والد
کامیت
39f6812a2b
3فایلهای تغییر یافته به همراه23 افزوده شده و 14 حذف شده
  1. 2 2
      relay/relay-text.go
  2. 2 4
      web/src/components/LogsTable.js
  3. 19 8
      web/src/helpers/render.js

+ 2 - 2
relay/relay-text.go

@@ -268,8 +268,8 @@ func postConsumeQuota(ctx *gin.Context, relayInfo *relaycommon.RelayInfo, textRe
 
 	quota := 0
 	if modelPrice == -1 {
-		quota = promptTokens + int(float64(completionTokens)*completionRatio)
-		quota = int(float64(quota) * ratio)
+		quota = promptTokens + int(math.Round(float64(completionTokens)*completionRatio))
+		quota = int(math.Round(float64(quota) * ratio))
 		if ratio != 0 && quota <= 0 {
 			quota = 1
 		}

+ 2 - 4
web/src/components/LogsTable.js

@@ -316,6 +316,8 @@ const LogsTable = () => {
         }
         let other = JSON.parse(record.other);
         let content = renderModelPrice(
+          record.prompt_tokens,
+          record.completion_tokens,
           other.model_ratio,
           other.model_price,
           other.completion_ratio,
@@ -326,10 +328,6 @@ const LogsTable = () => {
             <Paragraph
               ellipsis={{
                 rows: 2,
-                showTooltip: {
-                  type: 'popover',
-                  opts: { style: { width: 240 } },
-                },
               }}
               style={{ maxWidth: 240 }}
             >

+ 19 - 8
web/src/helpers/render.js

@@ -135,6 +135,8 @@ export function renderQuota(quota, digits = 2) {
 }
 
 export function renderModelPrice(
+  inputTokens,
+  completionTokens,
   modelRatio,
   modelPrice = -1,
   completionRatio,
@@ -147,15 +149,24 @@ export function renderModelPrice(
     if (completionRatio === undefined) {
       completionRatio = 0;
     }
-    let inputRatioPrice = modelRatio * 0.002 * groupRatio;
-    let completionRatioPrice =
-      modelRatio * completionRatio * 0.002 * groupRatio;
+    let inputRatioPrice = modelRatio * 2.0 * groupRatio;
+    let completionRatioPrice = modelRatio * completionRatio * 2.0 * groupRatio;
+    let price =
+      (inputTokens / 1000000) * inputRatioPrice +
+      (completionTokens / 1000000) * completionRatioPrice;
     return (
-      '输入 $' +
-      inputRatioPrice.toFixed(3) +
-      '/1K tokens,补全 $' +
-      completionRatioPrice.toFixed(3) +
-      '/1K tokens'
+      <>
+        <article>
+          <p>提示 ${inputRatioPrice} / 1M tokens</p>
+          <p>补全 ${completionRatioPrice} / 1M tokens</p>
+          <p>计算过程:</p>
+          <p>
+            提示 {inputTokens} tokens / 1M tokens * ${inputRatioPrice} + 补全{' '}
+            {completionTokens} tokens / 1M tokens * ${completionRatioPrice} = $
+            {price.toFixed(6)}
+          </p>
+        </article>
+      </>
     );
   }
 }