chatcompletion.go (1,579 lines of code) (raw):

// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. package openai import ( "context" "errors" "fmt" "net/http" "net/url" "reflect" "github.com/openai/openai-go/internal/apijson" "github.com/openai/openai-go/internal/apiquery" "github.com/openai/openai-go/internal/requestconfig" "github.com/openai/openai-go/option" "github.com/openai/openai-go/packages/pagination" "github.com/openai/openai-go/packages/param" "github.com/openai/openai-go/packages/resp" "github.com/openai/openai-go/packages/ssestream" "github.com/openai/openai-go/shared" "github.com/openai/openai-go/shared/constant" "github.com/tidwall/gjson" ) // ChatCompletionService contains methods and other services that help with // interacting with the openai API. // // Note, unlike clients, this service does not read variables from the environment // automatically. You should not instantiate this service directly, and instead use // the [NewChatCompletionService] method instead. type ChatCompletionService struct { Options []option.RequestOption Messages ChatCompletionMessageService } // NewChatCompletionService generates a new service that applies the given options // to each request. These options are applied after the parent client's options (if // there is one), and before any request-specific options. func NewChatCompletionService(opts ...option.RequestOption) (r ChatCompletionService) { r = ChatCompletionService{} r.Options = opts r.Messages = NewChatCompletionMessageService(opts...) return } // **Starting a new project?** We recommend trying // [Responses](https://platform.openai.com/docs/api-reference/responses) to take // advantage of the latest OpenAI platform features. Compare // [Chat Completions with Responses](https://platform.openai.com/docs/guides/responses-vs-chat-completions?api-mode=responses). // // --- // // Creates a model response for the given chat conversation. Learn more in the // [text generation](https://platform.openai.com/docs/guides/text-generation), // [vision](https://platform.openai.com/docs/guides/vision), and // [audio](https://platform.openai.com/docs/guides/audio) guides. // // Parameter support can differ depending on the model used to generate the // response, particularly for newer reasoning models. Parameters that are only // supported for reasoning models are noted below. For the current state of // unsupported parameters in reasoning models, // [refer to the reasoning guide](https://platform.openai.com/docs/guides/reasoning). func (r *ChatCompletionService) New(ctx context.Context, body ChatCompletionNewParams, opts ...option.RequestOption) (res *ChatCompletion, err error) { opts = append(r.Options[:], opts...) path := "chat/completions" err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...) return } // **Starting a new project?** We recommend trying // [Responses](https://platform.openai.com/docs/api-reference/responses) to take // advantage of the latest OpenAI platform features. Compare // [Chat Completions with Responses](https://platform.openai.com/docs/guides/responses-vs-chat-completions?api-mode=responses). // // --- // // Creates a model response for the given chat conversation. Learn more in the // [text generation](https://platform.openai.com/docs/guides/text-generation), // [vision](https://platform.openai.com/docs/guides/vision), and // [audio](https://platform.openai.com/docs/guides/audio) guides. // // Parameter support can differ depending on the model used to generate the // response, particularly for newer reasoning models. Parameters that are only // supported for reasoning models are noted below. For the current state of // unsupported parameters in reasoning models, // [refer to the reasoning guide](https://platform.openai.com/docs/guides/reasoning). func (r *ChatCompletionService) NewStreaming(ctx context.Context, body ChatCompletionNewParams, opts ...option.RequestOption) (stream *ssestream.Stream[ChatCompletionChunk]) { var ( raw *http.Response err error ) opts = append(r.Options[:], opts...) opts = append([]option.RequestOption{option.WithJSONSet("stream", true)}, opts...) path := "chat/completions" err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &raw, opts...) return ssestream.NewStream[ChatCompletionChunk](ssestream.NewDecoder(raw), err) } // Get a stored chat completion. Only Chat Completions that have been created with // the `store` parameter set to `true` will be returned. func (r *ChatCompletionService) Get(ctx context.Context, completionID string, opts ...option.RequestOption) (res *ChatCompletion, err error) { opts = append(r.Options[:], opts...) if completionID == "" { err = errors.New("missing required completion_id parameter") return } path := fmt.Sprintf("chat/completions/%s", completionID) err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...) return } // Modify a stored chat completion. Only Chat Completions that have been created // with the `store` parameter set to `true` can be modified. Currently, the only // supported modification is to update the `metadata` field. func (r *ChatCompletionService) Update(ctx context.Context, completionID string, body ChatCompletionUpdateParams, opts ...option.RequestOption) (res *ChatCompletion, err error) { opts = append(r.Options[:], opts...) if completionID == "" { err = errors.New("missing required completion_id parameter") return } path := fmt.Sprintf("chat/completions/%s", completionID) err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...) return } // List stored Chat Completions. Only Chat Completions that have been stored with // the `store` parameter set to `true` will be returned. func (r *ChatCompletionService) List(ctx context.Context, query ChatCompletionListParams, opts ...option.RequestOption) (res *pagination.CursorPage[ChatCompletion], err error) { var raw *http.Response opts = append(r.Options[:], opts...) opts = append([]option.RequestOption{option.WithResponseInto(&raw)}, opts...) path := "chat/completions" cfg, err := requestconfig.NewRequestConfig(ctx, http.MethodGet, path, query, &res, opts...) if err != nil { return nil, err } err = cfg.Execute() if err != nil { return nil, err } res.SetPageConfig(cfg, raw) return res, nil } // List stored Chat Completions. Only Chat Completions that have been stored with // the `store` parameter set to `true` will be returned. func (r *ChatCompletionService) ListAutoPaging(ctx context.Context, query ChatCompletionListParams, opts ...option.RequestOption) *pagination.CursorPageAutoPager[ChatCompletion] { return pagination.NewCursorPageAutoPager(r.List(ctx, query, opts...)) } // Delete a stored chat completion. Only Chat Completions that have been created // with the `store` parameter set to `true` can be deleted. func (r *ChatCompletionService) Delete(ctx context.Context, completionID string, opts ...option.RequestOption) (res *ChatCompletionDeleted, err error) { opts = append(r.Options[:], opts...) if completionID == "" { err = errors.New("missing required completion_id parameter") return } path := fmt.Sprintf("chat/completions/%s", completionID) err = requestconfig.ExecuteNewRequest(ctx, http.MethodDelete, path, nil, &res, opts...) return } // Represents a chat completion response returned by model, based on the provided // input. type ChatCompletion struct { // A unique identifier for the chat completion. ID string `json:"id,required"` // A list of chat completion choices. Can be more than one if `n` is greater // than 1. Choices []ChatCompletionChoice `json:"choices,required"` // The Unix timestamp (in seconds) of when the chat completion was created. Created int64 `json:"created,required"` // The model used for the chat completion. Model string `json:"model,required"` // The object type, which is always `chat.completion`. Object constant.ChatCompletion `json:"object,required"` // The service tier used for processing the request. // // Any of "scale", "default". ServiceTier ChatCompletionServiceTier `json:"service_tier,nullable"` // This fingerprint represents the backend configuration that the model runs with. // // Can be used in conjunction with the `seed` request parameter to understand when // backend changes have been made that might impact determinism. SystemFingerprint string `json:"system_fingerprint"` // Usage statistics for the completion request. Usage CompletionUsage `json:"usage"` // Metadata for the response, check the presence of optional fields with the // [resp.Field.IsPresent] method. JSON struct { ID resp.Field Choices resp.Field Created resp.Field Model resp.Field Object resp.Field ServiceTier resp.Field SystemFingerprint resp.Field Usage resp.Field ExtraFields map[string]resp.Field raw string } `json:"-"` } // Returns the unmodified JSON received from the API func (r ChatCompletion) RawJSON() string { return r.JSON.raw } func (r *ChatCompletion) UnmarshalJSON(data []byte) error { return apijson.UnmarshalRoot(data, r) } type ChatCompletionChoice struct { // The reason the model stopped generating tokens. This will be `stop` if the model // hit a natural stop point or a provided stop sequence, `length` if the maximum // number of tokens specified in the request was reached, `content_filter` if // content was omitted due to a flag from our content filters, `tool_calls` if the // model called a tool, or `function_call` (deprecated) if the model called a // function. // // Any of "stop", "length", "tool_calls", "content_filter", "function_call". FinishReason string `json:"finish_reason,required"` // The index of the choice in the list of choices. Index int64 `json:"index,required"` // Log probability information for the choice. Logprobs ChatCompletionChoiceLogprobs `json:"logprobs,required"` // A chat completion message generated by the model. Message ChatCompletionMessage `json:"message,required"` // Metadata for the response, check the presence of optional fields with the // [resp.Field.IsPresent] method. JSON struct { FinishReason resp.Field Index resp.Field Logprobs resp.Field Message resp.Field ExtraFields map[string]resp.Field raw string } `json:"-"` } // Returns the unmodified JSON received from the API func (r ChatCompletionChoice) RawJSON() string { return r.JSON.raw } func (r *ChatCompletionChoice) UnmarshalJSON(data []byte) error { return apijson.UnmarshalRoot(data, r) } // Log probability information for the choice. type ChatCompletionChoiceLogprobs struct { // A list of message content tokens with log probability information. Content []ChatCompletionTokenLogprob `json:"content,required"` // A list of message refusal tokens with log probability information. Refusal []ChatCompletionTokenLogprob `json:"refusal,required"` // Metadata for the response, check the presence of optional fields with the // [resp.Field.IsPresent] method. JSON struct { Content resp.Field Refusal resp.Field ExtraFields map[string]resp.Field raw string } `json:"-"` } // Returns the unmodified JSON received from the API func (r ChatCompletionChoiceLogprobs) RawJSON() string { return r.JSON.raw } func (r *ChatCompletionChoiceLogprobs) UnmarshalJSON(data []byte) error { return apijson.UnmarshalRoot(data, r) } // The service tier used for processing the request. type ChatCompletionServiceTier string const ( ChatCompletionServiceTierScale ChatCompletionServiceTier = "scale" ChatCompletionServiceTierDefault ChatCompletionServiceTier = "default" ) // Messages sent by the model in response to user messages. // // The property Role is required. type ChatCompletionAssistantMessageParam struct { // The refusal message by the assistant. Refusal param.Opt[string] `json:"refusal,omitzero"` // An optional name for the participant. Provides the model information to // differentiate between participants of the same role. Name param.Opt[string] `json:"name,omitzero"` // Data about a previous audio response from the model. // [Learn more](https://platform.openai.com/docs/guides/audio). Audio ChatCompletionAssistantMessageParamAudio `json:"audio,omitzero"` // The contents of the assistant message. Required unless `tool_calls` or // `function_call` is specified. Content ChatCompletionAssistantMessageParamContentUnion `json:"content,omitzero"` // Deprecated and replaced by `tool_calls`. The name and arguments of a function // that should be called, as generated by the model. // // Deprecated: deprecated FunctionCall ChatCompletionAssistantMessageParamFunctionCall `json:"function_call,omitzero"` // The tool calls generated by the model, such as function calls. ToolCalls []ChatCompletionMessageToolCallParam `json:"tool_calls,omitzero"` // The role of the messages author, in this case `assistant`. // // This field can be elided, and will marshal its zero value as "assistant". Role constant.Assistant `json:"role,required"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionAssistantMessageParam) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionAssistantMessageParam) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionAssistantMessageParam return param.MarshalObject(r, (*shadow)(&r)) } // Data about a previous audio response from the model. // [Learn more](https://platform.openai.com/docs/guides/audio). // // The property ID is required. type ChatCompletionAssistantMessageParamAudio struct { // Unique identifier for a previous audio response from the model. ID string `json:"id,required"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionAssistantMessageParamAudio) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionAssistantMessageParamAudio) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionAssistantMessageParamAudio return param.MarshalObject(r, (*shadow)(&r)) } // Only one field can be non-zero. // // Use [param.IsOmitted] to confirm if a field is set. type ChatCompletionAssistantMessageParamContentUnion struct { OfString param.Opt[string] `json:",omitzero,inline"` OfArrayOfContentParts []ChatCompletionAssistantMessageParamContentArrayOfContentPartUnion `json:",omitzero,inline"` paramUnion } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (u ChatCompletionAssistantMessageParamContentUnion) IsPresent() bool { return !param.IsOmitted(u) && !u.IsNull() } func (u ChatCompletionAssistantMessageParamContentUnion) MarshalJSON() ([]byte, error) { return param.MarshalUnion[ChatCompletionAssistantMessageParamContentUnion](u.OfString, u.OfArrayOfContentParts) } func (u *ChatCompletionAssistantMessageParamContentUnion) asAny() any { if !param.IsOmitted(u.OfString) { return &u.OfString.Value } else if !param.IsOmitted(u.OfArrayOfContentParts) { return &u.OfArrayOfContentParts } return nil } // Only one field can be non-zero. // // Use [param.IsOmitted] to confirm if a field is set. type ChatCompletionAssistantMessageParamContentArrayOfContentPartUnion struct { OfText *ChatCompletionContentPartTextParam `json:",omitzero,inline"` OfRefusal *ChatCompletionContentPartRefusalParam `json:",omitzero,inline"` paramUnion } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (u ChatCompletionAssistantMessageParamContentArrayOfContentPartUnion) IsPresent() bool { return !param.IsOmitted(u) && !u.IsNull() } func (u ChatCompletionAssistantMessageParamContentArrayOfContentPartUnion) MarshalJSON() ([]byte, error) { return param.MarshalUnion[ChatCompletionAssistantMessageParamContentArrayOfContentPartUnion](u.OfText, u.OfRefusal) } func (u *ChatCompletionAssistantMessageParamContentArrayOfContentPartUnion) asAny() any { if !param.IsOmitted(u.OfText) { return u.OfText } else if !param.IsOmitted(u.OfRefusal) { return u.OfRefusal } return nil } // Returns a pointer to the underlying variant's property, if present. func (u ChatCompletionAssistantMessageParamContentArrayOfContentPartUnion) GetText() *string { if vt := u.OfText; vt != nil { return &vt.Text } return nil } // Returns a pointer to the underlying variant's property, if present. func (u ChatCompletionAssistantMessageParamContentArrayOfContentPartUnion) GetRefusal() *string { if vt := u.OfRefusal; vt != nil { return &vt.Refusal } return nil } // Returns a pointer to the underlying variant's property, if present. func (u ChatCompletionAssistantMessageParamContentArrayOfContentPartUnion) GetType() *string { if vt := u.OfText; vt != nil { return (*string)(&vt.Type) } else if vt := u.OfRefusal; vt != nil { return (*string)(&vt.Type) } return nil } func init() { apijson.RegisterUnion[ChatCompletionAssistantMessageParamContentArrayOfContentPartUnion]( "type", apijson.UnionVariant{ TypeFilter: gjson.JSON, Type: reflect.TypeOf(ChatCompletionContentPartTextParam{}), DiscriminatorValue: "text", }, apijson.UnionVariant{ TypeFilter: gjson.JSON, Type: reflect.TypeOf(ChatCompletionContentPartRefusalParam{}), DiscriminatorValue: "refusal", }, ) } // Deprecated and replaced by `tool_calls`. The name and arguments of a function // that should be called, as generated by the model. // // Deprecated: deprecated // // The properties Arguments, Name are required. type ChatCompletionAssistantMessageParamFunctionCall struct { // The arguments to call the function with, as generated by the model in JSON // format. Note that the model does not always generate valid JSON, and may // hallucinate parameters not defined by your function schema. Validate the // arguments in your code before calling your function. Arguments string `json:"arguments,required"` // The name of the function to call. Name string `json:"name,required"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionAssistantMessageParamFunctionCall) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionAssistantMessageParamFunctionCall) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionAssistantMessageParamFunctionCall return param.MarshalObject(r, (*shadow)(&r)) } // If the audio output modality is requested, this object contains data about the // audio response from the model. // [Learn more](https://platform.openai.com/docs/guides/audio). type ChatCompletionAudio struct { // Unique identifier for this audio response. ID string `json:"id,required"` // Base64 encoded audio bytes generated by the model, in the format specified in // the request. Data string `json:"data,required"` // The Unix timestamp (in seconds) for when this audio response will no longer be // accessible on the server for use in multi-turn conversations. ExpiresAt int64 `json:"expires_at,required"` // Transcript of the audio generated by the model. Transcript string `json:"transcript,required"` // Metadata for the response, check the presence of optional fields with the // [resp.Field.IsPresent] method. JSON struct { ID resp.Field Data resp.Field ExpiresAt resp.Field Transcript resp.Field ExtraFields map[string]resp.Field raw string } `json:"-"` } // Returns the unmodified JSON received from the API func (r ChatCompletionAudio) RawJSON() string { return r.JSON.raw } func (r *ChatCompletionAudio) UnmarshalJSON(data []byte) error { return apijson.UnmarshalRoot(data, r) } // Parameters for audio output. Required when audio output is requested with // `modalities: ["audio"]`. // [Learn more](https://platform.openai.com/docs/guides/audio). // // The properties Format, Voice are required. type ChatCompletionAudioParam struct { // Specifies the output audio format. Must be one of `wav`, `mp3`, `flac`, `opus`, // or `pcm16`. // // Any of "wav", "mp3", "flac", "opus", "pcm16". Format ChatCompletionAudioParamFormat `json:"format,omitzero,required"` // The voice the model uses to respond. Supported voices are `alloy`, `ash`, // `ballad`, `coral`, `echo`, `sage`, and `shimmer`. Voice ChatCompletionAudioParamVoice `json:"voice,omitzero,required"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionAudioParam) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionAudioParam) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionAudioParam return param.MarshalObject(r, (*shadow)(&r)) } // Specifies the output audio format. Must be one of `wav`, `mp3`, `flac`, `opus`, // or `pcm16`. type ChatCompletionAudioParamFormat string const ( ChatCompletionAudioParamFormatWAV ChatCompletionAudioParamFormat = "wav" ChatCompletionAudioParamFormatMP3 ChatCompletionAudioParamFormat = "mp3" ChatCompletionAudioParamFormatFLAC ChatCompletionAudioParamFormat = "flac" ChatCompletionAudioParamFormatOpus ChatCompletionAudioParamFormat = "opus" ChatCompletionAudioParamFormatPcm16 ChatCompletionAudioParamFormat = "pcm16" ) // The voice the model uses to respond. Supported voices are `alloy`, `ash`, // `ballad`, `coral`, `echo`, `sage`, and `shimmer`. type ChatCompletionAudioParamVoice string const ( ChatCompletionAudioParamVoiceAlloy ChatCompletionAudioParamVoice = "alloy" ChatCompletionAudioParamVoiceAsh ChatCompletionAudioParamVoice = "ash" ChatCompletionAudioParamVoiceBallad ChatCompletionAudioParamVoice = "ballad" ChatCompletionAudioParamVoiceCoral ChatCompletionAudioParamVoice = "coral" ChatCompletionAudioParamVoiceEcho ChatCompletionAudioParamVoice = "echo" ChatCompletionAudioParamVoiceFable ChatCompletionAudioParamVoice = "fable" ChatCompletionAudioParamVoiceOnyx ChatCompletionAudioParamVoice = "onyx" ChatCompletionAudioParamVoiceNova ChatCompletionAudioParamVoice = "nova" ChatCompletionAudioParamVoiceSage ChatCompletionAudioParamVoice = "sage" ChatCompletionAudioParamVoiceShimmer ChatCompletionAudioParamVoice = "shimmer" ChatCompletionAudioParamVoiceVerse ChatCompletionAudioParamVoice = "verse" ) // Represents a streamed chunk of a chat completion response returned by the model, // based on the provided input. // [Learn more](https://platform.openai.com/docs/guides/streaming-responses). type ChatCompletionChunk struct { // A unique identifier for the chat completion. Each chunk has the same ID. ID string `json:"id,required"` // A list of chat completion choices. Can contain more than one elements if `n` is // greater than 1. Can also be empty for the last chunk if you set // `stream_options: {"include_usage": true}`. Choices []ChatCompletionChunkChoice `json:"choices,required"` // The Unix timestamp (in seconds) of when the chat completion was created. Each // chunk has the same timestamp. Created int64 `json:"created,required"` // The model to generate the completion. Model string `json:"model,required"` // The object type, which is always `chat.completion.chunk`. Object constant.ChatCompletionChunk `json:"object,required"` // The service tier used for processing the request. // // Any of "scale", "default". ServiceTier ChatCompletionChunkServiceTier `json:"service_tier,nullable"` // This fingerprint represents the backend configuration that the model runs with. // Can be used in conjunction with the `seed` request parameter to understand when // backend changes have been made that might impact determinism. SystemFingerprint string `json:"system_fingerprint"` // An optional field that will only be present when you set // `stream_options: {"include_usage": true}` in your request. When present, it // contains a null value **except for the last chunk** which contains the token // usage statistics for the entire request. // // **NOTE:** If the stream is interrupted or cancelled, you may not receive the // final usage chunk which contains the total token usage for the request. Usage CompletionUsage `json:"usage,nullable"` // Metadata for the response, check the presence of optional fields with the // [resp.Field.IsPresent] method. JSON struct { ID resp.Field Choices resp.Field Created resp.Field Model resp.Field Object resp.Field ServiceTier resp.Field SystemFingerprint resp.Field Usage resp.Field ExtraFields map[string]resp.Field raw string } `json:"-"` } // Returns the unmodified JSON received from the API func (r ChatCompletionChunk) RawJSON() string { return r.JSON.raw } func (r *ChatCompletionChunk) UnmarshalJSON(data []byte) error { return apijson.UnmarshalRoot(data, r) } type ChatCompletionChunkChoice struct { // A chat completion delta generated by streamed model responses. Delta ChatCompletionChunkChoiceDelta `json:"delta,required"` // The reason the model stopped generating tokens. This will be `stop` if the model // hit a natural stop point or a provided stop sequence, `length` if the maximum // number of tokens specified in the request was reached, `content_filter` if // content was omitted due to a flag from our content filters, `tool_calls` if the // model called a tool, or `function_call` (deprecated) if the model called a // function. // // Any of "stop", "length", "tool_calls", "content_filter", "function_call". FinishReason string `json:"finish_reason,required"` // The index of the choice in the list of choices. Index int64 `json:"index,required"` // Log probability information for the choice. Logprobs ChatCompletionChunkChoiceLogprobs `json:"logprobs,nullable"` // Metadata for the response, check the presence of optional fields with the // [resp.Field.IsPresent] method. JSON struct { Delta resp.Field FinishReason resp.Field Index resp.Field Logprobs resp.Field ExtraFields map[string]resp.Field raw string } `json:"-"` } // Returns the unmodified JSON received from the API func (r ChatCompletionChunkChoice) RawJSON() string { return r.JSON.raw } func (r *ChatCompletionChunkChoice) UnmarshalJSON(data []byte) error { return apijson.UnmarshalRoot(data, r) } // A chat completion delta generated by streamed model responses. type ChatCompletionChunkChoiceDelta struct { // The contents of the chunk message. Content string `json:"content,nullable"` // Deprecated and replaced by `tool_calls`. The name and arguments of a function // that should be called, as generated by the model. // // Deprecated: deprecated FunctionCall ChatCompletionChunkChoiceDeltaFunctionCall `json:"function_call"` // The refusal message generated by the model. Refusal string `json:"refusal,nullable"` // The role of the author of this message. // // Any of "developer", "system", "user", "assistant", "tool". Role string `json:"role"` ToolCalls []ChatCompletionChunkChoiceDeltaToolCall `json:"tool_calls"` // Metadata for the response, check the presence of optional fields with the // [resp.Field.IsPresent] method. JSON struct { Content resp.Field FunctionCall resp.Field Refusal resp.Field Role resp.Field ToolCalls resp.Field ExtraFields map[string]resp.Field raw string } `json:"-"` } // Returns the unmodified JSON received from the API func (r ChatCompletionChunkChoiceDelta) RawJSON() string { return r.JSON.raw } func (r *ChatCompletionChunkChoiceDelta) UnmarshalJSON(data []byte) error { return apijson.UnmarshalRoot(data, r) } // Deprecated and replaced by `tool_calls`. The name and arguments of a function // that should be called, as generated by the model. // // Deprecated: deprecated type ChatCompletionChunkChoiceDeltaFunctionCall struct { // The arguments to call the function with, as generated by the model in JSON // format. Note that the model does not always generate valid JSON, and may // hallucinate parameters not defined by your function schema. Validate the // arguments in your code before calling your function. Arguments string `json:"arguments"` // The name of the function to call. Name string `json:"name"` // Metadata for the response, check the presence of optional fields with the // [resp.Field.IsPresent] method. JSON struct { Arguments resp.Field Name resp.Field ExtraFields map[string]resp.Field raw string } `json:"-"` } // Returns the unmodified JSON received from the API func (r ChatCompletionChunkChoiceDeltaFunctionCall) RawJSON() string { return r.JSON.raw } func (r *ChatCompletionChunkChoiceDeltaFunctionCall) UnmarshalJSON(data []byte) error { return apijson.UnmarshalRoot(data, r) } type ChatCompletionChunkChoiceDeltaToolCall struct { Index int64 `json:"index,required"` // The ID of the tool call. ID string `json:"id"` Function ChatCompletionChunkChoiceDeltaToolCallFunction `json:"function"` // The type of the tool. Currently, only `function` is supported. // // Any of "function". Type string `json:"type"` // Metadata for the response, check the presence of optional fields with the // [resp.Field.IsPresent] method. JSON struct { Index resp.Field ID resp.Field Function resp.Field Type resp.Field ExtraFields map[string]resp.Field raw string } `json:"-"` } // Returns the unmodified JSON received from the API func (r ChatCompletionChunkChoiceDeltaToolCall) RawJSON() string { return r.JSON.raw } func (r *ChatCompletionChunkChoiceDeltaToolCall) UnmarshalJSON(data []byte) error { return apijson.UnmarshalRoot(data, r) } type ChatCompletionChunkChoiceDeltaToolCallFunction struct { // The arguments to call the function with, as generated by the model in JSON // format. Note that the model does not always generate valid JSON, and may // hallucinate parameters not defined by your function schema. Validate the // arguments in your code before calling your function. Arguments string `json:"arguments"` // The name of the function to call. Name string `json:"name"` // Metadata for the response, check the presence of optional fields with the // [resp.Field.IsPresent] method. JSON struct { Arguments resp.Field Name resp.Field ExtraFields map[string]resp.Field raw string } `json:"-"` } // Returns the unmodified JSON received from the API func (r ChatCompletionChunkChoiceDeltaToolCallFunction) RawJSON() string { return r.JSON.raw } func (r *ChatCompletionChunkChoiceDeltaToolCallFunction) UnmarshalJSON(data []byte) error { return apijson.UnmarshalRoot(data, r) } // Log probability information for the choice. type ChatCompletionChunkChoiceLogprobs struct { // A list of message content tokens with log probability information. Content []ChatCompletionTokenLogprob `json:"content,required"` // A list of message refusal tokens with log probability information. Refusal []ChatCompletionTokenLogprob `json:"refusal,required"` // Metadata for the response, check the presence of optional fields with the // [resp.Field.IsPresent] method. JSON struct { Content resp.Field Refusal resp.Field ExtraFields map[string]resp.Field raw string } `json:"-"` } // Returns the unmodified JSON received from the API func (r ChatCompletionChunkChoiceLogprobs) RawJSON() string { return r.JSON.raw } func (r *ChatCompletionChunkChoiceLogprobs) UnmarshalJSON(data []byte) error { return apijson.UnmarshalRoot(data, r) } // The service tier used for processing the request. type ChatCompletionChunkServiceTier string const ( ChatCompletionChunkServiceTierScale ChatCompletionChunkServiceTier = "scale" ChatCompletionChunkServiceTierDefault ChatCompletionChunkServiceTier = "default" ) func TextContentPart(text string) ChatCompletionContentPartUnionParam { var variant ChatCompletionContentPartTextParam variant.Text = text return ChatCompletionContentPartUnionParam{OfText: &variant} } func ImageContentPart(imageURL ChatCompletionContentPartImageImageURLParam) ChatCompletionContentPartUnionParam { var variant ChatCompletionContentPartImageParam variant.ImageURL = imageURL return ChatCompletionContentPartUnionParam{OfImageURL: &variant} } func InputAudioContentPart(inputAudio ChatCompletionContentPartInputAudioInputAudioParam) ChatCompletionContentPartUnionParam { var variant ChatCompletionContentPartInputAudioParam variant.InputAudio = inputAudio return ChatCompletionContentPartUnionParam{OfInputAudio: &variant} } func FileContentPart(file ChatCompletionContentPartFileFileParam) ChatCompletionContentPartUnionParam { var variant ChatCompletionContentPartFileParam variant.File = file return ChatCompletionContentPartUnionParam{OfFile: &variant} } // Only one field can be non-zero. // // Use [param.IsOmitted] to confirm if a field is set. type ChatCompletionContentPartUnionParam struct { OfText *ChatCompletionContentPartTextParam `json:",omitzero,inline"` OfImageURL *ChatCompletionContentPartImageParam `json:",omitzero,inline"` OfInputAudio *ChatCompletionContentPartInputAudioParam `json:",omitzero,inline"` OfFile *ChatCompletionContentPartFileParam `json:",omitzero,inline"` paramUnion } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (u ChatCompletionContentPartUnionParam) IsPresent() bool { return !param.IsOmitted(u) && !u.IsNull() } func (u ChatCompletionContentPartUnionParam) MarshalJSON() ([]byte, error) { return param.MarshalUnion[ChatCompletionContentPartUnionParam](u.OfText, u.OfImageURL, u.OfInputAudio, u.OfFile) } func (u *ChatCompletionContentPartUnionParam) asAny() any { if !param.IsOmitted(u.OfText) { return u.OfText } else if !param.IsOmitted(u.OfImageURL) { return u.OfImageURL } else if !param.IsOmitted(u.OfInputAudio) { return u.OfInputAudio } else if !param.IsOmitted(u.OfFile) { return u.OfFile } return nil } // Returns a pointer to the underlying variant's property, if present. func (u ChatCompletionContentPartUnionParam) GetText() *string { if vt := u.OfText; vt != nil { return &vt.Text } return nil } // Returns a pointer to the underlying variant's property, if present. func (u ChatCompletionContentPartUnionParam) GetImageURL() *ChatCompletionContentPartImageImageURLParam { if vt := u.OfImageURL; vt != nil { return &vt.ImageURL } return nil } // Returns a pointer to the underlying variant's property, if present. func (u ChatCompletionContentPartUnionParam) GetInputAudio() *ChatCompletionContentPartInputAudioInputAudioParam { if vt := u.OfInputAudio; vt != nil { return &vt.InputAudio } return nil } // Returns a pointer to the underlying variant's property, if present. func (u ChatCompletionContentPartUnionParam) GetFile() *ChatCompletionContentPartFileFileParam { if vt := u.OfFile; vt != nil { return &vt.File } return nil } // Returns a pointer to the underlying variant's property, if present. func (u ChatCompletionContentPartUnionParam) GetType() *string { if vt := u.OfText; vt != nil { return (*string)(&vt.Type) } else if vt := u.OfImageURL; vt != nil { return (*string)(&vt.Type) } else if vt := u.OfInputAudio; vt != nil { return (*string)(&vt.Type) } else if vt := u.OfFile; vt != nil { return (*string)(&vt.Type) } return nil } func init() { apijson.RegisterUnion[ChatCompletionContentPartUnionParam]( "type", apijson.UnionVariant{ TypeFilter: gjson.JSON, Type: reflect.TypeOf(ChatCompletionContentPartTextParam{}), DiscriminatorValue: "text", }, apijson.UnionVariant{ TypeFilter: gjson.JSON, Type: reflect.TypeOf(ChatCompletionContentPartImageParam{}), DiscriminatorValue: "image_url", }, apijson.UnionVariant{ TypeFilter: gjson.JSON, Type: reflect.TypeOf(ChatCompletionContentPartInputAudioParam{}), DiscriminatorValue: "input_audio", }, apijson.UnionVariant{ TypeFilter: gjson.JSON, Type: reflect.TypeOf(ChatCompletionContentPartFileParam{}), DiscriminatorValue: "file", }, ) } // Learn about [file inputs](https://platform.openai.com/docs/guides/text) for text // generation. // // The properties File, Type are required. type ChatCompletionContentPartFileParam struct { File ChatCompletionContentPartFileFileParam `json:"file,omitzero,required"` // The type of the content part. Always `file`. // // This field can be elided, and will marshal its zero value as "file". Type constant.File `json:"type,required"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionContentPartFileParam) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionContentPartFileParam) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionContentPartFileParam return param.MarshalObject(r, (*shadow)(&r)) } type ChatCompletionContentPartFileFileParam struct { // The base64 encoded file data, used when passing the file to the model as a // string. FileData param.Opt[string] `json:"file_data,omitzero"` // The ID of an uploaded file to use as input. FileID param.Opt[string] `json:"file_id,omitzero"` // The name of the file, used when passing the file to the model as a string. Filename param.Opt[string] `json:"filename,omitzero"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionContentPartFileFileParam) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionContentPartFileFileParam) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionContentPartFileFileParam return param.MarshalObject(r, (*shadow)(&r)) } // Learn about [image inputs](https://platform.openai.com/docs/guides/vision). // // The properties ImageURL, Type are required. type ChatCompletionContentPartImageParam struct { ImageURL ChatCompletionContentPartImageImageURLParam `json:"image_url,omitzero,required"` // The type of the content part. // // This field can be elided, and will marshal its zero value as "image_url". Type constant.ImageURL `json:"type,required"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionContentPartImageParam) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionContentPartImageParam) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionContentPartImageParam return param.MarshalObject(r, (*shadow)(&r)) } // The property URL is required. type ChatCompletionContentPartImageImageURLParam struct { // Either a URL of the image or the base64 encoded image data. URL string `json:"url,required" format:"uri"` // Specifies the detail level of the image. Learn more in the // [Vision guide](https://platform.openai.com/docs/guides/vision#low-or-high-fidelity-image-understanding). // // Any of "auto", "low", "high". Detail string `json:"detail,omitzero"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionContentPartImageImageURLParam) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionContentPartImageImageURLParam) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionContentPartImageImageURLParam return param.MarshalObject(r, (*shadow)(&r)) } func init() { apijson.RegisterFieldValidator[ChatCompletionContentPartImageImageURLParam]( "Detail", false, "auto", "low", "high", ) } // Learn about [audio inputs](https://platform.openai.com/docs/guides/audio). // // The properties InputAudio, Type are required. type ChatCompletionContentPartInputAudioParam struct { InputAudio ChatCompletionContentPartInputAudioInputAudioParam `json:"input_audio,omitzero,required"` // The type of the content part. Always `input_audio`. // // This field can be elided, and will marshal its zero value as "input_audio". Type constant.InputAudio `json:"type,required"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionContentPartInputAudioParam) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionContentPartInputAudioParam) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionContentPartInputAudioParam return param.MarshalObject(r, (*shadow)(&r)) } // The properties Data, Format are required. type ChatCompletionContentPartInputAudioInputAudioParam struct { // Base64 encoded audio data. Data string `json:"data,required"` // The format of the encoded audio data. Currently supports "wav" and "mp3". // // Any of "wav", "mp3". Format string `json:"format,omitzero,required"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionContentPartInputAudioInputAudioParam) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionContentPartInputAudioInputAudioParam) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionContentPartInputAudioInputAudioParam return param.MarshalObject(r, (*shadow)(&r)) } func init() { apijson.RegisterFieldValidator[ChatCompletionContentPartInputAudioInputAudioParam]( "Format", false, "wav", "mp3", ) } // The properties Refusal, Type are required. type ChatCompletionContentPartRefusalParam struct { // The refusal message generated by the model. Refusal string `json:"refusal,required"` // The type of the content part. // // This field can be elided, and will marshal its zero value as "refusal". Type constant.Refusal `json:"type,required"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionContentPartRefusalParam) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionContentPartRefusalParam) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionContentPartRefusalParam return param.MarshalObject(r, (*shadow)(&r)) } // Learn about // [text inputs](https://platform.openai.com/docs/guides/text-generation). // // The properties Text, Type are required. type ChatCompletionContentPartTextParam struct { // The text content. Text string `json:"text,required"` // The type of the content part. // // This field can be elided, and will marshal its zero value as "text". Type constant.Text `json:"type,required"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionContentPartTextParam) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionContentPartTextParam) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionContentPartTextParam return param.MarshalObject(r, (*shadow)(&r)) } type ChatCompletionDeleted struct { // The ID of the chat completion that was deleted. ID string `json:"id,required"` // Whether the chat completion was deleted. Deleted bool `json:"deleted,required"` // The type of object being deleted. Object constant.ChatCompletionDeleted `json:"object,required"` // Metadata for the response, check the presence of optional fields with the // [resp.Field.IsPresent] method. JSON struct { ID resp.Field Deleted resp.Field Object resp.Field ExtraFields map[string]resp.Field raw string } `json:"-"` } // Returns the unmodified JSON received from the API func (r ChatCompletionDeleted) RawJSON() string { return r.JSON.raw } func (r *ChatCompletionDeleted) UnmarshalJSON(data []byte) error { return apijson.UnmarshalRoot(data, r) } // Developer-provided instructions that the model should follow, regardless of // messages sent by the user. With o1 models and newer, `developer` messages // replace the previous `system` messages. // // The properties Content, Role are required. type ChatCompletionDeveloperMessageParam struct { // The contents of the developer message. Content ChatCompletionDeveloperMessageParamContentUnion `json:"content,omitzero,required"` // An optional name for the participant. Provides the model information to // differentiate between participants of the same role. Name param.Opt[string] `json:"name,omitzero"` // The role of the messages author, in this case `developer`. // // This field can be elided, and will marshal its zero value as "developer". Role constant.Developer `json:"role,required"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionDeveloperMessageParam) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionDeveloperMessageParam) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionDeveloperMessageParam return param.MarshalObject(r, (*shadow)(&r)) } // Only one field can be non-zero. // // Use [param.IsOmitted] to confirm if a field is set. type ChatCompletionDeveloperMessageParamContentUnion struct { OfString param.Opt[string] `json:",omitzero,inline"` OfArrayOfContentParts []ChatCompletionContentPartTextParam `json:",omitzero,inline"` paramUnion } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (u ChatCompletionDeveloperMessageParamContentUnion) IsPresent() bool { return !param.IsOmitted(u) && !u.IsNull() } func (u ChatCompletionDeveloperMessageParamContentUnion) MarshalJSON() ([]byte, error) { return param.MarshalUnion[ChatCompletionDeveloperMessageParamContentUnion](u.OfString, u.OfArrayOfContentParts) } func (u *ChatCompletionDeveloperMessageParamContentUnion) asAny() any { if !param.IsOmitted(u.OfString) { return &u.OfString.Value } else if !param.IsOmitted(u.OfArrayOfContentParts) { return &u.OfArrayOfContentParts } return nil } // Specifying a particular function via `{"name": "my_function"}` forces the model // to call that function. // // The property Name is required. type ChatCompletionFunctionCallOptionParam struct { // The name of the function to call. Name string `json:"name,required"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionFunctionCallOptionParam) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionFunctionCallOptionParam) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionFunctionCallOptionParam return param.MarshalObject(r, (*shadow)(&r)) } // Deprecated: deprecated // // The properties Content, Name, Role are required. type ChatCompletionFunctionMessageParam struct { // The contents of the function message. Content param.Opt[string] `json:"content,omitzero,required"` // The name of the function to call. Name string `json:"name,required"` // The role of the messages author, in this case `function`. // // This field can be elided, and will marshal its zero value as "function". Role constant.Function `json:"role,required"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionFunctionMessageParam) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionFunctionMessageParam) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionFunctionMessageParam return param.MarshalObject(r, (*shadow)(&r)) } // A chat completion message generated by the model. type ChatCompletionMessage struct { // The contents of the message. Content string `json:"content,required"` // The refusal message generated by the model. Refusal string `json:"refusal,required"` // The role of the author of this message. Role constant.Assistant `json:"role,required"` // Annotations for the message, when applicable, as when using the // [web search tool](https://platform.openai.com/docs/guides/tools-web-search?api-mode=chat). Annotations []ChatCompletionMessageAnnotation `json:"annotations"` // If the audio output modality is requested, this object contains data about the // audio response from the model. // [Learn more](https://platform.openai.com/docs/guides/audio). Audio ChatCompletionAudio `json:"audio,nullable"` // Deprecated and replaced by `tool_calls`. The name and arguments of a function // that should be called, as generated by the model. // // Deprecated: deprecated FunctionCall ChatCompletionMessageFunctionCall `json:"function_call"` // The tool calls generated by the model, such as function calls. ToolCalls []ChatCompletionMessageToolCall `json:"tool_calls"` // Metadata for the response, check the presence of optional fields with the // [resp.Field.IsPresent] method. JSON struct { Content resp.Field Refusal resp.Field Role resp.Field Annotations resp.Field Audio resp.Field FunctionCall resp.Field ToolCalls resp.Field ExtraFields map[string]resp.Field raw string } `json:"-"` } // Returns the unmodified JSON received from the API func (r ChatCompletionMessage) RawJSON() string { return r.JSON.raw } func (r *ChatCompletionMessage) UnmarshalJSON(data []byte) error { return apijson.UnmarshalRoot(data, r) } func (r ChatCompletionMessage) ToParam() ChatCompletionMessageParamUnion { asst := r.ToAssistantMessageParam() return ChatCompletionMessageParamUnion{OfAssistant: &asst} } func (r ChatCompletionMessage) ToAssistantMessageParam() ChatCompletionAssistantMessageParam { var p ChatCompletionAssistantMessageParam // It is important to not rely on the JSON metadata property // here, it may be unset if the receiver was generated via a // [ChatCompletionAccumulator]. // // Explicit null is intentionally elided from the response. if r.Content != "" { p.Content.OfString = String(r.Content) } if r.Refusal != "" { p.Refusal = String(r.Refusal) } p.Audio.ID = r.Audio.ID p.Role = r.Role p.FunctionCall.Arguments = r.FunctionCall.Arguments p.FunctionCall.Name = r.FunctionCall.Name if len(r.ToolCalls) > 0 { p.ToolCalls = make([]ChatCompletionMessageToolCallParam, len(r.ToolCalls)) for i, v := range r.ToolCalls { p.ToolCalls[i].ID = v.ID p.ToolCalls[i].Function.Arguments = v.Function.Arguments p.ToolCalls[i].Function.Name = v.Function.Name } } return p } // A URL citation when using web search. type ChatCompletionMessageAnnotation struct { // The type of the URL citation. Always `url_citation`. Type constant.URLCitation `json:"type,required"` // A URL citation when using web search. URLCitation ChatCompletionMessageAnnotationURLCitation `json:"url_citation,required"` // Metadata for the response, check the presence of optional fields with the // [resp.Field.IsPresent] method. JSON struct { Type resp.Field URLCitation resp.Field ExtraFields map[string]resp.Field raw string } `json:"-"` } // Returns the unmodified JSON received from the API func (r ChatCompletionMessageAnnotation) RawJSON() string { return r.JSON.raw } func (r *ChatCompletionMessageAnnotation) UnmarshalJSON(data []byte) error { return apijson.UnmarshalRoot(data, r) } // A URL citation when using web search. type ChatCompletionMessageAnnotationURLCitation struct { // The index of the last character of the URL citation in the message. EndIndex int64 `json:"end_index,required"` // The index of the first character of the URL citation in the message. StartIndex int64 `json:"start_index,required"` // The title of the web resource. Title string `json:"title,required"` // The URL of the web resource. URL string `json:"url,required"` // Metadata for the response, check the presence of optional fields with the // [resp.Field.IsPresent] method. JSON struct { EndIndex resp.Field StartIndex resp.Field Title resp.Field URL resp.Field ExtraFields map[string]resp.Field raw string } `json:"-"` } // Returns the unmodified JSON received from the API func (r ChatCompletionMessageAnnotationURLCitation) RawJSON() string { return r.JSON.raw } func (r *ChatCompletionMessageAnnotationURLCitation) UnmarshalJSON(data []byte) error { return apijson.UnmarshalRoot(data, r) } // Deprecated and replaced by `tool_calls`. The name and arguments of a function // that should be called, as generated by the model. // // Deprecated: deprecated type ChatCompletionMessageFunctionCall struct { // The arguments to call the function with, as generated by the model in JSON // format. Note that the model does not always generate valid JSON, and may // hallucinate parameters not defined by your function schema. Validate the // arguments in your code before calling your function. Arguments string `json:"arguments,required"` // The name of the function to call. Name string `json:"name,required"` // Metadata for the response, check the presence of optional fields with the // [resp.Field.IsPresent] method. JSON struct { Arguments resp.Field Name resp.Field ExtraFields map[string]resp.Field raw string } `json:"-"` } // Returns the unmodified JSON received from the API func (r ChatCompletionMessageFunctionCall) RawJSON() string { return r.JSON.raw } func (r *ChatCompletionMessageFunctionCall) UnmarshalJSON(data []byte) error { return apijson.UnmarshalRoot(data, r) } func AssistantMessage[T string | []ChatCompletionAssistantMessageParamContentArrayOfContentPartUnion](content T) ChatCompletionMessageParamUnion { var assistant ChatCompletionAssistantMessageParam switch v := any(content).(type) { case string: assistant.Content.OfString = param.NewOpt(v) case []ChatCompletionAssistantMessageParamContentArrayOfContentPartUnion: assistant.Content.OfArrayOfContentParts = v } return ChatCompletionMessageParamUnion{OfAssistant: &assistant} } func DeveloperMessage[T string | []ChatCompletionContentPartTextParam](content T) ChatCompletionMessageParamUnion { var developer ChatCompletionDeveloperMessageParam switch v := any(content).(type) { case string: developer.Content.OfString = param.NewOpt(v) case []ChatCompletionContentPartTextParam: developer.Content.OfArrayOfContentParts = v } return ChatCompletionMessageParamUnion{OfDeveloper: &developer} } func SystemMessage[T string | []ChatCompletionContentPartTextParam](content T) ChatCompletionMessageParamUnion { var system ChatCompletionSystemMessageParam switch v := any(content).(type) { case string: system.Content.OfString = param.NewOpt(v) case []ChatCompletionContentPartTextParam: system.Content.OfArrayOfContentParts = v } return ChatCompletionMessageParamUnion{OfSystem: &system} } func UserMessage[T string | []ChatCompletionContentPartUnionParam](content T) ChatCompletionMessageParamUnion { var user ChatCompletionUserMessageParam switch v := any(content).(type) { case string: user.Content.OfString = param.NewOpt(v) case []ChatCompletionContentPartUnionParam: user.Content.OfArrayOfContentParts = v } return ChatCompletionMessageParamUnion{OfUser: &user} } func ToolMessage[T string | []ChatCompletionContentPartTextParam](content T, toolCallID string) ChatCompletionMessageParamUnion { var tool ChatCompletionToolMessageParam switch v := any(content).(type) { case string: tool.Content.OfString = param.NewOpt(v) case []ChatCompletionContentPartTextParam: tool.Content.OfArrayOfContentParts = v } tool.ToolCallID = toolCallID return ChatCompletionMessageParamUnion{OfTool: &tool} } func ChatCompletionMessageParamOfFunction(content string, name string) ChatCompletionMessageParamUnion { var function ChatCompletionFunctionMessageParam function.Content = param.NewOpt(content) function.Name = name return ChatCompletionMessageParamUnion{OfFunction: &function} } // Only one field can be non-zero. // // Use [param.IsOmitted] to confirm if a field is set. type ChatCompletionMessageParamUnion struct { OfDeveloper *ChatCompletionDeveloperMessageParam `json:",omitzero,inline"` OfSystem *ChatCompletionSystemMessageParam `json:",omitzero,inline"` OfUser *ChatCompletionUserMessageParam `json:",omitzero,inline"` OfAssistant *ChatCompletionAssistantMessageParam `json:",omitzero,inline"` OfTool *ChatCompletionToolMessageParam `json:",omitzero,inline"` OfFunction *ChatCompletionFunctionMessageParam `json:",omitzero,inline"` paramUnion } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (u ChatCompletionMessageParamUnion) IsPresent() bool { return !param.IsOmitted(u) && !u.IsNull() } func (u ChatCompletionMessageParamUnion) MarshalJSON() ([]byte, error) { return param.MarshalUnion[ChatCompletionMessageParamUnion](u.OfDeveloper, u.OfSystem, u.OfUser, u.OfAssistant, u.OfTool, u.OfFunction) } func (u *ChatCompletionMessageParamUnion) asAny() any { if !param.IsOmitted(u.OfDeveloper) { return u.OfDeveloper } else if !param.IsOmitted(u.OfSystem) { return u.OfSystem } else if !param.IsOmitted(u.OfUser) { return u.OfUser } else if !param.IsOmitted(u.OfAssistant) { return u.OfAssistant } else if !param.IsOmitted(u.OfTool) { return u.OfTool } else if !param.IsOmitted(u.OfFunction) { return u.OfFunction } return nil } // Returns a pointer to the underlying variant's property, if present. func (u ChatCompletionMessageParamUnion) GetAudio() *ChatCompletionAssistantMessageParamAudio { if vt := u.OfAssistant; vt != nil { return &vt.Audio } return nil } // Returns a pointer to the underlying variant's property, if present. func (u ChatCompletionMessageParamUnion) GetFunctionCall() *ChatCompletionAssistantMessageParamFunctionCall { if vt := u.OfAssistant; vt != nil { return &vt.FunctionCall } return nil } // Returns a pointer to the underlying variant's property, if present. func (u ChatCompletionMessageParamUnion) GetRefusal() *string { if vt := u.OfAssistant; vt != nil && vt.Refusal.IsPresent() { return &vt.Refusal.Value } return nil } // Returns a pointer to the underlying variant's property, if present. func (u ChatCompletionMessageParamUnion) GetToolCalls() []ChatCompletionMessageToolCallParam { if vt := u.OfAssistant; vt != nil { return vt.ToolCalls } return nil } // Returns a pointer to the underlying variant's property, if present. func (u ChatCompletionMessageParamUnion) GetToolCallID() *string { if vt := u.OfTool; vt != nil { return &vt.ToolCallID } return nil } // Returns a pointer to the underlying variant's property, if present. func (u ChatCompletionMessageParamUnion) GetRole() *string { if vt := u.OfDeveloper; vt != nil { return (*string)(&vt.Role) } else if vt := u.OfSystem; vt != nil { return (*string)(&vt.Role) } else if vt := u.OfUser; vt != nil { return (*string)(&vt.Role) } else if vt := u.OfAssistant; vt != nil { return (*string)(&vt.Role) } else if vt := u.OfTool; vt != nil { return (*string)(&vt.Role) } else if vt := u.OfFunction; vt != nil { return (*string)(&vt.Role) } return nil } // Returns a pointer to the underlying variant's property, if present. func (u ChatCompletionMessageParamUnion) GetName() *string { if vt := u.OfDeveloper; vt != nil && vt.Name.IsPresent() { return &vt.Name.Value } else if vt := u.OfSystem; vt != nil && vt.Name.IsPresent() { return &vt.Name.Value } else if vt := u.OfUser; vt != nil && vt.Name.IsPresent() { return &vt.Name.Value } else if vt := u.OfAssistant; vt != nil && vt.Name.IsPresent() { return &vt.Name.Value } else if vt := u.OfFunction; vt != nil { return (*string)(&vt.Name) } return nil } // Returns a subunion which exports methods to access subproperties // // Or use AsAny() to get the underlying value func (u ChatCompletionMessageParamUnion) GetContent() (res chatCompletionMessageParamUnionContent) { if vt := u.OfDeveloper; vt != nil { res.ofChatCompletionDeveloperMessageContent = &vt.Content } else if vt := u.OfSystem; vt != nil { res.ofChatCompletionSystemMessageContent = &vt.Content } else if vt := u.OfUser; vt != nil { res.ofChatCompletionUserMessageContent = &vt.Content } else if vt := u.OfAssistant; vt != nil { res.ofChatCompletionAssistantMessageContent = &vt.Content } else if vt := u.OfTool; vt != nil { res.ofChatCompletionToolMessageContent = &vt.Content } else if vt := u.OfFunction; vt != nil && vt.Content.IsPresent() { res.ofString = &vt.Content.Value } return } // Only one field can be non-zero. // // Use [param.IsOmitted] to confirm if a field is set. type chatCompletionMessageParamUnionContent struct { ofChatCompletionDeveloperMessageContent *ChatCompletionDeveloperMessageParamContentUnion ofChatCompletionSystemMessageContent *ChatCompletionSystemMessageParamContentUnion ofChatCompletionUserMessageContent *ChatCompletionUserMessageParamContentUnion ofChatCompletionAssistantMessageContent *ChatCompletionAssistantMessageParamContentUnion ofChatCompletionToolMessageContent *ChatCompletionToolMessageParamContentUnion ofString *string } // Use the following switch statement to get the type of the union: // // switch u.AsAny().(type) { // case *string: // case *[]openai.ChatCompletionContentPartTextParam: // case *[]openai.ChatCompletionContentPartUnionParam: // case *[]openai.ChatCompletionAssistantMessageParamContentArrayOfContentPartUnion: // default: // fmt.Errorf("not present") // } func (u chatCompletionMessageParamUnionContent) AsAny() any { if !param.IsOmitted(u.ofChatCompletionDeveloperMessageContent) { return u.ofChatCompletionDeveloperMessageContent.asAny() } else if !param.IsOmitted(u.ofChatCompletionSystemMessageContent) { return u.ofChatCompletionSystemMessageContent.asAny() } else if !param.IsOmitted(u.ofChatCompletionUserMessageContent) { return u.ofChatCompletionUserMessageContent.asAny() } else if !param.IsOmitted(u.ofChatCompletionAssistantMessageContent) { return u.ofChatCompletionAssistantMessageContent.asAny() } else if !param.IsOmitted(u.ofChatCompletionToolMessageContent) { return u.ofChatCompletionToolMessageContent.asAny() } else if !param.IsOmitted(u.ofString) { return u.ofString } return nil } func init() { apijson.RegisterUnion[ChatCompletionMessageParamUnion]( "role", apijson.UnionVariant{ TypeFilter: gjson.JSON, Type: reflect.TypeOf(ChatCompletionDeveloperMessageParam{}), DiscriminatorValue: "developer", }, apijson.UnionVariant{ TypeFilter: gjson.JSON, Type: reflect.TypeOf(ChatCompletionSystemMessageParam{}), DiscriminatorValue: "system", }, apijson.UnionVariant{ TypeFilter: gjson.JSON, Type: reflect.TypeOf(ChatCompletionUserMessageParam{}), DiscriminatorValue: "user", }, apijson.UnionVariant{ TypeFilter: gjson.JSON, Type: reflect.TypeOf(ChatCompletionAssistantMessageParam{}), DiscriminatorValue: "assistant", }, apijson.UnionVariant{ TypeFilter: gjson.JSON, Type: reflect.TypeOf(ChatCompletionToolMessageParam{}), DiscriminatorValue: "tool", }, apijson.UnionVariant{ TypeFilter: gjson.JSON, Type: reflect.TypeOf(ChatCompletionFunctionMessageParam{}), DiscriminatorValue: "function", }, ) } type ChatCompletionMessageToolCall struct { // The ID of the tool call. ID string `json:"id,required"` // The function that the model called. Function ChatCompletionMessageToolCallFunction `json:"function,required"` // The type of the tool. Currently, only `function` is supported. Type constant.Function `json:"type,required"` // Metadata for the response, check the presence of optional fields with the // [resp.Field.IsPresent] method. JSON struct { ID resp.Field Function resp.Field Type resp.Field ExtraFields map[string]resp.Field raw string } `json:"-"` } // Returns the unmodified JSON received from the API func (r ChatCompletionMessageToolCall) RawJSON() string { return r.JSON.raw } func (r *ChatCompletionMessageToolCall) UnmarshalJSON(data []byte) error { return apijson.UnmarshalRoot(data, r) } // ToParam converts this ChatCompletionMessageToolCall to a // ChatCompletionMessageToolCallParam. // // Warning: the fields of the param type will not be present. ToParam should only // be used at the last possible moment before sending a request. Test for this with // ChatCompletionMessageToolCallParam.IsOverridden() func (r ChatCompletionMessageToolCall) ToParam() ChatCompletionMessageToolCallParam { return param.OverrideObj[ChatCompletionMessageToolCallParam](r.RawJSON()) } // The function that the model called. type ChatCompletionMessageToolCallFunction struct { // The arguments to call the function with, as generated by the model in JSON // format. Note that the model does not always generate valid JSON, and may // hallucinate parameters not defined by your function schema. Validate the // arguments in your code before calling your function. Arguments string `json:"arguments,required"` // The name of the function to call. Name string `json:"name,required"` // Metadata for the response, check the presence of optional fields with the // [resp.Field.IsPresent] method. JSON struct { Arguments resp.Field Name resp.Field ExtraFields map[string]resp.Field raw string } `json:"-"` } // Returns the unmodified JSON received from the API func (r ChatCompletionMessageToolCallFunction) RawJSON() string { return r.JSON.raw } func (r *ChatCompletionMessageToolCallFunction) UnmarshalJSON(data []byte) error { return apijson.UnmarshalRoot(data, r) } // The properties ID, Function, Type are required. type ChatCompletionMessageToolCallParam struct { // The ID of the tool call. ID string `json:"id,required"` // The function that the model called. Function ChatCompletionMessageToolCallFunctionParam `json:"function,omitzero,required"` // The type of the tool. Currently, only `function` is supported. // // This field can be elided, and will marshal its zero value as "function". Type constant.Function `json:"type,required"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionMessageToolCallParam) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionMessageToolCallParam) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionMessageToolCallParam return param.MarshalObject(r, (*shadow)(&r)) } // The function that the model called. // // The properties Arguments, Name are required. type ChatCompletionMessageToolCallFunctionParam struct { // The arguments to call the function with, as generated by the model in JSON // format. Note that the model does not always generate valid JSON, and may // hallucinate parameters not defined by your function schema. Validate the // arguments in your code before calling your function. Arguments string `json:"arguments,required"` // The name of the function to call. Name string `json:"name,required"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionMessageToolCallFunctionParam) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionMessageToolCallFunctionParam) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionMessageToolCallFunctionParam return param.MarshalObject(r, (*shadow)(&r)) } // Specifies a tool the model should use. Use to force the model to call a specific // function. // // The properties Function, Type are required. type ChatCompletionNamedToolChoiceParam struct { Function ChatCompletionNamedToolChoiceFunctionParam `json:"function,omitzero,required"` // The type of the tool. Currently, only `function` is supported. // // This field can be elided, and will marshal its zero value as "function". Type constant.Function `json:"type,required"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionNamedToolChoiceParam) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionNamedToolChoiceParam) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionNamedToolChoiceParam return param.MarshalObject(r, (*shadow)(&r)) } // The property Name is required. type ChatCompletionNamedToolChoiceFunctionParam struct { // The name of the function to call. Name string `json:"name,required"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionNamedToolChoiceFunctionParam) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionNamedToolChoiceFunctionParam) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionNamedToolChoiceFunctionParam return param.MarshalObject(r, (*shadow)(&r)) } // Static predicted output content, such as the content of a text file that is // being regenerated. // // The properties Content, Type are required. type ChatCompletionPredictionContentParam struct { // The content that should be matched when generating a model response. If // generated tokens would match this content, the entire model response can be // returned much more quickly. Content ChatCompletionPredictionContentContentUnionParam `json:"content,omitzero,required"` // The type of the predicted content you want to provide. This type is currently // always `content`. // // This field can be elided, and will marshal its zero value as "content". Type constant.Content `json:"type,required"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionPredictionContentParam) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionPredictionContentParam) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionPredictionContentParam return param.MarshalObject(r, (*shadow)(&r)) } // Only one field can be non-zero. // // Use [param.IsOmitted] to confirm if a field is set. type ChatCompletionPredictionContentContentUnionParam struct { OfString param.Opt[string] `json:",omitzero,inline"` OfArrayOfContentParts []ChatCompletionContentPartTextParam `json:",omitzero,inline"` paramUnion } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (u ChatCompletionPredictionContentContentUnionParam) IsPresent() bool { return !param.IsOmitted(u) && !u.IsNull() } func (u ChatCompletionPredictionContentContentUnionParam) MarshalJSON() ([]byte, error) { return param.MarshalUnion[ChatCompletionPredictionContentContentUnionParam](u.OfString, u.OfArrayOfContentParts) } func (u *ChatCompletionPredictionContentContentUnionParam) asAny() any { if !param.IsOmitted(u.OfString) { return &u.OfString.Value } else if !param.IsOmitted(u.OfArrayOfContentParts) { return &u.OfArrayOfContentParts } return nil } // A chat completion message generated by the model. type ChatCompletionStoreMessage struct { // The identifier of the chat message. ID string `json:"id,required"` // Metadata for the response, check the presence of optional fields with the // [resp.Field.IsPresent] method. JSON struct { ID resp.Field ExtraFields map[string]resp.Field raw string } `json:"-"` ChatCompletionMessage } // Returns the unmodified JSON received from the API func (r ChatCompletionStoreMessage) RawJSON() string { return r.JSON.raw } func (r *ChatCompletionStoreMessage) UnmarshalJSON(data []byte) error { return apijson.UnmarshalRoot(data, r) } // Options for streaming response. Only set this when you set `stream: true`. type ChatCompletionStreamOptionsParam struct { // If set, an additional chunk will be streamed before the `data: [DONE]` message. // The `usage` field on this chunk shows the token usage statistics for the entire // request, and the `choices` field will always be an empty array. // // All other chunks will also include a `usage` field, but with a null value. // **NOTE:** If the stream is interrupted, you may not receive the final usage // chunk which contains the total token usage for the request. IncludeUsage param.Opt[bool] `json:"include_usage,omitzero"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionStreamOptionsParam) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionStreamOptionsParam) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionStreamOptionsParam return param.MarshalObject(r, (*shadow)(&r)) } // Developer-provided instructions that the model should follow, regardless of // messages sent by the user. With o1 models and newer, use `developer` messages // for this purpose instead. // // The properties Content, Role are required. type ChatCompletionSystemMessageParam struct { // The contents of the system message. Content ChatCompletionSystemMessageParamContentUnion `json:"content,omitzero,required"` // An optional name for the participant. Provides the model information to // differentiate between participants of the same role. Name param.Opt[string] `json:"name,omitzero"` // The role of the messages author, in this case `system`. // // This field can be elided, and will marshal its zero value as "system". Role constant.System `json:"role,required"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionSystemMessageParam) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionSystemMessageParam) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionSystemMessageParam return param.MarshalObject(r, (*shadow)(&r)) } // Only one field can be non-zero. // // Use [param.IsOmitted] to confirm if a field is set. type ChatCompletionSystemMessageParamContentUnion struct { OfString param.Opt[string] `json:",omitzero,inline"` OfArrayOfContentParts []ChatCompletionContentPartTextParam `json:",omitzero,inline"` paramUnion } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (u ChatCompletionSystemMessageParamContentUnion) IsPresent() bool { return !param.IsOmitted(u) && !u.IsNull() } func (u ChatCompletionSystemMessageParamContentUnion) MarshalJSON() ([]byte, error) { return param.MarshalUnion[ChatCompletionSystemMessageParamContentUnion](u.OfString, u.OfArrayOfContentParts) } func (u *ChatCompletionSystemMessageParamContentUnion) asAny() any { if !param.IsOmitted(u.OfString) { return &u.OfString.Value } else if !param.IsOmitted(u.OfArrayOfContentParts) { return &u.OfArrayOfContentParts } return nil } type ChatCompletionTokenLogprob struct { // The token. Token string `json:"token,required"` // A list of integers representing the UTF-8 bytes representation of the token. // Useful in instances where characters are represented by multiple tokens and // their byte representations must be combined to generate the correct text // representation. Can be `null` if there is no bytes representation for the token. Bytes []int64 `json:"bytes,required"` // The log probability of this token, if it is within the top 20 most likely // tokens. Otherwise, the value `-9999.0` is used to signify that the token is very // unlikely. Logprob float64 `json:"logprob,required"` // List of the most likely tokens and their log probability, at this token // position. In rare cases, there may be fewer than the number of requested // `top_logprobs` returned. TopLogprobs []ChatCompletionTokenLogprobTopLogprob `json:"top_logprobs,required"` // Metadata for the response, check the presence of optional fields with the // [resp.Field.IsPresent] method. JSON struct { Token resp.Field Bytes resp.Field Logprob resp.Field TopLogprobs resp.Field ExtraFields map[string]resp.Field raw string } `json:"-"` } // Returns the unmodified JSON received from the API func (r ChatCompletionTokenLogprob) RawJSON() string { return r.JSON.raw } func (r *ChatCompletionTokenLogprob) UnmarshalJSON(data []byte) error { return apijson.UnmarshalRoot(data, r) } type ChatCompletionTokenLogprobTopLogprob struct { // The token. Token string `json:"token,required"` // A list of integers representing the UTF-8 bytes representation of the token. // Useful in instances where characters are represented by multiple tokens and // their byte representations must be combined to generate the correct text // representation. Can be `null` if there is no bytes representation for the token. Bytes []int64 `json:"bytes,required"` // The log probability of this token, if it is within the top 20 most likely // tokens. Otherwise, the value `-9999.0` is used to signify that the token is very // unlikely. Logprob float64 `json:"logprob,required"` // Metadata for the response, check the presence of optional fields with the // [resp.Field.IsPresent] method. JSON struct { Token resp.Field Bytes resp.Field Logprob resp.Field ExtraFields map[string]resp.Field raw string } `json:"-"` } // Returns the unmodified JSON received from the API func (r ChatCompletionTokenLogprobTopLogprob) RawJSON() string { return r.JSON.raw } func (r *ChatCompletionTokenLogprobTopLogprob) UnmarshalJSON(data []byte) error { return apijson.UnmarshalRoot(data, r) } // The properties Function, Type are required. type ChatCompletionToolParam struct { Function shared.FunctionDefinitionParam `json:"function,omitzero,required"` // The type of the tool. Currently, only `function` is supported. // // This field can be elided, and will marshal its zero value as "function". Type constant.Function `json:"type,required"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionToolParam) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionToolParam) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionToolParam return param.MarshalObject(r, (*shadow)(&r)) } func ChatCompletionToolChoiceOptionParamOfChatCompletionNamedToolChoice(function ChatCompletionNamedToolChoiceFunctionParam) ChatCompletionToolChoiceOptionUnionParam { var variant ChatCompletionNamedToolChoiceParam variant.Function = function return ChatCompletionToolChoiceOptionUnionParam{OfChatCompletionNamedToolChoice: &variant} } // Only one field can be non-zero. // // Use [param.IsOmitted] to confirm if a field is set. type ChatCompletionToolChoiceOptionUnionParam struct { // Check if union is this variant with !param.IsOmitted(union.OfAuto) OfAuto param.Opt[string] `json:",omitzero,inline"` OfChatCompletionNamedToolChoice *ChatCompletionNamedToolChoiceParam `json:",omitzero,inline"` paramUnion } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (u ChatCompletionToolChoiceOptionUnionParam) IsPresent() bool { return !param.IsOmitted(u) && !u.IsNull() } func (u ChatCompletionToolChoiceOptionUnionParam) MarshalJSON() ([]byte, error) { return param.MarshalUnion[ChatCompletionToolChoiceOptionUnionParam](u.OfAuto, u.OfChatCompletionNamedToolChoice) } func (u *ChatCompletionToolChoiceOptionUnionParam) asAny() any { if !param.IsOmitted(u.OfAuto) { return &u.OfAuto } else if !param.IsOmitted(u.OfChatCompletionNamedToolChoice) { return u.OfChatCompletionNamedToolChoice } return nil } // Returns a pointer to the underlying variant's property, if present. func (u ChatCompletionToolChoiceOptionUnionParam) GetFunction() *ChatCompletionNamedToolChoiceFunctionParam { if vt := u.OfChatCompletionNamedToolChoice; vt != nil { return &vt.Function } return nil } // Returns a pointer to the underlying variant's property, if present. func (u ChatCompletionToolChoiceOptionUnionParam) GetType() *string { if vt := u.OfChatCompletionNamedToolChoice; vt != nil { return (*string)(&vt.Type) } return nil } // `none` means the model will not call any tool and instead generates a message. // `auto` means the model can pick between generating a message or calling one or // more tools. `required` means the model must call one or more tools. type ChatCompletionToolChoiceOptionAuto string const ( ChatCompletionToolChoiceOptionAutoNone ChatCompletionToolChoiceOptionAuto = "none" ChatCompletionToolChoiceOptionAutoAuto ChatCompletionToolChoiceOptionAuto = "auto" ChatCompletionToolChoiceOptionAutoRequired ChatCompletionToolChoiceOptionAuto = "required" ) // The properties Content, Role, ToolCallID are required. type ChatCompletionToolMessageParam struct { // The contents of the tool message. Content ChatCompletionToolMessageParamContentUnion `json:"content,omitzero,required"` // Tool call that this message is responding to. ToolCallID string `json:"tool_call_id,required"` // The role of the messages author, in this case `tool`. // // This field can be elided, and will marshal its zero value as "tool". Role constant.Tool `json:"role,required"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionToolMessageParam) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionToolMessageParam) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionToolMessageParam return param.MarshalObject(r, (*shadow)(&r)) } // Only one field can be non-zero. // // Use [param.IsOmitted] to confirm if a field is set. type ChatCompletionToolMessageParamContentUnion struct { OfString param.Opt[string] `json:",omitzero,inline"` OfArrayOfContentParts []ChatCompletionContentPartTextParam `json:",omitzero,inline"` paramUnion } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (u ChatCompletionToolMessageParamContentUnion) IsPresent() bool { return !param.IsOmitted(u) && !u.IsNull() } func (u ChatCompletionToolMessageParamContentUnion) MarshalJSON() ([]byte, error) { return param.MarshalUnion[ChatCompletionToolMessageParamContentUnion](u.OfString, u.OfArrayOfContentParts) } func (u *ChatCompletionToolMessageParamContentUnion) asAny() any { if !param.IsOmitted(u.OfString) { return &u.OfString.Value } else if !param.IsOmitted(u.OfArrayOfContentParts) { return &u.OfArrayOfContentParts } return nil } // Messages sent by an end user, containing prompts or additional context // information. // // The properties Content, Role are required. type ChatCompletionUserMessageParam struct { // The contents of the user message. Content ChatCompletionUserMessageParamContentUnion `json:"content,omitzero,required"` // An optional name for the participant. Provides the model information to // differentiate between participants of the same role. Name param.Opt[string] `json:"name,omitzero"` // The role of the messages author, in this case `user`. // // This field can be elided, and will marshal its zero value as "user". Role constant.User `json:"role,required"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionUserMessageParam) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionUserMessageParam) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionUserMessageParam return param.MarshalObject(r, (*shadow)(&r)) } // Only one field can be non-zero. // // Use [param.IsOmitted] to confirm if a field is set. type ChatCompletionUserMessageParamContentUnion struct { OfString param.Opt[string] `json:",omitzero,inline"` OfArrayOfContentParts []ChatCompletionContentPartUnionParam `json:",omitzero,inline"` paramUnion } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (u ChatCompletionUserMessageParamContentUnion) IsPresent() bool { return !param.IsOmitted(u) && !u.IsNull() } func (u ChatCompletionUserMessageParamContentUnion) MarshalJSON() ([]byte, error) { return param.MarshalUnion[ChatCompletionUserMessageParamContentUnion](u.OfString, u.OfArrayOfContentParts) } func (u *ChatCompletionUserMessageParamContentUnion) asAny() any { if !param.IsOmitted(u.OfString) { return &u.OfString.Value } else if !param.IsOmitted(u.OfArrayOfContentParts) { return &u.OfArrayOfContentParts } return nil } type ChatCompletionNewParams struct { // A list of messages comprising the conversation so far. Depending on the // [model](https://platform.openai.com/docs/models) you use, different message // types (modalities) are supported, like // [text](https://platform.openai.com/docs/guides/text-generation), // [images](https://platform.openai.com/docs/guides/vision), and // [audio](https://platform.openai.com/docs/guides/audio). Messages []ChatCompletionMessageParamUnion `json:"messages,omitzero,required"` // Model ID used to generate the response, like `gpt-4o` or `o1`. OpenAI offers a // wide range of models with different capabilities, performance characteristics, // and price points. Refer to the // [model guide](https://platform.openai.com/docs/models) to browse and compare // available models. Model shared.ChatModel `json:"model,omitzero,required"` // Number between -2.0 and 2.0. Positive values penalize new tokens based on their // existing frequency in the text so far, decreasing the model's likelihood to // repeat the same line verbatim. FrequencyPenalty param.Opt[float64] `json:"frequency_penalty,omitzero"` // Whether to return log probabilities of the output tokens or not. If true, // returns the log probabilities of each output token returned in the `content` of // `message`. Logprobs param.Opt[bool] `json:"logprobs,omitzero"` // An upper bound for the number of tokens that can be generated for a completion, // including visible output tokens and // [reasoning tokens](https://platform.openai.com/docs/guides/reasoning). MaxCompletionTokens param.Opt[int64] `json:"max_completion_tokens,omitzero"` // The maximum number of [tokens](/tokenizer) that can be generated in the chat // completion. This value can be used to control // [costs](https://openai.com/api/pricing/) for text generated via API. // // This value is now deprecated in favor of `max_completion_tokens`, and is not // compatible with // [o1 series models](https://platform.openai.com/docs/guides/reasoning). MaxTokens param.Opt[int64] `json:"max_tokens,omitzero"` // How many chat completion choices to generate for each input message. Note that // you will be charged based on the number of generated tokens across all of the // choices. Keep `n` as `1` to minimize costs. N param.Opt[int64] `json:"n,omitzero"` // Number between -2.0 and 2.0. Positive values penalize new tokens based on // whether they appear in the text so far, increasing the model's likelihood to // talk about new topics. PresencePenalty param.Opt[float64] `json:"presence_penalty,omitzero"` // This feature is in Beta. If specified, our system will make a best effort to // sample deterministically, such that repeated requests with the same `seed` and // parameters should return the same result. Determinism is not guaranteed, and you // should refer to the `system_fingerprint` response parameter to monitor changes // in the backend. Seed param.Opt[int64] `json:"seed,omitzero"` // Whether or not to store the output of this chat completion request for use in // our [model distillation](https://platform.openai.com/docs/guides/distillation) // or [evals](https://platform.openai.com/docs/guides/evals) products. Store param.Opt[bool] `json:"store,omitzero"` // What sampling temperature to use, between 0 and 2. Higher values like 0.8 will // make the output more random, while lower values like 0.2 will make it more // focused and deterministic. We generally recommend altering this or `top_p` but // not both. Temperature param.Opt[float64] `json:"temperature,omitzero"` // An integer between 0 and 20 specifying the number of most likely tokens to // return at each token position, each with an associated log probability. // `logprobs` must be set to `true` if this parameter is used. TopLogprobs param.Opt[int64] `json:"top_logprobs,omitzero"` // An alternative to sampling with temperature, called nucleus sampling, where the // model considers the results of the tokens with top_p probability mass. So 0.1 // means only the tokens comprising the top 10% probability mass are considered. // // We generally recommend altering this or `temperature` but not both. TopP param.Opt[float64] `json:"top_p,omitzero"` // Whether to enable // [parallel function calling](https://platform.openai.com/docs/guides/function-calling#configuring-parallel-function-calling) // during tool use. ParallelToolCalls param.Opt[bool] `json:"parallel_tool_calls,omitzero"` // A unique identifier representing your end-user, which can help OpenAI to monitor // and detect abuse. // [Learn more](https://platform.openai.com/docs/guides/safety-best-practices#end-user-ids). User param.Opt[string] `json:"user,omitzero"` // Parameters for audio output. Required when audio output is requested with // `modalities: ["audio"]`. // [Learn more](https://platform.openai.com/docs/guides/audio). Audio ChatCompletionAudioParam `json:"audio,omitzero"` // Modify the likelihood of specified tokens appearing in the completion. // // Accepts a JSON object that maps tokens (specified by their token ID in the // tokenizer) to an associated bias value from -100 to 100. Mathematically, the // bias is added to the logits generated by the model prior to sampling. The exact // effect will vary per model, but values between -1 and 1 should decrease or // increase likelihood of selection; values like -100 or 100 should result in a ban // or exclusive selection of the relevant token. LogitBias map[string]int64 `json:"logit_bias,omitzero"` // Set of 16 key-value pairs that can be attached to an object. This can be useful // for storing additional information about the object in a structured format, and // querying for objects via API or the dashboard. // // Keys are strings with a maximum length of 64 characters. Values are strings with // a maximum length of 512 characters. Metadata shared.MetadataParam `json:"metadata,omitzero"` // Output types that you would like the model to generate. Most models are capable // of generating text, which is the default: // // `["text"]` // // The `gpt-4o-audio-preview` model can also be used to // [generate audio](https://platform.openai.com/docs/guides/audio). To request that // this model generate both text and audio responses, you can use: // // `["text", "audio"]` // // Any of "text", "audio". Modalities []string `json:"modalities,omitzero"` // **o-series models only** // // Constrains effort on reasoning for // [reasoning models](https://platform.openai.com/docs/guides/reasoning). Currently // supported values are `low`, `medium`, and `high`. Reducing reasoning effort can // result in faster responses and fewer tokens used on reasoning in a response. // // Any of "low", "medium", "high". ReasoningEffort shared.ReasoningEffort `json:"reasoning_effort,omitzero"` // Specifies the latency tier to use for processing the request. This parameter is // relevant for customers subscribed to the scale tier service: // // - If set to 'auto', and the Project is Scale tier enabled, the system will // utilize scale tier credits until they are exhausted. // - If set to 'auto', and the Project is not Scale tier enabled, the request will // be processed using the default service tier with a lower uptime SLA and no // latency guarentee. // - If set to 'default', the request will be processed using the default service // tier with a lower uptime SLA and no latency guarentee. // - When not set, the default behavior is 'auto'. // // When this parameter is set, the response body will include the `service_tier` // utilized. // // Any of "auto", "default". ServiceTier ChatCompletionNewParamsServiceTier `json:"service_tier,omitzero"` // Up to 4 sequences where the API will stop generating further tokens. The // returned text will not contain the stop sequence. Stop ChatCompletionNewParamsStopUnion `json:"stop,omitzero"` // Options for streaming response. Only set this when you set `stream: true`. StreamOptions ChatCompletionStreamOptionsParam `json:"stream_options,omitzero"` // Deprecated in favor of `tool_choice`. // // Controls which (if any) function is called by the model. // // `none` means the model will not call a function and instead generates a message. // // `auto` means the model can pick between generating a message or calling a // function. // // Specifying a particular function via `{"name": "my_function"}` forces the model // to call that function. // // `none` is the default when no functions are present. `auto` is the default if // functions are present. FunctionCall ChatCompletionNewParamsFunctionCallUnion `json:"function_call,omitzero"` // Deprecated in favor of `tools`. // // A list of functions the model may generate JSON inputs for. Functions []ChatCompletionNewParamsFunction `json:"functions,omitzero"` // Static predicted output content, such as the content of a text file that is // being regenerated. Prediction ChatCompletionPredictionContentParam `json:"prediction,omitzero"` // An object specifying the format that the model must output. // // Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured // Outputs which ensures the model will match your supplied JSON schema. Learn more // in the // [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs). // // Setting to `{ "type": "json_object" }` enables the older JSON mode, which // ensures the message the model generates is valid JSON. Using `json_schema` is // preferred for models that support it. ResponseFormat ChatCompletionNewParamsResponseFormatUnion `json:"response_format,omitzero"` // Controls which (if any) tool is called by the model. `none` means the model will // not call any tool and instead generates a message. `auto` means the model can // pick between generating a message or calling one or more tools. `required` means // the model must call one or more tools. Specifying a particular tool via // `{"type": "function", "function": {"name": "my_function"}}` forces the model to // call that tool. // // `none` is the default when no tools are present. `auto` is the default if tools // are present. ToolChoice ChatCompletionToolChoiceOptionUnionParam `json:"tool_choice,omitzero"` // A list of tools the model may call. Currently, only functions are supported as a // tool. Use this to provide a list of functions the model may generate JSON inputs // for. A max of 128 functions are supported. Tools []ChatCompletionToolParam `json:"tools,omitzero"` // This tool searches the web for relevant results to use in a response. Learn more // about the // [web search tool](https://platform.openai.com/docs/guides/tools-web-search?api-mode=chat). WebSearchOptions ChatCompletionNewParamsWebSearchOptions `json:"web_search_options,omitzero"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionNewParams) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionNewParams) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionNewParams return param.MarshalObject(r, (*shadow)(&r)) } // Only one field can be non-zero. // // Use [param.IsOmitted] to confirm if a field is set. type ChatCompletionNewParamsFunctionCallUnion struct { // Check if union is this variant with !param.IsOmitted(union.OfFunctionCallMode) OfFunctionCallMode param.Opt[string] `json:",omitzero,inline"` OfFunctionCallOption *ChatCompletionFunctionCallOptionParam `json:",omitzero,inline"` paramUnion } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (u ChatCompletionNewParamsFunctionCallUnion) IsPresent() bool { return !param.IsOmitted(u) && !u.IsNull() } func (u ChatCompletionNewParamsFunctionCallUnion) MarshalJSON() ([]byte, error) { return param.MarshalUnion[ChatCompletionNewParamsFunctionCallUnion](u.OfFunctionCallMode, u.OfFunctionCallOption) } func (u *ChatCompletionNewParamsFunctionCallUnion) asAny() any { if !param.IsOmitted(u.OfFunctionCallMode) { return &u.OfFunctionCallMode } else if !param.IsOmitted(u.OfFunctionCallOption) { return u.OfFunctionCallOption } return nil } // Returns a pointer to the underlying variant's property, if present. func (u ChatCompletionNewParamsFunctionCallUnion) GetName() *string { if vt := u.OfFunctionCallOption; vt != nil { return &vt.Name } return nil } // `none` means the model will not call a function and instead generates a message. // `auto` means the model can pick between generating a message or calling a // function. type ChatCompletionNewParamsFunctionCallFunctionCallMode string const ( ChatCompletionNewParamsFunctionCallFunctionCallModeNone ChatCompletionNewParamsFunctionCallFunctionCallMode = "none" ChatCompletionNewParamsFunctionCallFunctionCallModeAuto ChatCompletionNewParamsFunctionCallFunctionCallMode = "auto" ) // Deprecated: deprecated // // The property Name is required. type ChatCompletionNewParamsFunction struct { // The name of the function to be called. Must be a-z, A-Z, 0-9, or contain // underscores and dashes, with a maximum length of 64. Name string `json:"name,required"` // A description of what the function does, used by the model to choose when and // how to call the function. Description param.Opt[string] `json:"description,omitzero"` // The parameters the functions accepts, described as a JSON Schema object. See the // [guide](https://platform.openai.com/docs/guides/function-calling) for examples, // and the // [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for // documentation about the format. // // Omitting `parameters` defines a function with an empty parameter list. Parameters shared.FunctionParameters `json:"parameters,omitzero"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionNewParamsFunction) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionNewParamsFunction) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionNewParamsFunction return param.MarshalObject(r, (*shadow)(&r)) } // Only one field can be non-zero. // // Use [param.IsOmitted] to confirm if a field is set. type ChatCompletionNewParamsResponseFormatUnion struct { OfText *shared.ResponseFormatTextParam `json:",omitzero,inline"` OfJSONSchema *shared.ResponseFormatJSONSchemaParam `json:",omitzero,inline"` OfJSONObject *shared.ResponseFormatJSONObjectParam `json:",omitzero,inline"` paramUnion } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (u ChatCompletionNewParamsResponseFormatUnion) IsPresent() bool { return !param.IsOmitted(u) && !u.IsNull() } func (u ChatCompletionNewParamsResponseFormatUnion) MarshalJSON() ([]byte, error) { return param.MarshalUnion[ChatCompletionNewParamsResponseFormatUnion](u.OfText, u.OfJSONSchema, u.OfJSONObject) } func (u *ChatCompletionNewParamsResponseFormatUnion) asAny() any { if !param.IsOmitted(u.OfText) { return u.OfText } else if !param.IsOmitted(u.OfJSONSchema) { return u.OfJSONSchema } else if !param.IsOmitted(u.OfJSONObject) { return u.OfJSONObject } return nil } // Returns a pointer to the underlying variant's property, if present. func (u ChatCompletionNewParamsResponseFormatUnion) GetJSONSchema() *shared.ResponseFormatJSONSchemaJSONSchemaParam { if vt := u.OfJSONSchema; vt != nil { return &vt.JSONSchema } return nil } // Returns a pointer to the underlying variant's property, if present. func (u ChatCompletionNewParamsResponseFormatUnion) GetType() *string { if vt := u.OfText; vt != nil { return (*string)(&vt.Type) } else if vt := u.OfJSONSchema; vt != nil { return (*string)(&vt.Type) } else if vt := u.OfJSONObject; vt != nil { return (*string)(&vt.Type) } return nil } // Specifies the latency tier to use for processing the request. This parameter is // relevant for customers subscribed to the scale tier service: // // - If set to 'auto', and the Project is Scale tier enabled, the system will // utilize scale tier credits until they are exhausted. // - If set to 'auto', and the Project is not Scale tier enabled, the request will // be processed using the default service tier with a lower uptime SLA and no // latency guarentee. // - If set to 'default', the request will be processed using the default service // tier with a lower uptime SLA and no latency guarentee. // - When not set, the default behavior is 'auto'. // // When this parameter is set, the response body will include the `service_tier` // utilized. type ChatCompletionNewParamsServiceTier string const ( ChatCompletionNewParamsServiceTierAuto ChatCompletionNewParamsServiceTier = "auto" ChatCompletionNewParamsServiceTierDefault ChatCompletionNewParamsServiceTier = "default" ) // Only one field can be non-zero. // // Use [param.IsOmitted] to confirm if a field is set. type ChatCompletionNewParamsStopUnion struct { OfString param.Opt[string] `json:",omitzero,inline"` OfChatCompletionNewsStopArray []string `json:",omitzero,inline"` paramUnion } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (u ChatCompletionNewParamsStopUnion) IsPresent() bool { return !param.IsOmitted(u) && !u.IsNull() } func (u ChatCompletionNewParamsStopUnion) MarshalJSON() ([]byte, error) { return param.MarshalUnion[ChatCompletionNewParamsStopUnion](u.OfString, u.OfChatCompletionNewsStopArray) } func (u *ChatCompletionNewParamsStopUnion) asAny() any { if !param.IsOmitted(u.OfString) { return &u.OfString.Value } else if !param.IsOmitted(u.OfChatCompletionNewsStopArray) { return &u.OfChatCompletionNewsStopArray } return nil } // This tool searches the web for relevant results to use in a response. Learn more // about the // [web search tool](https://platform.openai.com/docs/guides/tools-web-search?api-mode=chat). type ChatCompletionNewParamsWebSearchOptions struct { // Approximate location parameters for the search. UserLocation ChatCompletionNewParamsWebSearchOptionsUserLocation `json:"user_location,omitzero"` // High level guidance for the amount of context window space to use for the // search. One of `low`, `medium`, or `high`. `medium` is the default. // // Any of "low", "medium", "high". SearchContextSize string `json:"search_context_size,omitzero"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionNewParamsWebSearchOptions) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionNewParamsWebSearchOptions) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionNewParamsWebSearchOptions return param.MarshalObject(r, (*shadow)(&r)) } func init() { apijson.RegisterFieldValidator[ChatCompletionNewParamsWebSearchOptions]( "SearchContextSize", false, "low", "medium", "high", ) } // Approximate location parameters for the search. // // The properties Approximate, Type are required. type ChatCompletionNewParamsWebSearchOptionsUserLocation struct { // Approximate location parameters for the search. Approximate ChatCompletionNewParamsWebSearchOptionsUserLocationApproximate `json:"approximate,omitzero,required"` // The type of location approximation. Always `approximate`. // // This field can be elided, and will marshal its zero value as "approximate". Type constant.Approximate `json:"type,required"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionNewParamsWebSearchOptionsUserLocation) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionNewParamsWebSearchOptionsUserLocation) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionNewParamsWebSearchOptionsUserLocation return param.MarshalObject(r, (*shadow)(&r)) } // Approximate location parameters for the search. type ChatCompletionNewParamsWebSearchOptionsUserLocationApproximate struct { // Free text input for the city of the user, e.g. `San Francisco`. City param.Opt[string] `json:"city,omitzero"` // The two-letter [ISO country code](https://en.wikipedia.org/wiki/ISO_3166-1) of // the user, e.g. `US`. Country param.Opt[string] `json:"country,omitzero"` // Free text input for the region of the user, e.g. `California`. Region param.Opt[string] `json:"region,omitzero"` // The [IANA timezone](https://timeapi.io/documentation/iana-timezones) of the // user, e.g. `America/Los_Angeles`. Timezone param.Opt[string] `json:"timezone,omitzero"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionNewParamsWebSearchOptionsUserLocationApproximate) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionNewParamsWebSearchOptionsUserLocationApproximate) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionNewParamsWebSearchOptionsUserLocationApproximate return param.MarshalObject(r, (*shadow)(&r)) } type ChatCompletionUpdateParams struct { // Set of 16 key-value pairs that can be attached to an object. This can be useful // for storing additional information about the object in a structured format, and // querying for objects via API or the dashboard. // // Keys are strings with a maximum length of 64 characters. Values are strings with // a maximum length of 512 characters. Metadata shared.MetadataParam `json:"metadata,omitzero,required"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionUpdateParams) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } func (r ChatCompletionUpdateParams) MarshalJSON() (data []byte, err error) { type shadow ChatCompletionUpdateParams return param.MarshalObject(r, (*shadow)(&r)) } type ChatCompletionListParams struct { // Identifier for the last chat completion from the previous pagination request. After param.Opt[string] `query:"after,omitzero" json:"-"` // Number of Chat Completions to retrieve. Limit param.Opt[int64] `query:"limit,omitzero" json:"-"` // The model used to generate the Chat Completions. Model param.Opt[string] `query:"model,omitzero" json:"-"` // A list of metadata keys to filter the Chat Completions by. Example: // // `metadata[key1]=value1&metadata[key2]=value2` Metadata shared.MetadataParam `query:"metadata,omitzero" json:"-"` // Sort order for Chat Completions by timestamp. Use `asc` for ascending order or // `desc` for descending order. Defaults to `asc`. // // Any of "asc", "desc". Order ChatCompletionListParamsOrder `query:"order,omitzero" json:"-"` paramObj } // IsPresent returns true if the field's value is not omitted and not the JSON // "null". To check if this field is omitted, use [param.IsOmitted]. func (f ChatCompletionListParams) IsPresent() bool { return !param.IsOmitted(f) && !f.IsNull() } // URLQuery serializes [ChatCompletionListParams]'s query parameters as // `url.Values`. func (r ChatCompletionListParams) URLQuery() (v url.Values, err error) { return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{ ArrayFormat: apiquery.ArrayQueryFormatBrackets, NestedFormat: apiquery.NestedQueryFormatBrackets, }) } // Sort order for Chat Completions by timestamp. Use `asc` for ascending order or // `desc` for descending order. Defaults to `asc`. type ChatCompletionListParamsOrder string const ( ChatCompletionListParamsOrderAsc ChatCompletionListParamsOrder = "asc" ChatCompletionListParamsOrderDesc ChatCompletionListParamsOrder = "desc" )