diff --git a/go/appbuilder/app_builder_client_test.go b/go/appbuilder/app_builder_client_test.go index 6bf88b25..a38d67c8 100644 --- a/go/appbuilder/app_builder_client_test.go +++ b/go/appbuilder/app_builder_client_test.go @@ -989,7 +989,7 @@ func TestAppBuilderClientRunCustomMetadata(t *testing.T) { res, err := client.Run(AppBuilderClientRunRequest{ AppID: appID, Query: "我要回老家相亲", - Stream: false, + Stream: true, ConversationID: conversationID, CustomMetadata: &CustomMetadata{ OverrideRoleInstruction: `# 角色任务\n" + @@ -1002,7 +1002,7 @@ func TestAppBuilderClientRunCustomMetadata(t *testing.T) { "# 要求与限制\n" + "\n" + "1. 输出内容的风格为幽默\n" + - "2.输出的字数限制为100字以内"`, + "2.输出的字数限制为1000字范围"`, }, }) if err != nil { diff --git a/go/appbuilder/component_client_test.go b/go/appbuilder/component_client_test.go index 5fc90d56..d90d7c6c 100644 --- a/go/appbuilder/component_client_test.go +++ b/go/appbuilder/component_client_test.go @@ -98,7 +98,7 @@ func TestComponentClientHeader(t *testing.T) { componentID := "c-wf-a39ee06c-808f-4a19-9f5f-544044283749" parameters := map[string]any{ - SysOriginQuery: "梦到巨人,是怎么回事", + SysOriginQuery: "梦到巨人,是怎么回事,请仔细分析,写一篇不少于1000字的文章", } componentClient, err := NewComponentClient(config) if err != nil { diff --git a/go/appbuilder/util.go b/go/appbuilder/util.go index 67e1b627..624a6956 100644 --- a/go/appbuilder/util.go +++ b/go/appbuilder/util.go @@ -16,6 +16,7 @@ package appbuilder import ( "bufio" + "bytes" "errors" "fmt" "io" @@ -30,42 +31,40 @@ type SSEEvent struct { } func checkHTTPResponse(rsp *http.Response) (string, error) { - requestID := rsp.Header.Get("X-Appbuilder-Request-Id") - if rsp.StatusCode == http.StatusOK { - log.Printf("Successful HTTP response. RequestID: %s", requestID) - return requestID, nil - } + requestID := rsp.Header.Get("X-Appbuilder-Request-Id") + if rsp.StatusCode == http.StatusOK { + log.Printf("Successful HTTP response. RequestID: %s", requestID) + return requestID, nil + } - data, err := io.ReadAll(rsp.Body) - if err != nil { - log.Printf("Failed to read response body. RequestID: %s, Error: %v", requestID, err) - return requestID, err - } - log.Printf("HTTP response with unexpected status code. RequestID: %s, StatusCode: %d, Content: %s", requestID, rsp.StatusCode, string(data)) - return requestID, fmt.Errorf("http status code is %d, content is %s", rsp.StatusCode, string(data)) + data, err := io.ReadAll(rsp.Body) + if err != nil { + log.Printf("Failed to read response body. RequestID: %s, Error: %v", requestID, err) + return requestID, err + } + log.Printf("HTTP response with unexpected status code. RequestID: %s, StatusCode: %d, Content: %s", requestID, rsp.StatusCode, string(data)) + return requestID, fmt.Errorf("http status code is %d, content is %s", rsp.StatusCode, string(data)) } func NewSSEReader(bufSize int, reader *bufio.Reader) *sseReader { - buf := make([]byte, bufSize) - return &sseReader{reader: reader, buf: buf} + //buf := make([]byte, bufSize) + return &sseReader{reader: reader, buf: bytes.Buffer{}} } type sseReader struct { reader *bufio.Reader - buf []byte + buf bytes.Buffer } func (t *sseReader) ReadMessageLine() ([]byte, error) { - size := 0 + t.buf.Reset() for { line, isPrefix, err := t.reader.ReadLine() if err != nil { return nil, err } - if len(line)+size > cap(t.buf) { - panic("buffer overflow") - } - size += copy(t.buf[size:], line) + t.buf.Grow(len(line)) + t.buf.Write(line) if !isPrefix { break } @@ -73,8 +72,8 @@ func (t *sseReader) ReadMessageLine() ([]byte, error) { // 读取空行 line, _, err := t.reader.ReadLine() if err != nil || len(line) != 0 { - size += copy(t.buf[size:], line) - return nil, errors.New(string(t.buf[0:size])) + t.buf.Grow(len(line)) + return nil, errors.New(t.buf.String()) } - return t.buf[0:size], nil + return t.buf.Bytes(), nil }