(c *gin.Context, runEmbeddings bool, bytes []byte, e estimator, aoe azureEstimator, model, provider string)
| 185 | } |
| 186 | |
| 187 | func parseResult(c *gin.Context, runEmbeddings bool, bytes []byte, e estimator, aoe azureEstimator, model, provider string) error { |
| 188 | base64ChatRes := &EmbeddingResponseBase64{} |
| 189 | chatRes := &EmbeddingResponse{} |
| 190 | |
| 191 | var cost float64 = 0 |
| 192 | promptTokenCounts := 0 |
| 193 | completionTokenCounts := 0 |
| 194 | |
| 195 | defer func() { |
| 196 | c.Set("provider", provider) |
| 197 | c.Set("costInUsd", cost) |
| 198 | c.Set("promptTokenCount", promptTokenCounts) |
| 199 | c.Set("completionTokenCount", completionTokenCounts) |
| 200 | }() |
| 201 | |
| 202 | if runEmbeddings { |
| 203 | format := c.GetString("encoding_format") |
| 204 | if format == "base64" { |
| 205 | err := json.Unmarshal(bytes, base64ChatRes) |
| 206 | if err != nil { |
| 207 | return err |
| 208 | } |
| 209 | } |
| 210 | |
| 211 | if format != "base64" { |
| 212 | err := json.Unmarshal(bytes, chatRes) |
| 213 | if err != nil { |
| 214 | return err |
| 215 | } |
| 216 | } |
| 217 | |
| 218 | totalTokens := 0 |
| 219 | if format == "base64" { |
| 220 | totalTokens = base64ChatRes.Usage.TotalTokens |
| 221 | promptTokenCounts = base64ChatRes.Usage.PromptTokens |
| 222 | } |
| 223 | |
| 224 | if format != "base64" { |
| 225 | totalTokens = chatRes.Usage.TotalTokens |
| 226 | promptTokenCounts = chatRes.Usage.PromptTokens |
| 227 | } |
| 228 | |
| 229 | if provider == "azure" { |
| 230 | ecost, err := aoe.EstimateEmbeddingsInputCost(model, totalTokens) |
| 231 | if err != nil { |
| 232 | return err |
| 233 | } |
| 234 | |
| 235 | cost = ecost |
| 236 | } else if provider == "openai" { |
| 237 | ecost, err := e.EstimateEmbeddingsInputCost(model, totalTokens) |
| 238 | if err != nil { |
| 239 | return err |
| 240 | } |
| 241 | |
| 242 | cost = ecost |
| 243 | } |
| 244 |
no test coverage detected