embed.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package model
  2. import "github.com/labring/aiproxy/core/model"
  3. type EmbeddingRequest struct {
  4. Input string `json:"input"`
  5. Model string `json:"model"`
  6. EncodingFormat string `json:"encoding_format"`
  7. Dimensions int `json:"dimensions"`
  8. }
  9. type EmbeddingResponseItem struct {
  10. Object string `json:"object"`
  11. Embedding []float64 `json:"embedding"`
  12. Index int `json:"index"`
  13. }
  14. type EmbeddingResponse struct {
  15. Object string `json:"object"`
  16. Model string `json:"model"`
  17. Data []*EmbeddingResponseItem `json:"data"`
  18. Usage EmbeddingUsage `json:"usage"`
  19. }
  20. type EmbeddingUsage struct {
  21. PromptTokens int64 `json:"prompt_tokens,omitempty"`
  22. TotalTokens int64 `json:"total_tokens"`
  23. PromptTokensDetails *EmbeddingPromptTokensDetails `json:"prompt_tokens_details,omitempty"`
  24. }
  25. type EmbeddingPromptTokensDetails struct {
  26. TextTokens int64 `json:"text_tokens,omitempty"`
  27. ImageTokens int64 `json:"image_tokens,omitempty"`
  28. }
  29. func (u EmbeddingUsage) ToModelUsage() model.Usage {
  30. usage := model.Usage{
  31. InputTokens: model.ZeroNullInt64(u.PromptTokens),
  32. TotalTokens: model.ZeroNullInt64(u.TotalTokens),
  33. }
  34. if u.PromptTokensDetails != nil {
  35. usage.ImageInputTokens = model.ZeroNullInt64(u.PromptTokensDetails.ImageTokens)
  36. }
  37. return usage
  38. }