DoRequest
This commit is contained in:
@@ -42,7 +42,7 @@ func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *common.RelayInfo, r
|
|||||||
if request == nil {
|
if request == nil {
|
||||||
return nil, errors.New("request is nil")
|
return nil, errors.New("request is nil")
|
||||||
}
|
}
|
||||||
return convertCozeChatRequest(*request), nil
|
return convertCozeChatRequest(c, *request), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ConvertOpenAIResponsesRequest implements channel.Adaptor.
|
// ConvertOpenAIResponsesRequest implements channel.Adaptor.
|
||||||
@@ -88,7 +88,7 @@ func (a *Adaptor) DoRequest(c *gin.Context, info *common.RelayInfo, requestBody
|
|||||||
time.Sleep(time.Second * 1)
|
time.Sleep(time.Second * 1)
|
||||||
}
|
}
|
||||||
// 发送获取消息请求
|
// 发送获取消息请求
|
||||||
return channel.DoApiRequest(a, c, info, requestBody)
|
return getChatDetail(a, c, info)
|
||||||
}
|
}
|
||||||
|
|
||||||
// DoResponse implements channel.Adaptor.
|
// DoResponse implements channel.Adaptor.
|
||||||
@@ -109,7 +109,7 @@ func (a *Adaptor) GetModelList() []string {
|
|||||||
|
|
||||||
// GetRequestURL implements channel.Adaptor.
|
// GetRequestURL implements channel.Adaptor.
|
||||||
func (a *Adaptor) GetRequestURL(info *common.RelayInfo) (string, error) {
|
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.
|
// Init implements channel.Adaptor.
|
||||||
|
|||||||
@@ -2,41 +2,11 @@ package coze
|
|||||||
|
|
||||||
import "encoding/json"
|
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 {
|
type CozeError struct {
|
||||||
Code int `json:"code"`
|
Code int `json:"code"`
|
||||||
Message string `json:"message"`
|
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 {
|
type CozeEnterMessage struct {
|
||||||
Role string `json:"role"`
|
Role string `json:"role"`
|
||||||
Type string `json:"type,omitempty"`
|
Type string `json:"type,omitempty"`
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import (
|
|||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
)
|
)
|
||||||
|
|
||||||
func convertCozeChatRequest(request dto.GeneralOpenAIRequest) *CozeRequest {
|
func convertCozeChatRequest(c *gin.Context, request dto.GeneralOpenAIRequest) *CozeChatRequest {
|
||||||
var messages []CozeEnterMessage
|
var messages []CozeEnterMessage
|
||||||
// 将 request的messages的role为user的content转换为CozeMessage
|
// 将 request的messages的role为user的content转换为CozeMessage
|
||||||
for _, message := range request.Messages {
|
for _, message := range request.Messages {
|
||||||
@@ -26,10 +26,12 @@ func convertCozeChatRequest(request dto.GeneralOpenAIRequest) *CozeRequest {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cozeRequest := &CozeRequest{
|
cozeRequest := &CozeChatRequest{
|
||||||
// TODO: model to botid
|
// TODO: model to botid
|
||||||
BotId: "1",
|
BotId: "1",
|
||||||
Messages: messages,
|
UserId: c.GetString("id"),
|
||||||
|
AdditionalMessages: messages,
|
||||||
|
Stream: request.Stream,
|
||||||
}
|
}
|
||||||
return cozeRequest
|
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) {
|
func doRequest(req *http.Request, info *common.RelayInfo) (*http.Response, error) {
|
||||||
var client *http.Client
|
var client *http.Client
|
||||||
var err error // 声明 err 变量
|
var err error // 声明 err 变量
|
||||||
|
|||||||
Reference in New Issue
Block a user