dvc890's picture
Upload 30 files
f16d50c
package imitate
import (
"encoding/json"
"time"
"github.com/linweiyuan/go-chatgpt-api/api/chatgpt"
)
type ChatCompletionChunk struct {
ID string `json:"id"`
Object string `json:"object"`
Created int64 `json:"created"`
Model string `json:"model"`
Choices []Choices `json:"choices"`
}
func (chunk *ChatCompletionChunk) String() string {
resp, _ := json.Marshal(chunk)
return string(resp)
}
type Choices struct {
Delta Delta `json:"delta"`
Index int `json:"index"`
FinishReason interface{} `json:"finish_reason"`
}
type Delta struct {
Content string `json:"content,omitempty"`
Role string `json:"role,omitempty"`
}
func NewChatCompletionChunk(text string, id string, model string) ChatCompletionChunk {
return ChatCompletionChunk{
ID: id,
Object: "chat.completion.chunk",
Created: time.Now().Unix(),
Model: model,
Choices: []Choices{
{
Index: 0,
Delta: Delta{
Content: text,
},
FinishReason: nil,
},
},
}
}
func StopChunk(reason string, id string, model string) ChatCompletionChunk {
return ChatCompletionChunk{
ID: id,
Object: "chat.completion.chunk",
Created: time.Now().Unix(),
Model: model,
Choices: []Choices{
{
Index: 0,
FinishReason: reason,
},
},
}
}
type ChatCompletion struct {
ID string `json:"id"`
Object string `json:"object"`
Created int64 `json:"created"`
Model string `json:"model"`
Usage usage `json:"usage"`
Choices []Choice `json:"choices"`
}
type Msg struct {
Role string `json:"role"`
Content string `json:"content"`
}
type Choice struct {
Index int `json:"index"`
Message Msg `json:"message"`
FinishReason interface{} `json:"finish_reason"`
}
type usage struct {
PromptTokens int `json:"prompt_tokens"`
CompletionTokens int `json:"completion_tokens"`
TotalTokens int `json:"total_tokens"`
}
type ChatGPTResponse struct {
Message Message `json:"message"`
ConversationID string `json:"conversation_id"`
Error interface{} `json:"error"`
}
type Message struct {
ID string `json:"id"`
Author chatgpt.Author `json:"author"`
CreateTime float64 `json:"create_time"`
UpdateTime interface{} `json:"update_time"`
Content chatgpt.Content `json:"content"`
EndTurn interface{} `json:"end_turn"`
Weight float64 `json:"weight"`
Metadata Metadata `json:"metadata"`
Recipient string `json:"recipient"`
}
type Metadata struct {
Timestamp string `json:"timestamp_"`
MessageType string `json:"message_type"`
FinishDetails *FinishDetails `json:"finish_details"`
ModelSlug string `json:"model_slug"`
Recipient string `json:"recipient"`
}
type FinishDetails struct {
Type string `json:"type"`
Stop string `json:"stop"`
}
type StringStruct struct {
Text string `json:"text"`
}
func newChatCompletion(fullTest, model string, id string) ChatCompletion {
return ChatCompletion{
ID: id,
Object: "chat.completion",
Created: time.Now().Unix(),
Model: model,
Usage: usage{
PromptTokens: 0,
CompletionTokens: 0,
TotalTokens: 0,
},
Choices: []Choice{
{
Message: Msg{
Content: fullTest,
Role: "assistant",
},
Index: 0,
},
},
}
}