dvc890's picture
Upload 42 files
581b6d4 verified
package unofficialapi
import (
"encoding/json"
"fmt"
"log"
"math/rand"
"strconv"
"strings"
"time"
"github.com/google/uuid"
)
type ChatReqTemplate struct {
Id string `json:"id"`
Author struct {
Role string `json:"role"`
} `json:"author"`
Content struct {
ContentType string `json:"content_type"`
Parts []interface{} `json:"parts"`
} `json:"content"`
Metadata interface{} `json:"metadata"`
}
type ChatReqStr struct {
Action string `json:"action"`
Messages []ChatReqTemplate `json:"messages"`
ParentMessageId string `json:"parent_message_id"`
Model string `json:"model"`
TimezoneOffsetMin int `json:"timezone_offset_min"`
HistoryAndTrainingDisabled bool `json:"history_and_training_disabled"`
ArkoseToken string `json:"arkose_token"`
ConversationMode struct {
Kind string `json:"kind"`
} `json:"conversation_mode"`
ForceParagen bool `json:"force_paragen"`
ForceRateLimit bool `json:"force_rate_limit"`
}
type ChatRespStr 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 bool `json:"end_turn"`
Weight float64 `json:"weight"`
Metadata struct {
FinishDetails struct {
Type string `json:"type"`
StopTokens []int `json:"stop_tokens"`
} `json:"finish_details"`
IsComplete bool `json:"is_complete"`
MessageType string `json:"message_type"`
ModelSlug string `json:"model_slug"`
ParentId string `json:"parent_id"`
Timestamp string `json:"timestamp_"`
IsUserSystemMessage bool `json:"is_user_system_message"`
UserContextMessageData struct {
AboutModelMessage string `json:"about_model_message"`
} `json:"user_context_message_data"`
} `json:"metadata"`
Recipient string `json:"recipient"`
} `json:"message"`
ConversationId string `json:"conversation_id"`
Error interface{} `json:"error"`
}
type ChatEndRespStr struct {
ConversationId string `json:"conversation_id"`
MessageId string `json:"message_id"`
IsCompletion bool `json:"is_completion"`
ModerationResponse struct {
Flagged bool `json:"flagged"`
Blocked bool `json:"blocked"`
ModerationId string `json:"moderation_id"`
} `json:"moderation_response"`
}
type ChatUserSystemMsgReqStr struct {
AboutUserMessage string `json:"about_user_message"`
AboutModelMessage string `json:"about_model_message"`
Enabled bool `json:"enabled"`
}
type ChatUserSystemMsgRespStr struct {
Object string `json:"object"`
Enabled bool `json:"enabled"`
AboutUserMessage string `json:"about_user_message"`
AboutModelMessage string `json:"about_model_message"`
}
type ChatDetectedErrorRespStr struct {
Message interface{} `json:"message"`
ConversationId string `json:"conversation_id"`
Error string `json:"error"`
}
type DALLERespStr struct {
Message struct {
Id string `json:"id"`
Author struct {
Role string `json:"role"`
Name string `json:"name"`
Metadata struct {
} `json:"metadata"`
} `json:"author"`
CreateTime interface{} `json:"create_time"`
UpdateTime interface{} `json:"update_time"`
Content struct {
ContentType string `json:"content_type"`
Parts []struct {
ContentType string `json:"content_type"`
AssetPointer string `json:"asset_pointer"`
SizeBytes int `json:"size_bytes"`
Width int `json:"width"`
Height int `json:"height"`
Fovea int `json:"fovea"`
Metadata struct {
Dalle struct {
GenId string `json:"gen_id"`
Prompt string `json:"prompt"`
Seed int64 `json:"seed"`
SerializationTitle string `json:"serialization_title"`
} `json:"dalle"`
} `json:"metadata"`
} `json:"parts"`
} `json:"content"`
Status string `json:"status"`
EndTurn interface{} `json:"end_turn"`
Weight float64 `json:"weight"`
Metadata struct {
MessageType string `json:"message_type"`
ModelSlug string `json:"model_slug"`
ParentId string `json:"parent_id"`
} `json:"metadata"`
Recipient string `json:"recipient"`
} `json:"message"`
ConversationId string `json:"conversation_id"`
Error interface{} `json:"error"`
}
type StrChoices struct {
Index int `json:"index"`
Message struct {
Role string `json:"role"`
Content string `json:"content"`
} `json:"message"`
FinishReason string `json:"finish_reason"`
}
type ApiRespStr struct {
Id string `json:"id"`
Object string `json:"object"`
Created int64 `json:"created"`
Model string `json:"model"`
SystemFingerprint string `json:"system_fingerprint"`
Choices []StrChoices `json:"choices"`
Usage struct {
PromptTokens int `json:"prompt_tokens"`
CompletionTokens int `json:"completion_tokens"`
TotalTokens int `json:"total_tokens"`
} `json:"usage"`
}
type StreamChoice struct {
Delta struct {
Content string `json:"content"`
} `json:"delta"`
Index int `json:"index"`
FinishReason interface{} `json:"finish_reason"`
}
type ApiRespStrStream struct {
Id string `json:"id"`
Object string `json:"object"`
Created int64 `json:"created"`
Model string `json:"model"`
SystemFingerprint string `json:"system_fingerprint"`
Choices []StreamChoice `json:"choices"`
}
type ApiRespStrStreamEnd struct {
Id string `json:"id"`
Object string `json:"object"`
Created int64 `json:"created"`
Model string `json:"model"`
SystemFingerprint interface{} `json:"system_fingerprint"`
Choices []struct {
Index int `json:"index"`
Delta struct {
} `json:"delta"`
FinishReason string `json:"finish_reason"`
} `json:"choices"`
}
type ApiImageGenerationRespStr struct {
Created int64 `json:"created"`
Data []ApiImageItem `json:"data"`
}
type ApiImageItem struct {
RevisedPrompt string `json:"revised_prompt"`
Url string `json:"url"`
}
type ApiImageGenerationErrorRespStr struct {
Error struct {
Code interface{} `json:"code"`
Message string `json:"message"`
Param interface{} `json:"param"`
Type string `json:"type"`
} `json:"error"`
}
type ImageDownloadUrl struct {
Status string `json:"status"`
DownloadUrl string `json:"download_url"`
Metadata struct {
} `json:"metadata"`
FileName string `json:"file_name"`
CreationTime string `json:"creation_time"`
}
func GetChatReqStr(model string) *ChatReqStr {
jsonStr := `{
"action": "next",
"messages": [],
"parent_message_id": "",
"model": "gpt-4-code-interpreter",
"timezone_offset_min": -480,
"history_and_training_disabled": true,
"arkose_token": "",
"conversation_mode": {
"kind": "primary_assistant"
},
"force_paragen": false,
"force_rate_limit": false
}`
t := new(ChatReqStr)
err := json.Unmarshal([]byte(jsonStr), &t)
t.ParentMessageId = uuid.New().String()
t.Model = model
if err != nil {
log.Printf("Error parsing JSON: %v", err)
}
return t
}
func GetChatReqTemplate() *ChatReqTemplate {
jsonStr := `{
"id": "",
"author": {
"role": ""
},
"content": {
"content_type": "text",
"parts": []
},
"metadata": {}
}`
t := new(ChatReqTemplate)
err := json.Unmarshal([]byte(jsonStr), &t)
t.Id = uuid.New().String()
if err != nil {
log.Printf("Error parsing JSON: %v", err)
}
return t
}
func GetChatFileReqTemplate() *ChatReqTemplate {
jsonStr := `{
"id": "",
"author": {
"role": ""
},
"content": {
"content_type": "multimodal_text",
"parts": [
]
},
"metadata": {
"attachments": [
]
}
}`
t := new(ChatReqTemplate)
err := json.Unmarshal([]byte(jsonStr), &t)
t.Id = uuid.New().String()
if err != nil {
log.Printf("Error parsing JSON: %v", err)
}
return t
}
func GetChatRespStr() *ChatRespStr {
jsonStr := `{
"message":
{
"id": "",
"author":
{
"role": "assistant",
"name": null,
"metadata": {}
},
"create_time": 1699032699.636848,
"update_time": null,
"content": {
"content_type": "text",
"parts": []
},
"status": "finished_successfully",
"end_turn": true,
"weight": 1.0,
"metadata": {
"finish_details":
{
"type": "stop",
"stop_tokens": [100260]
},
"is_complete": true,
"message_type": "next",
"timestamp_": "absolute",
"message_type": null,
"is_user_system_message": true,
"user_context_message_data": {
"about_model_message": "Strict adherence to Instructions"
}
}, "recipient": "all"
},
"conversation_id": "611228f2-94fd-44ed-b5d9-4f229ef3c400",
"error": null
}`
t := new(ChatRespStr)
err := json.Unmarshal([]byte(jsonStr), &t)
nowTime := fmt.Sprintf("%.6f\n", float64(time.Now().UnixNano())/1e9)
floatTime, _ := strconv.ParseFloat(nowTime, 64)
t.Message.CreateTime = floatTime
if err != nil {
log.Printf("Error parsing JSON: %v", err)
}
return t
}
func GetChatEndRespStr() *ChatEndRespStr {
jsonStr := `{
"conversation_id": "",
"message_id": "",
"is_completion": true,
"moderation_response": {
"flagged": false,
"blocked": false,
"moderation_id": ""
}
}`
t := new(ChatEndRespStr)
err := json.Unmarshal([]byte(jsonStr), &t)
if err != nil {
log.Printf("Error parsing JSON: %v", err)
}
return t
}
func GetChatUserSystemMsgReqStr() *ChatUserSystemMsgReqStr {
jsonStr := `{
"about_user_message": "",
"about_model_message": "",
"enabled": true
}`
t := new(ChatUserSystemMsgReqStr)
err := json.Unmarshal([]byte(jsonStr), &t)
if err != nil {
log.Printf("Error parsing JSON: %v", err)
}
return t
}
func GetApiRespStr(id string) *ApiRespStr {
jsonStr := `{
"id": "",
"object": "chat.completion",
"created": 1699074998,
"model": "",
"system_fingerprint": null,
"choices": [
],
"usage": {
"prompt_tokens": 0,
"completion_tokens": 0,
"total_tokens": 0
}
}`
t := new(ApiRespStr)
err := json.Unmarshal([]byte(jsonStr), &t)
t.Id = id
t.Created = time.Now().Unix()
if err != nil {
log.Printf("Error parsing JSON: %v", err)
}
return t
}
func IdGenerator() string {
const prefix = "chatcmpl-"
const characters = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
var uniqueString strings.Builder
rand.Seed(time.Now().UnixNano()) // 初始化随机数生成器
for i := 0; i < 29; i++ {
uniqueString.WriteByte(characters[rand.Intn(len(characters))])
}
log.Println("id_generator")
return prefix + uniqueString.String()
}
func GetApiRespStrStream(id string) *ApiRespStrStream {
jsonStr := `{
"id": "",
"object": "chat.completion.chunk",
"created": 1701705204,
"model": "",
"system_fingerprint": null,
"choices": [
{
"index": 0,
"delta": {
"role": "assistant",
"content": ""
},
"finish_reason": null
}
]
}`
t := new(ApiRespStrStream)
err := json.Unmarshal([]byte(jsonStr), &t)
t.Id = id
t.Created = time.Now().Unix()
if err != nil {
log.Printf("Error parsing JSON: %v", err)
}
return t
}
func GetApiRespStrStreamEnd(id string) *ApiRespStrStreamEnd {
jsonStr := `{
"id": "",
"object": "chat.completion.chunk",
"created": 1701705204,
"model": "",
"system_fingerprint": null,
"choices": [
{
"index": 0,
"delta": {},
"finish_reason": "stop"
}
]
}`
t := new(ApiRespStrStreamEnd)
err := json.Unmarshal([]byte(jsonStr), &t)
t.Id = id
t.Created = time.Now().Unix()
if err != nil {
log.Printf("Error parsing JSON: %v", err)
}
return t
}
func GetApiImageGenerationRespStr() *ApiImageGenerationRespStr {
jsonStr := `{
"created": 1700809991,
"data": [
{
"revised_prompt": "",
"url": ""
}
]
}`
t := new(ApiImageGenerationRespStr)
err := json.Unmarshal([]byte(jsonStr), &t)
t.Created = time.Now().Unix()
if err != nil {
log.Printf("Error parsing JSON: %v", err)
}
return t
}
func GetStreamChoice() *StreamChoice {
jsonStr := ` {
"index": 0,
"delta": {
"content": ""
},
"finish_reason": null
}`
t := new(StreamChoice)
err := json.Unmarshal([]byte(jsonStr), &t)
if err != nil {
log.Printf("Error parsing JSON: %v", err)
}
return t
}
func GetStrChoices() *StrChoices {
jsonStr := `{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "",
"role": "assistant"
}
}`
t := new(StrChoices)
err := json.Unmarshal([]byte(jsonStr), &t)
if err != nil {
log.Printf("Error parsing JSON: %v", err)
}
return t
}