fix: mistral
This commit is contained in:
@@ -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"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user