Skip to content

Commit d0b50e9

Browse files
authored
Merge pull request #923 from zhangairku/master
fix:go在run时不再固定buf大小
2 parents e1cc5ce + 75c77cb commit d0b50e9

File tree

3 files changed

+25
-26
lines changed

3 files changed

+25
-26
lines changed

go/appbuilder/app_builder_client_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -989,7 +989,7 @@ func TestAppBuilderClientRunCustomMetadata(t *testing.T) {
989989
res, err := client.Run(AppBuilderClientRunRequest{
990990
AppID: appID,
991991
Query: "我要回老家相亲",
992-
Stream: false,
992+
Stream: true,
993993
ConversationID: conversationID,
994994
CustomMetadata: &CustomMetadata{
995995
OverrideRoleInstruction: `# 角色任务\n" +
@@ -1002,7 +1002,7 @@ func TestAppBuilderClientRunCustomMetadata(t *testing.T) {
10021002
"# 要求与限制\n" +
10031003
"\n" +
10041004
"1. 输出内容的风格为幽默\n" +
1005-
"2.输出的字数限制为100字以内"`,
1005+
"2.输出的字数限制为1000字范围"`,
10061006
},
10071007
})
10081008
if err != nil {

go/appbuilder/component_client_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ func TestComponentClientHeader(t *testing.T) {
9898

9999
componentID := "c-wf-a39ee06c-808f-4a19-9f5f-544044283749"
100100
parameters := map[string]any{
101-
SysOriginQuery: "梦到巨人,是怎么回事",
101+
SysOriginQuery: "梦到巨人,是怎么回事,请仔细分析,写一篇不少于1000字的文章",
102102
}
103103
componentClient, err := NewComponentClient(config)
104104
if err != nil {

go/appbuilder/util.go

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ package appbuilder
1616

1717
import (
1818
"bufio"
19+
"bytes"
1920
"errors"
2021
"fmt"
2122
"io"
@@ -30,51 +31,49 @@ type SSEEvent struct {
3031
}
3132

3233
func checkHTTPResponse(rsp *http.Response) (string, error) {
33-
requestID := rsp.Header.Get("X-Appbuilder-Request-Id")
34-
if rsp.StatusCode == http.StatusOK {
35-
log.Printf("Successful HTTP response. RequestID: %s", requestID)
36-
return requestID, nil
37-
}
34+
requestID := rsp.Header.Get("X-Appbuilder-Request-Id")
35+
if rsp.StatusCode == http.StatusOK {
36+
log.Printf("Successful HTTP response. RequestID: %s", requestID)
37+
return requestID, nil
38+
}
3839

39-
data, err := io.ReadAll(rsp.Body)
40-
if err != nil {
41-
log.Printf("Failed to read response body. RequestID: %s, Error: %v", requestID, err)
42-
return requestID, err
43-
}
44-
log.Printf("HTTP response with unexpected status code. RequestID: %s, StatusCode: %d, Content: %s", requestID, rsp.StatusCode, string(data))
45-
return requestID, fmt.Errorf("http status code is %d, content is %s", rsp.StatusCode, string(data))
40+
data, err := io.ReadAll(rsp.Body)
41+
if err != nil {
42+
log.Printf("Failed to read response body. RequestID: %s, Error: %v", requestID, err)
43+
return requestID, err
44+
}
45+
log.Printf("HTTP response with unexpected status code. RequestID: %s, StatusCode: %d, Content: %s", requestID, rsp.StatusCode, string(data))
46+
return requestID, fmt.Errorf("http status code is %d, content is %s", rsp.StatusCode, string(data))
4647
}
4748

4849
func NewSSEReader(bufSize int, reader *bufio.Reader) *sseReader {
49-
buf := make([]byte, bufSize)
50-
return &sseReader{reader: reader, buf: buf}
50+
//buf := make([]byte, bufSize)
51+
return &sseReader{reader: reader, buf: bytes.Buffer{}}
5152
}
5253

5354
type sseReader struct {
5455
reader *bufio.Reader
55-
buf []byte
56+
buf bytes.Buffer
5657
}
5758

5859
func (t *sseReader) ReadMessageLine() ([]byte, error) {
59-
size := 0
60+
t.buf.Reset()
6061
for {
6162
line, isPrefix, err := t.reader.ReadLine()
6263
if err != nil {
6364
return nil, err
6465
}
65-
if len(line)+size > cap(t.buf) {
66-
panic("buffer overflow")
67-
}
68-
size += copy(t.buf[size:], line)
66+
t.buf.Grow(len(line))
67+
t.buf.Write(line)
6968
if !isPrefix {
7069
break
7170
}
7271
}
7372
// 读取空行
7473
line, _, err := t.reader.ReadLine()
7574
if err != nil || len(line) != 0 {
76-
size += copy(t.buf[size:], line)
77-
return nil, errors.New(string(t.buf[0:size]))
75+
t.buf.Grow(len(line))
76+
return nil, errors.New(t.buf.String())
7877
}
79-
return t.buf[0:size], nil
78+
return t.buf.Bytes(), nil
8079
}

0 commit comments

Comments
 (0)