DoRequest

This commit is contained in:
creamlike1024
2025-05-13 21:13:34 +08:00
parent b2cad22952
commit b2499b0a7e
3 changed files with 28 additions and 37 deletions

View File

@@ -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.

View File

@@ -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"`

View File

@@ -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 变量