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

Function difyStreamHandler

relay/channel/dify/relay-dify.go:213–252  ·  view source on GitHub ↗
(c *gin.Context, info *relaycommon.RelayInfo, resp *http.Response)

Source from the content-addressed store, hash-verified

211}
212
213func difyStreamHandler(c *gin.Context, info *relaycommon.RelayInfo, resp *http.Response) (*dto.Usage, *types.NewAPIError) {
214 var responseText string
215 usage := &dto.Usage{}
216 var nodeToken int
217 helper.SetEventStreamHeaders(c)
218 helper.StreamScannerHandler(c, resp, info, func(data string) bool {
219 var difyResponse DifyChunkChatCompletionResponse
220 err := json.Unmarshal([]byte(data), &difyResponse)
221 if err != nil {
222 common.SysError("error unmarshalling stream response: " + err.Error())
223 return true
224 }
225 var openaiResponse dto.ChatCompletionsStreamResponse
226 if difyResponse.Event == "message_end" {
227 usage = &difyResponse.MetaData.Usage
228 return false
229 } else if difyResponse.Event == "error" {
230 return false
231 } else {
232 openaiResponse = *streamResponseDify2OpenAI(difyResponse)
233 if len(openaiResponse.Choices) != 0 {
234 responseText += openaiResponse.Choices[0].Delta.GetContentString()
235 if openaiResponse.Choices[0].Delta.ReasoningContent != nil {
236 nodeToken += 1
237 }
238 }
239 }
240 err = helper.ObjectData(c, openaiResponse)
241 if err != nil {
242 common.SysError(err.Error())
243 }
244 return true
245 })
246 helper.Done(c)
247 if usage.TotalTokens == 0 {
248 usage = service.ResponseText2Usage(responseText, info.UpstreamModelName, info.PromptTokens)
249 }
250 usage.CompletionTokens += nodeToken
251 return usage, nil
252}
253
254func difyHandler(c *gin.Context, info *relaycommon.RelayInfo, resp *http.Response) (*dto.Usage, *types.NewAPIError) {
255 var difyResponse DifyChatCompletionResponse

Callers 1

DoResponseMethod · 0.85

Calls 8

SetEventStreamHeadersFunction · 0.92
StreamScannerHandlerFunction · 0.92
ObjectDataFunction · 0.92
DoneFunction · 0.92
ResponseText2UsageFunction · 0.92
ErrorMethod · 0.80
GetContentStringMethod · 0.80

Tested by

no test coverage detected