MCPcopy Create free account
hub / github.com/aiprodcoder/MIXAPI / requestOpenAI2Dify

Function requestOpenAI2Dify

relay/channel/dify/relay-dify.go:125–175  ·  view source on GitHub ↗
(c *gin.Context, info *relaycommon.RelayInfo, request dto.GeneralOpenAIRequest)

Source from the content-addressed store, hash-verified

123}
124
125func requestOpenAI2Dify(c *gin.Context, info *relaycommon.RelayInfo, request dto.GeneralOpenAIRequest) *DifyChatRequest {
126 difyReq := DifyChatRequest{
127 Inputs: make(map[string]interface{}),
128 AutoGenerateName: false,
129 }
130
131 user := request.User
132 if user == "" {
133 user = helper.GetResponseID(c)
134 }
135 difyReq.User = user
136
137 files := make([]DifyFile, 0)
138 var content strings.Builder
139 for _, message := range request.Messages {
140 if message.Role == "system" {
141 content.WriteString("SYSTEM: \n" + message.StringContent() + "\n")
142 } else if message.Role == "assistant" {
143 content.WriteString("ASSISTANT: \n" + message.StringContent() + "\n")
144 } else {
145 parseContent := message.ParseContent()
146 for _, mediaContent := range parseContent {
147 switch mediaContent.Type {
148 case dto.ContentTypeText:
149 content.WriteString("USER: \n" + mediaContent.Text + "\n")
150 case dto.ContentTypeImageURL:
151 media := mediaContent.GetImageMedia()
152 var file *DifyFile
153 if media.IsRemoteImage() {
154 file.Type = media.MimeType
155 file.TransferMode = "remote_url"
156 file.URL = media.Url
157 } else {
158 file = uploadDifyFile(c, info, difyReq.User, mediaContent)
159 }
160 if file != nil {
161 files = append(files, *file)
162 }
163 }
164 }
165 }
166 }
167 difyReq.Query = content.String()
168 difyReq.Files = files
169 mode := "blocking"
170 if request.Stream {
171 mode = "streaming"
172 }
173 difyReq.ResponseMode = mode
174 return &difyReq
175}
176
177func streamResponseDify2OpenAI(difyResponse DifyChunkChatCompletionResponse) *dto.ChatCompletionsStreamResponse {
178 response := dto.ChatCompletionsStreamResponse{

Callers 1

ConvertOpenAIRequestMethod · 0.85

Calls 6

GetResponseIDFunction · 0.92
uploadDifyFileFunction · 0.85
StringContentMethod · 0.80
GetImageMediaMethod · 0.80
IsRemoteImageMethod · 0.80
ParseContentMethod · 0.45

Tested by

no test coverage detected