Spaces:
Paused
Paused
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, | |
}, | |
}, | |
} | |
} | |