| // Copyright (c) 2025 Tethys Plex | |
| // | |
| // This file is part of Veloera. | |
| // | |
| // This program is free software: you can redistribute it and/or modify | |
| // it under the terms of the GNU General Public License as published by | |
| // the Free Software Foundation, either version 3 of the License, or | |
| // (at your option) any later version. | |
| // | |
| // This program is distributed in the hope that it will be useful, | |
| // but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| // GNU General Public License for more details. | |
| // | |
| // You should have received a copy of the GNU General Public License | |
| // along with this program. If not, see <https://www.gnu.org/licenses/>. | |
| package service | |
| import ( | |
| "veloera/dto" | |
| ) | |
| //func GetPromptTokens(textRequest dto.GeneralOpenAIRequest, relayMode int) (int, error) { | |
| // switch relayMode { | |
| // case constant.RelayModeChatCompletions: | |
| // return CountTokenMessages(textRequest.Messages, textRequest.Model) | |
| // case constant.RelayModeCompletions: | |
| // return CountTokenInput(textRequest.Prompt, textRequest.Model), nil | |
| // case constant.RelayModeModerations: | |
| // return CountTokenInput(textRequest.Input, textRequest.Model), nil | |
| // } | |
| // return 0, errors.New("unknown relay mode") | |
| //} | |
| func ResponseText2Usage(responseText string, modeName string, promptTokens int) (*dto.Usage, error) { | |
| usage := &dto.Usage{} | |
| usage.PromptTokens = promptTokens | |
| ctkm, err := CountTextToken(responseText, modeName) | |
| usage.CompletionTokens = ctkm | |
| usage.TotalTokens = usage.PromptTokens + usage.CompletionTokens | |
| return usage, err | |
| } | |
| func ValidUsage(usage *dto.Usage) bool { | |
| return usage != nil && (usage.PromptTokens != 0 || usage.CompletionTokens != 0) | |
| } | |