GA / model /model.go
Niansuh's picture
Upload 19 files
7d06702 verified
package model
import (
"github.com/google/uuid"
"github.com/zbronya/free-chat-to-api/model/request"
"github.com/zbronya/free-chat-to-api/utils"
)
type ChatRequirementReq struct {
P string `json:"p"`
}
type ProofWork struct {
Difficulty string `json:"difficulty"`
Required bool `json:"required"`
Seed string `json:"seed"`
}
type ChatRequirementRes struct {
Token string `json:"token"`
Proof ProofWork `json:"proofofwork"`
Arkose struct {
Required bool `json:"required"`
DX string `json:"dx"`
} `json:"arkose"`
ForceLogin bool `json:"force_login"`
}
type ChatAuthor struct {
Role string `json:"role"`
}
type ChatContent struct {
ContentType string `json:"content_type"`
Parts []string `json:"parts"`
}
type ChatMessages struct {
Author ChatAuthor `json:"author"`
Content ChatContent `json:"content"`
}
type ChatConversationMode struct {
Kind string `json:"kind"`
}
type ChatCompletionRequest struct {
Action string `json:"action"`
Messages []ChatMessages `json:"messages"`
ParentMessageId string `json:"parent_message_id"`
Model string `json:"model"`
TimeZoneOffsetMin int `json:"timezone_offset_min"`
Suggestions []string `json:"suggestions"`
HistoryAndTrainingDisabled bool `json:"history_and_training_disabled"`
ConversationMode ChatConversationMode `json:"conversation_mode"`
WebsocketRequestId string `json:"websocket_request_id"`
}
func ApiReqToChatReq(req *request.ChatRequest) (chatReq *ChatCompletionRequest) {
messages := make([]ChatMessages, 0)
for _, apiMessage := range req.Messages {
chatMessage := ChatMessages{
Author: ChatAuthor{
Role: apiMessage.Role,
},
Content: ChatContent{
ContentType: "text",
Parts: []string{apiMessage.Content},
},
}
messages = append(messages, chatMessage)
}
chatReq = &ChatCompletionRequest{
Action: "next",
Messages: messages,
ParentMessageId: uuid.New().String(),
Model: utils.MappingModel(req.Model),
TimeZoneOffsetMin: -180,
Suggestions: make([]string, 0),
HistoryAndTrainingDisabled: true,
ConversationMode: ChatConversationMode{
Kind: "primary_assistant",
},
WebsocketRequestId: uuid.New().String(),
}
return chatReq
}
type ChatCompletionResp struct {
Message struct {
Id string `json:"id"`
Author struct {
Role string `json:"role"`
Name interface{} `json:"name"`
Metadata struct {
} `json:"metadata"`
} `json:"author"`
CreateTime float64 `json:"create_time"`
UpdateTime interface{} `json:"update_time"`
Content struct {
ContentType string `json:"content_type"`
Parts []string `json:"parts"`
} `json:"content"`
Status string `json:"status"`
EndTurn interface{} `json:"end_turn"`
Weight float64 `json:"weight"`
Metadata struct {
Citations []interface{} `json:"citations"`
GizmoId interface{} `json:"gizmo_id"`
MessageType string `json:"message_type"`
ModelSlug string `json:"model_slug"`
DefaultModelSlug string `json:"default_model_slug"`
Pad string `json:"pad"`
ParentId string `json:"parent_id"`
} `json:"metadata"`
Recipient string `json:"recipient"`
} `json:"message"`
ConversationId string `json:"conversation_id"`
Error interface{} `json:"error"`
}