fix: mistral

This commit is contained in:
1808837298@qq.com
2025-02-22 16:29:48 +08:00
parent 27ea231d66
commit 88a2fec190
4 changed files with 13 additions and 14 deletions

View File

@@ -101,7 +101,7 @@ type Message struct {
type MediaContent struct { type MediaContent struct {
Type string `json:"type"` Type string `json:"type"`
Text string `json:"text"` Text string `json:"text,omitempty"`
ImageUrl any `json:"image_url,omitempty"` ImageUrl any `json:"image_url,omitempty"`
InputAudio any `json:"input_audio,omitempty"` InputAudio any `json:"input_audio,omitempty"`
} }

View File

@@ -41,7 +41,7 @@ func (a *Adaptor) ConvertRequest(c *gin.Context, info *relaycommon.RelayInfo, re
if request == nil { if request == nil {
return nil, errors.New("request is nil") return nil, errors.New("request is nil")
} }
return request, nil return requestOpenAI2Mistral(request), nil
} }
func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, request dto.RerankRequest) (any, error) { func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, request dto.RerankRequest) (any, error) {

View File

@@ -1,25 +1,21 @@
package mistral package mistral
import ( import (
"encoding/json"
"one-api/dto" "one-api/dto"
) )
func requestOpenAI2Mistral(request dto.GeneralOpenAIRequest) *dto.GeneralOpenAIRequest { func requestOpenAI2Mistral(request *dto.GeneralOpenAIRequest) *dto.GeneralOpenAIRequest {
messages := make([]dto.Message, 0, len(request.Messages)) messages := make([]dto.Message, 0, len(request.Messages))
for _, message := range request.Messages { for _, message := range request.Messages {
if !message.IsStringContent() { mediaMessages := message.ParseContent()
mediaMessages := message.ParseContent() for j, mediaMessage := range mediaMessages {
for j, mediaMessage := range mediaMessages { if mediaMessage.Type == dto.ContentTypeImageURL {
if mediaMessage.Type == dto.ContentTypeImageURL { imageUrl := mediaMessage.ImageUrl.(dto.MessageImageUrl)
imageUrl := mediaMessage.ImageUrl.(dto.MessageImageUrl) mediaMessage.ImageUrl = imageUrl.Url
mediaMessage.ImageUrl = imageUrl.Url mediaMessages[j] = mediaMessage
mediaMessages[j] = mediaMessage
}
} }
messageRaw, _ := json.Marshal(mediaMessages)
message.Content = messageRaw
} }
message.SetMediaContent(mediaMessages)
messages = append(messages, dto.Message{ messages = append(messages, dto.Message{
Role: message.Role, Role: message.Role,
Content: message.Content, Content: message.Content,

View File

@@ -87,6 +87,9 @@ func OaiStreamHandler(c *gin.Context, resp *http.Response, info *relaycommon.Rel
info.SetFirstResponseTime() info.SetFirstResponseTime()
ticker.Reset(time.Duration(constant.StreamingTimeout) * time.Second) ticker.Reset(time.Duration(constant.StreamingTimeout) * time.Second)
data := scanner.Text() data := scanner.Text()
if common.DebugEnabled {
println(data)
}
if len(data) < 6 { // ignore blank line or wrong format if len(data) < 6 { // ignore blank line or wrong format
continue continue
} }