text.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package mistral
  2. import (
  3. "encoding/json"
  4. "one-api/dto"
  5. )
  6. func requestOpenAI2Mistral(request dto.GeneralOpenAIRequest) *dto.GeneralOpenAIRequest {
  7. messages := make([]dto.Message, 0, len(request.Messages))
  8. for _, message := range request.Messages {
  9. if !message.IsStringContent() {
  10. mediaMessages := message.ParseContent()
  11. for j, mediaMessage := range mediaMessages {
  12. if mediaMessage.Type == dto.ContentTypeImageURL {
  13. imageUrl := mediaMessage.ImageUrl.(dto.MessageImageUrl)
  14. mediaMessage.ImageUrl = imageUrl.Url
  15. mediaMessages[j] = mediaMessage
  16. }
  17. }
  18. messageRaw, _ := json.Marshal(mediaMessages)
  19. message.Content = messageRaw
  20. }
  21. messages = append(messages, dto.Message{
  22. Role: message.Role,
  23. Content: message.Content,
  24. ToolCalls: message.ToolCalls,
  25. ToolCallId: message.ToolCallId,
  26. })
  27. }
  28. return &dto.GeneralOpenAIRequest{
  29. Model: request.Model,
  30. Stream: request.Stream,
  31. Messages: messages,
  32. Temperature: request.Temperature,
  33. TopP: request.TopP,
  34. MaxTokens: request.MaxTokens,
  35. Tools: request.Tools,
  36. ToolChoice: request.ToolChoice,
  37. }
  38. }