diff --git a/relay/channel/openai/chat_via_responses.go b/relay/channel/openai/chat_via_responses.go index a93c390..7bfe52a 100644 --- a/relay/channel/openai/chat_via_responses.go +++ b/relay/channel/openai/chat_via_responses.go @@ -63,6 +63,8 @@ func OaiResponsesToChatHandler(c *gin.Context, info *relaycommon.RelayInfo, resp return nil, apiErr } + relaycommon.SetRelayChatID(c, responsesResp.ID) + chatId := helper.GetResponseID(c) chatResp, usage, err := service.ResponsesResponseToChatCompletionsResponse(&responsesResp, chatId) if err != nil { diff --git a/relay/channel/openai/relay-openai.go b/relay/channel/openai/relay-openai.go index a4de161..1ef6166 100644 --- a/relay/channel/openai/relay-openai.go +++ b/relay/channel/openai/relay-openai.go @@ -189,6 +189,7 @@ func OaiStreamHandler(c *gin.Context, info *relaycommon.RelayInfo, resp *http.Re applyUsagePostProcessing(info, usage, common.StringToByteSlice(lastStreamData)) HandleFinalResponse(c, info, lastStreamData, responseId, createAt, model, systemFingerprint, usage, containStreamUsage) + relaycommon.SetRelayChatID(c, responseId) return usage, nil } @@ -225,6 +226,8 @@ func OpenaiHandler(c *gin.Context, info *relaycommon.RelayInfo, resp *http.Respo return nil, types.NewOpenAIError(err, types.ErrorCodeBadResponseBody, http.StatusInternalServerError) } + relaycommon.SetRelayChatID(c, simpleResponse.Id) + if oaiError := simpleResponse.GetOpenAIError(); oaiError != nil && oaiError.Type != "" { return nil, types.WithOpenAIError(*oaiError, resp.StatusCode) } diff --git a/relay/channel/openai/relay_responses.go b/relay/channel/openai/relay_responses.go index 1b88457..152c7ef 100644 --- a/relay/channel/openai/relay_responses.go +++ b/relay/channel/openai/relay_responses.go @@ -38,6 +38,8 @@ func OaiResponsesHandler(c *gin.Context, info *relaycommon.RelayInfo, resp *http return nil, apiErr } + relaycommon.SetRelayChatID(c, responsesResponse.ID) + if responsesResponse.HasImageGenerationCall() { c.Set("image_generation_call", true) c.Set("image_generation_call_quality", responsesResponse.GetQuality()) @@ -106,6 +108,7 @@ func OaiResponsesStreamHandler(c *gin.Context, info *relaycommon.RelayInfo, resp usage.PromptTokensDetails.CachedTokens = streamResponse.Response.Usage.InputTokensDetails.CachedTokens } } + relaycommon.SetRelayChatID(c, streamResponse.Response.ID) if streamResponse.Response.HasImageGenerationCall() { c.Set("image_generation_call", true) c.Set("image_generation_call_quality", streamResponse.Response.GetQuality()) diff --git a/web/src/components/table/users/UsersColumnDefs.jsx b/web/src/components/table/users/UsersColumnDefs.jsx index dc3e6f3..c3ccfcf 100644 --- a/web/src/components/table/users/UsersColumnDefs.jsx +++ b/web/src/components/table/users/UsersColumnDefs.jsx @@ -137,7 +137,9 @@ const renderStatistics = (text, record, showEnableDisableModal, t) => { const renderQuotaUsage = (text, record, t) => { const { Paragraph } = Typography; const used = parseInt(record.used_quota) || 0; - const remain = parseInt(record.quota) || 0; + const remain = record.source === 'synced' + ? (parseInt(record.synced_quota) || 0) + : (parseInt(record.quota) || 0); const total = used + remain; const percent = total > 0 ? (remain / total) * 100 : 0; const popoverContent = (