From 6d9c3a6365643d02692ecc6f0b34a5fa3e7fea45 Mon Sep 17 00:00:00 2001 From: Simone Vellei Date: Tue, 7 Nov 2023 15:25:21 +0100 Subject: [PATCH] Feat Support chat completion response format and seed new fields (#525) * feat: support chat completion response format * fix linting error * fix * fix linting * Revert "fix linting" This reverts commit 015c6ad62aad561218b693225f58670b5619dba8. * Revert "fix" This reverts commit 7b2ffe28c3e586b629d23479ec1728bf52f0c66f. * Revert "fix linting error" This reverts commit 29960423784e296cb6d22c5db8f8ccf00cac59fd. * chore: add seed new parameter * fix --- chat.go | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/chat.go b/chat.go index df0e5f970..88db8cf1d 100644 --- a/chat.go +++ b/chat.go @@ -69,18 +69,31 @@ type FunctionCall struct { Arguments string `json:"arguments,omitempty"` } +type ChatCompletionResponseFormatType string + +const ( + ChatCompletionResponseFormatTypeJSONObject ChatCompletionResponseFormatType = "json_object" + ChatCompletionResponseFormatTypeText ChatCompletionResponseFormatType = "text" +) + +type ChatCompletionResponseFormat struct { + Type ChatCompletionResponseFormatType `json:"type"` +} + // ChatCompletionRequest represents a request structure for chat completion API. type ChatCompletionRequest struct { - Model string `json:"model"` - Messages []ChatCompletionMessage `json:"messages"` - MaxTokens int `json:"max_tokens,omitempty"` - Temperature float32 `json:"temperature,omitempty"` - TopP float32 `json:"top_p,omitempty"` - N int `json:"n,omitempty"` - Stream bool `json:"stream,omitempty"` - Stop []string `json:"stop,omitempty"` - PresencePenalty float32 `json:"presence_penalty,omitempty"` - FrequencyPenalty float32 `json:"frequency_penalty,omitempty"` + Model string `json:"model"` + Messages []ChatCompletionMessage `json:"messages"` + MaxTokens int `json:"max_tokens,omitempty"` + Temperature float32 `json:"temperature,omitempty"` + TopP float32 `json:"top_p,omitempty"` + N int `json:"n,omitempty"` + Stream bool `json:"stream,omitempty"` + Stop []string `json:"stop,omitempty"` + PresencePenalty float32 `json:"presence_penalty,omitempty"` + ResponseFormat ChatCompletionResponseFormat `json:"response_format,omitempty"` + Seed *int `json:"seed,omitempty"` + FrequencyPenalty float32 `json:"frequency_penalty,omitempty"` // LogitBias is must be a token id string (specified by their token ID in the tokenizer), not a word string. // incorrect: `"logit_bias":{"You": 6}`, correct: `"logit_bias":{"1639": 6}` // refs: https://platform.openai.com/docs/api-reference/chat/create#chat/create-logit_bias