package openai const ChatAPIPath = "/v1/chat/completions" type ChatRole string const ( ChatRoleSystem ChatRole = "system" ChatRoleAssistant ChatRole = "assistant" ChatRoleUser ChatRole = "user" ) type ChatMessage struct { Role ChatRole `json:"role"` Content string `json:"content"` } type ChatRequest struct { Model string `json:"model"` Messages []ChatMessage `json:"messages"` Temperature *float64 `json:"temperature,omitempty"` // What sampling temperature to use, between 0 and 2. TopP *float64 `json:"top_p,omitempty"` // Nucleus sampling. Specify this or temperature but not both. N int `json:"n,omitempty"` // How many chat completion choices to generate for each input message. Stream bool `json:"stream,omitempty"` // If set, partial message deltas will be sent as data-only server-sent events as they become available. Stop []string `json:"stop,omitempty"` // Up to 4 sequences where the API will stop generating further tokens. MaxTokens int `json:"max_tokens,omitempty"` PresencePenalty *float64 `json:"presence_penalty,omitempty"` // Number between -2.0 and 2.0. FrequencyPenalty *float64 `json:"frequency_penalty,omitempty"` // Number between -2.0 and 2.0. LogitBias map[string]float64 `json:"logit_bias,omitempty"` // Modify the likelihood of specified tokens appearing in the completion. User string `json:"user,omitempty"` // A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse. } type ChatResponseChoice struct { Message ChatMessage `json:"message"` FinishReason string `json:"finish_reason"` Index int `json:"index"` } type ChatResponse struct { ID string `json:"id"` Object string `json:"object"` Created int `json:"created"` Model string `json:"model"` Usage map[string]int `json:"usage"` Choices []ChatResponseChoice `json:"choices"` } type ChatResponseStream struct { ID string Object string Created int Model string Stream chan string Done chan struct{} Err error } type ChatResponseStreamChunk struct { ID string Object string Created int Model string Choices []ChatResponseStreamChoice } type ChatResponseStreamChoice struct { Index int `json:"index"` FinishReason string `json:"finish_reason"` Delta struct { Content string `json:"content"` } `json:"delta"` }