Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
new-api
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
cc219801
authored
Apr 10, 2025
by
Calcium-Ion
Committed by
GitHub
Apr 10, 2025
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #959 from Praying/main
fix(relay): 优化数据流处理
parents
60a9bd45
5bcfb850
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
7 additions
and
10 deletions
+7
-10
relay/channel/dify/relay-dify.go
+1
-9
relay/helper/stream_scanner.go
+6
-1
No files found.
relay/channel/dify/relay-dify.go
View file @
cc219801
package
dify
package
dify
import
(
import
(
"bufio"
"bytes"
"bytes"
"encoding/base64"
"encoding/base64"
"encoding/json"
"encoding/json"
...
@@ -213,12 +212,8 @@ func streamResponseDify2OpenAI(difyResponse DifyChunkChatCompletionResponse) *dt
...
@@ -213,12 +212,8 @@ func streamResponseDify2OpenAI(difyResponse DifyChunkChatCompletionResponse) *dt
func
difyStreamHandler
(
c
*
gin
.
Context
,
resp
*
http
.
Response
,
info
*
relaycommon
.
RelayInfo
)
(
*
dto
.
OpenAIErrorWithStatusCode
,
*
dto
.
Usage
)
{
func
difyStreamHandler
(
c
*
gin
.
Context
,
resp
*
http
.
Response
,
info
*
relaycommon
.
RelayInfo
)
(
*
dto
.
OpenAIErrorWithStatusCode
,
*
dto
.
Usage
)
{
var
responseText
string
var
responseText
string
usage
:=
&
dto
.
Usage
{}
usage
:=
&
dto
.
Usage
{}
scanner
:=
bufio
.
NewScanner
(
resp
.
Body
)
scanner
.
Split
(
bufio
.
ScanLines
)
var
nodeToken
int
var
nodeToken
int
helper
.
SetEventStreamHeaders
(
c
)
helper
.
SetEventStreamHeaders
(
c
)
helper
.
StreamScannerHandler
(
c
,
resp
,
info
,
func
(
data
string
)
bool
{
helper
.
StreamScannerHandler
(
c
,
resp
,
info
,
func
(
data
string
)
bool
{
var
difyResponse
DifyChunkChatCompletionResponse
var
difyResponse
DifyChunkChatCompletionResponse
err
:=
json
.
Unmarshal
([]
byte
(
data
),
&
difyResponse
)
err
:=
json
.
Unmarshal
([]
byte
(
data
),
&
difyResponse
)
...
@@ -247,13 +242,10 @@ func difyStreamHandler(c *gin.Context, resp *http.Response, info *relaycommon.Re
...
@@ -247,13 +242,10 @@ func difyStreamHandler(c *gin.Context, resp *http.Response, info *relaycommon.Re
}
}
return
true
return
true
})
})
if
err
:=
scanner
.
Err
();
err
!=
nil
{
common
.
SysError
(
"error reading stream: "
+
err
.
Error
())
}
helper
.
Done
(
c
)
helper
.
Done
(
c
)
err
:=
resp
.
Body
.
Close
()
err
:=
resp
.
Body
.
Close
()
if
err
!=
nil
{
if
err
!=
nil
{
//return service.OpenAIErrorWrapper(err, "close_response_body_failed", http.StatusInternalServerError), nil
//
return service.OpenAIErrorWrapper(err, "close_response_body_failed", http.StatusInternalServerError), nil
common
.
SysError
(
"close_response_body_failed: "
+
err
.
Error
())
common
.
SysError
(
"close_response_body_failed: "
+
err
.
Error
())
}
}
if
usage
.
TotalTokens
==
0
{
if
usage
.
TotalTokens
==
0
{
...
...
relay/helper/stream_scanner.go
View file @
cc219801
...
@@ -14,6 +14,11 @@ import (
...
@@ -14,6 +14,11 @@ import (
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin"
)
)
const
(
InitialScannerBufferSize
=
1
<<
20
// 1MB (1*1024*1024)
MaxScannerBufferSize
=
10
<<
20
// 10MB (10*1024*1024)
)
func
StreamScannerHandler
(
c
*
gin
.
Context
,
resp
*
http
.
Response
,
info
*
relaycommon
.
RelayInfo
,
dataHandler
func
(
data
string
)
bool
)
{
func
StreamScannerHandler
(
c
*
gin
.
Context
,
resp
*
http
.
Response
,
info
*
relaycommon
.
RelayInfo
,
dataHandler
func
(
data
string
)
bool
)
{
if
resp
==
nil
{
if
resp
==
nil
{
...
@@ -38,7 +43,7 @@ func StreamScannerHandler(c *gin.Context, resp *http.Response, info *relaycommon
...
@@ -38,7 +43,7 @@ func StreamScannerHandler(c *gin.Context, resp *http.Response, info *relaycommon
ticker
.
Stop
()
ticker
.
Stop
()
close
(
stopChan
)
close
(
stopChan
)
}()
}()
scanner
.
Buffer
(
make
([]
byte
,
InitialScannerBufferSize
),
MaxScannerBufferSize
)
scanner
.
Split
(
bufio
.
ScanLines
)
scanner
.
Split
(
bufio
.
ScanLines
)
SetEventStreamHeaders
(
c
)
SetEventStreamHeaders
(
c
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment