From b2499b0a7ed0d902ad7ae4653dd0d0ab7e81055a Mon Sep 17 00:00:00 2001 From: creamlike1024 Date: Tue, 13 May 2025 21:13:34 +0800 Subject: [PATCH] DoRequest --- relay/channel/coze/adaptor.go | 6 +++--- relay/channel/coze/dto.go | 30 ------------------------------ relay/channel/coze/relay-coze.go | 29 +++++++++++++++++++++++++---- 3 files changed, 28 insertions(+), 37 deletions(-) diff --git a/relay/channel/coze/adaptor.go b/relay/channel/coze/adaptor.go index b14239a6..34931cc6 100644 --- a/relay/channel/coze/adaptor.go +++ b/relay/channel/coze/adaptor.go @@ -42,7 +42,7 @@ func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *common.RelayInfo, r if request == nil { return nil, errors.New("request is nil") } - return convertCozeChatRequest(*request), nil + return convertCozeChatRequest(c, *request), nil } // ConvertOpenAIResponsesRequest implements channel.Adaptor. @@ -88,7 +88,7 @@ func (a *Adaptor) DoRequest(c *gin.Context, info *common.RelayInfo, requestBody time.Sleep(time.Second * 1) } // 发送获取消息请求 - return channel.DoApiRequest(a, c, info, requestBody) + return getChatDetail(a, c, info) } // DoResponse implements channel.Adaptor. @@ -109,7 +109,7 @@ func (a *Adaptor) GetModelList() []string { // GetRequestURL implements channel.Adaptor. func (a *Adaptor) GetRequestURL(info *common.RelayInfo) (string, error) { - return fmt.Sprintf("%s/v3/chat/message/list", info.BaseUrl), nil + return fmt.Sprintf("%s/v3/chat", info.BaseUrl), nil } // Init implements channel.Adaptor. diff --git a/relay/channel/coze/dto.go b/relay/channel/coze/dto.go index fb92289a..38fc2f16 100644 --- a/relay/channel/coze/dto.go +++ b/relay/channel/coze/dto.go @@ -2,41 +2,11 @@ package coze import "encoding/json" -// type CozeResponse struct { -// Code int `json:"code"` -// Message string `json:"message"` -// Data CozeConversationData `json:"data"` -// Detail CozeConversationData `json:"detail"` -// } - -// type CozeConversationData struct { -// Id string `json:"id"` -// CreatedAt int64 `json:"created_at"` -// MetaData json.RawMessage `json:"meta_data"` -// LastSectionId string `json:"last_section_id"` -// } - -// type CozeResponseDetail struct { -// Logid string `json:"logid"` -// } - type CozeError struct { Code int `json:"code"` Message string `json:"message"` } -// type CozeErrorWithStatusCode struct { -// Error CozeError `json:"error"` -// StatusCode int -// LocalError bool -// } - -type CozeRequest struct { - BotId string `json:"bot_id,omitempty"` - MetaData json.RawMessage `json:"meta_data,omitempty"` - Messages []CozeEnterMessage `json:"messages,omitempty"` -} - type CozeEnterMessage struct { Role string `json:"role"` Type string `json:"type,omitempty"` diff --git a/relay/channel/coze/relay-coze.go b/relay/channel/coze/relay-coze.go index 49a3ac15..7c16763e 100644 --- a/relay/channel/coze/relay-coze.go +++ b/relay/channel/coze/relay-coze.go @@ -13,7 +13,7 @@ import ( "github.com/gin-gonic/gin" ) -func convertCozeChatRequest(request dto.GeneralOpenAIRequest) *CozeRequest { +func convertCozeChatRequest(c *gin.Context, request dto.GeneralOpenAIRequest) *CozeChatRequest { var messages []CozeEnterMessage // 将 request的messages的role为user的content转换为CozeMessage for _, message := range request.Messages { @@ -26,10 +26,12 @@ func convertCozeChatRequest(request dto.GeneralOpenAIRequest) *CozeRequest { }) } } - cozeRequest := &CozeRequest{ + cozeRequest := &CozeChatRequest{ // TODO: model to botid - BotId: "1", - Messages: messages, + BotId: "1", + UserId: c.GetString("id"), + AdditionalMessages: messages, + Stream: request.Stream, } return cozeRequest } @@ -101,6 +103,25 @@ func checkIfChatComplete(a *Adaptor, c *gin.Context, info *relaycommon.RelayInfo } } +func getChatDetail(a *Adaptor, c *gin.Context, info *relaycommon.RelayInfo) (*http.Response, error) { + requestURL := fmt.Sprintf("%s/v3/chat/message/list", info.BaseUrl) + + requestURL = requestURL + "?conversation_id=" + c.GetString("coze_conversation_id") + "&chat_id=" + c.GetString("coze_chat_id") + req, err := http.NewRequest("GET", requestURL, nil) + if err != nil { + return nil, fmt.Errorf("new request failed: %w", err) + } + err = a.SetupRequestHeader(c, &req.Header, info) + if err != nil { + return nil, fmt.Errorf("setup request header failed: %w", err) + } + resp, err := doRequest(req, info) + if err != nil { + return nil, fmt.Errorf("do request failed: %w", err) + } + return resp, nil +} + func doRequest(req *http.Request, info *common.RelayInfo) (*http.Response, error) { var client *http.Client var err error // 声明 err 变量