|
package official |
|
|
|
import "encoding/json" |
|
|
|
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) ChatCompletionChunk { |
|
return ChatCompletionChunk{ |
|
ID: "chatcmpl-QXlha2FBbmROaXhpZUFyZUF3ZXNvbWUK", |
|
Object: "chat.completion.chunk", |
|
Created: 0, |
|
Model: "gpt-4o-mini", |
|
Choices: []Choices{ |
|
{ |
|
Index: 0, |
|
Delta: Delta{ |
|
Content: text, |
|
}, |
|
FinishReason: nil, |
|
}, |
|
}, |
|
} |
|
} |
|
|
|
func NewChatCompletionChunkWithModel(text string, model string) ChatCompletionChunk { |
|
return ChatCompletionChunk{ |
|
ID: "chatcmpl-QXlha2FBbmROaXhpZUFyZUF3ZXNvbWUK", |
|
Object: "chat.completion.chunk", |
|
Created: 0, |
|
Model: model, |
|
Choices: []Choices{ |
|
{ |
|
Index: 0, |
|
Delta: Delta{ |
|
Content: text, |
|
}, |
|
FinishReason: nil, |
|
}, |
|
}, |
|
} |
|
} |
|
|
|
func StopChunkWithModel(reason string, model string) ChatCompletionChunk { |
|
return ChatCompletionChunk{ |
|
ID: "chatcmpl-QXlha2FBbmROaXhpZUFyZUF3ZXNvbWUK", |
|
Object: "chat.completion.chunk", |
|
Created: 0, |
|
Model: model, |
|
Choices: []Choices{ |
|
{ |
|
Index: 0, |
|
FinishReason: reason, |
|
}, |
|
}, |
|
} |
|
} |
|
|
|
func StopChunk(reason string) ChatCompletionChunk { |
|
return ChatCompletionChunk{ |
|
ID: "chatcmpl-QXlha2FBbmROaXhpZUFyZUF3ZXNvbWUK", |
|
Object: "chat.completion.chunk", |
|
Created: 0, |
|
Model: "gpt-4o-mini", |
|
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"` |
|
} |
|
|
|
func NewChatCompletionWithModel(text string, model string) ChatCompletion { |
|
return ChatCompletion{ |
|
ID: "chatcmpl-QXlha2FBbmROaXhpZUFyZUF3ZXNvbWUK", |
|
Object: "chat.completion", |
|
Created: int64(0), |
|
Model: model, |
|
Usage: usage{ |
|
PromptTokens: 0, |
|
CompletionTokens: 0, |
|
TotalTokens: 0, |
|
}, |
|
Choices: []Choice{ |
|
{ |
|
Message: Msg{ |
|
Content: text, |
|
Role: "assistant", |
|
}, |
|
Index: 0, |
|
}, |
|
}, |
|
} |
|
} |
|
|
|
func NewChatCompletion(full_test string, input_tokens, output_tokens int) ChatCompletion { |
|
return ChatCompletion{ |
|
ID: "chatcmpl-QXlha2FBbmROaXhpZUFyZUF3ZXNvbWUK", |
|
Object: "chat.completion", |
|
Created: int64(0), |
|
Model: "gpt-4o-mini", |
|
Usage: usage{ |
|
PromptTokens: input_tokens, |
|
CompletionTokens: output_tokens, |
|
TotalTokens: input_tokens + output_tokens, |
|
}, |
|
Choices: []Choice{ |
|
{ |
|
Message: Msg{ |
|
Content: full_test, |
|
Role: "assistant", |
|
}, |
|
Index: 0, |
|
}, |
|
}, |
|
} |
|
} |
|
|