mirror of
https://github.com/openai/openai-go.git
synced 2026-03-31 16:47:11 +09:00
3522 lines
140 KiB
Go
3522 lines
140 KiB
Go
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
|
|
package openai
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"errors"
|
|
"fmt"
|
|
"net/http"
|
|
"net/url"
|
|
"slices"
|
|
|
|
"github.com/openai/openai-go/v3/internal/apijson"
|
|
"github.com/openai/openai-go/v3/internal/apiquery"
|
|
"github.com/openai/openai-go/v3/internal/requestconfig"
|
|
"github.com/openai/openai-go/v3/option"
|
|
"github.com/openai/openai-go/v3/packages/pagination"
|
|
"github.com/openai/openai-go/v3/packages/param"
|
|
"github.com/openai/openai-go/v3/packages/respjson"
|
|
"github.com/openai/openai-go/v3/packages/ssestream"
|
|
"github.com/openai/openai-go/v3/shared"
|
|
"github.com/openai/openai-go/v3/shared/constant"
|
|
)
|
|
|
|
// Given a list of messages comprising a conversation, the model will return a
|
|
// response.
|
|
//
|
|
// 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
|
|
// Given a list of messages comprising a conversation, the model will return a
|
|
// response.
|
|
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).
|
|
//
|
|
// Returns a chat completion object, or a streamed sequence of chat completion
|
|
// chunk objects if the request is streamed.
|
|
func (r *ChatCompletionService) New(ctx context.Context, body ChatCompletionNewParams, opts ...option.RequestOption) (res *ChatCompletion, err error) {
|
|
opts = slices.Concat(r.Options, opts)
|
|
path := "chat/completions"
|
|
err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
|
|
return res, err
|
|
}
|
|
|
|
// **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).
|
|
//
|
|
// Returns a chat completion object, or a streamed sequence of chat completion
|
|
// chunk objects if the request is streamed.
|
|
func (r *ChatCompletionService) NewStreaming(ctx context.Context, body ChatCompletionNewParams, opts ...option.RequestOption) (stream *ssestream.Stream[ChatCompletionChunk]) {
|
|
var (
|
|
raw *http.Response
|
|
err error
|
|
)
|
|
opts = slices.Concat(r.Options, opts)
|
|
opts = append(opts, option.WithJSONSet("stream", true))
|
|
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 = slices.Concat(r.Options, opts)
|
|
if completionID == "" {
|
|
err = errors.New("missing required completion_id parameter")
|
|
return nil, err
|
|
}
|
|
path := fmt.Sprintf("chat/completions/%s", completionID)
|
|
err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...)
|
|
return res, err
|
|
}
|
|
|
|
// 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 = slices.Concat(r.Options, opts)
|
|
if completionID == "" {
|
|
err = errors.New("missing required completion_id parameter")
|
|
return nil, err
|
|
}
|
|
path := fmt.Sprintf("chat/completions/%s", completionID)
|
|
err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
|
|
return res, err
|
|
}
|
|
|
|
// 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 = slices.Concat(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 = slices.Concat(r.Options, opts)
|
|
if completionID == "" {
|
|
err = errors.New("missing required completion_id parameter")
|
|
return nil, err
|
|
}
|
|
path := fmt.Sprintf("chat/completions/%s", completionID)
|
|
err = requestconfig.ExecuteNewRequest(ctx, http.MethodDelete, path, nil, &res, opts...)
|
|
return res, err
|
|
}
|
|
|
|
// 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" api:"required"`
|
|
// A list of chat completion choices. Can be more than one if `n` is greater
|
|
// than 1.
|
|
Choices []ChatCompletionChoice `json:"choices" api:"required"`
|
|
// The Unix timestamp (in seconds) of when the chat completion was created.
|
|
Created int64 `json:"created" api:"required"`
|
|
// The model used for the chat completion.
|
|
Model string `json:"model" api:"required"`
|
|
// The object type, which is always `chat.completion`.
|
|
Object constant.ChatCompletion `json:"object" default:"chat.completion"`
|
|
// Specifies the processing type used for serving the request.
|
|
//
|
|
// - If set to 'auto', then the request will be processed with the service tier
|
|
// configured in the Project settings. Unless otherwise configured, the Project
|
|
// will use 'default'.
|
|
// - If set to 'default', then the request will be processed with the standard
|
|
// pricing and performance for the selected model.
|
|
// - If set to '[flex](https://platform.openai.com/docs/guides/flex-processing)' or
|
|
// '[priority](https://openai.com/api-priority-processing/)', then the request
|
|
// will be processed with the corresponding service tier.
|
|
// - When not set, the default behavior is 'auto'.
|
|
//
|
|
// When the `service_tier` parameter is set, the response body will include the
|
|
// `service_tier` value based on the processing mode actually used to serve the
|
|
// request. This response value may be different from the value set in the
|
|
// parameter.
|
|
//
|
|
// Any of "auto", "default", "flex", "scale", "priority".
|
|
ServiceTier ChatCompletionServiceTier `json:"service_tier" api:"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.
|
|
//
|
|
// Deprecated: deprecated
|
|
SystemFingerprint string `json:"system_fingerprint"`
|
|
// Usage statistics for the completion request.
|
|
Usage CompletionUsage `json:"usage"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
ID respjson.Field
|
|
Choices respjson.Field
|
|
Created respjson.Field
|
|
Model respjson.Field
|
|
Object respjson.Field
|
|
ServiceTier respjson.Field
|
|
SystemFingerprint respjson.Field
|
|
Usage respjson.Field
|
|
ExtraFields map[string]respjson.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" api:"required"`
|
|
// The index of the choice in the list of choices.
|
|
Index int64 `json:"index" api:"required"`
|
|
// Log probability information for the choice.
|
|
Logprobs ChatCompletionChoiceLogprobs `json:"logprobs" api:"required"`
|
|
// A chat completion message generated by the model.
|
|
Message ChatCompletionMessage `json:"message" api:"required"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
FinishReason respjson.Field
|
|
Index respjson.Field
|
|
Logprobs respjson.Field
|
|
Message respjson.Field
|
|
ExtraFields map[string]respjson.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" api:"required"`
|
|
// A list of message refusal tokens with log probability information.
|
|
Refusal []ChatCompletionTokenLogprob `json:"refusal" api:"required"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Content respjson.Field
|
|
Refusal respjson.Field
|
|
ExtraFields map[string]respjson.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)
|
|
}
|
|
|
|
// Specifies the processing type used for serving the request.
|
|
//
|
|
// - If set to 'auto', then the request will be processed with the service tier
|
|
// configured in the Project settings. Unless otherwise configured, the Project
|
|
// will use 'default'.
|
|
// - If set to 'default', then the request will be processed with the standard
|
|
// pricing and performance for the selected model.
|
|
// - If set to '[flex](https://platform.openai.com/docs/guides/flex-processing)' or
|
|
// '[priority](https://openai.com/api-priority-processing/)', then the request
|
|
// will be processed with the corresponding service tier.
|
|
// - When not set, the default behavior is 'auto'.
|
|
//
|
|
// When the `service_tier` parameter is set, the response body will include the
|
|
// `service_tier` value based on the processing mode actually used to serve the
|
|
// request. This response value may be different from the value set in the
|
|
// parameter.
|
|
type ChatCompletionServiceTier string
|
|
|
|
const (
|
|
ChatCompletionServiceTierAuto ChatCompletionServiceTier = "auto"
|
|
ChatCompletionServiceTierDefault ChatCompletionServiceTier = "default"
|
|
ChatCompletionServiceTierFlex ChatCompletionServiceTier = "flex"
|
|
ChatCompletionServiceTierScale ChatCompletionServiceTier = "scale"
|
|
ChatCompletionServiceTierPriority ChatCompletionServiceTier = "priority"
|
|
)
|
|
|
|
// Constrains the tools available to the model to a pre-defined set.
|
|
//
|
|
// The properties AllowedTools, Type are required.
|
|
type ChatCompletionAllowedToolChoiceParam struct {
|
|
// Constrains the tools available to the model to a pre-defined set.
|
|
AllowedTools ChatCompletionAllowedToolsParam `json:"allowed_tools,omitzero" api:"required"`
|
|
// Allowed tool configuration type. Always `allowed_tools`.
|
|
//
|
|
// This field can be elided, and will marshal its zero value as "allowed_tools".
|
|
Type constant.AllowedTools `json:"type" default:"allowed_tools"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionAllowedToolChoiceParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionAllowedToolChoiceParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionAllowedToolChoiceParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// 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 []ChatCompletionMessageToolCallUnionParam `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" default:"assistant"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionAssistantMessageParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionAssistantMessageParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionAssistantMessageParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, 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" api:"required"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionAssistantMessageParamAudio) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionAssistantMessageParamAudio
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionAssistantMessageParamAudio) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, 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
|
|
}
|
|
|
|
func (u ChatCompletionAssistantMessageParamContentUnion) MarshalJSON() ([]byte, error) {
|
|
return param.MarshalUnion(u, u.OfString, u.OfArrayOfContentParts)
|
|
}
|
|
func (u *ChatCompletionAssistantMessageParamContentUnion) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, u)
|
|
}
|
|
|
|
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
|
|
}
|
|
|
|
func (u ChatCompletionAssistantMessageParamContentArrayOfContentPartUnion) MarshalJSON() ([]byte, error) {
|
|
return param.MarshalUnion(u, u.OfText, u.OfRefusal)
|
|
}
|
|
func (u *ChatCompletionAssistantMessageParamContentArrayOfContentPartUnion) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, u)
|
|
}
|
|
|
|
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.Discriminator[ChatCompletionContentPartTextParam]("text"),
|
|
apijson.Discriminator[ChatCompletionContentPartRefusalParam]("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" api:"required"`
|
|
// The name of the function to call.
|
|
Name string `json:"name" api:"required"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionAssistantMessageParamFunctionCall) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionAssistantMessageParamFunctionCall
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionAssistantMessageParamFunctionCall) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, 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" api:"required"`
|
|
// Base64 encoded audio bytes generated by the model, in the format specified in
|
|
// the request.
|
|
Data string `json:"data" api:"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" api:"required"`
|
|
// Transcript of the audio generated by the model.
|
|
Transcript string `json:"transcript" api:"required"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
ID respjson.Field
|
|
Data respjson.Field
|
|
ExpiresAt respjson.Field
|
|
Transcript respjson.Field
|
|
ExtraFields map[string]respjson.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", "aac", "mp3", "flac", "opus", "pcm16".
|
|
Format ChatCompletionAudioParamFormat `json:"format,omitzero" api:"required"`
|
|
// The voice the model uses to respond. Supported built-in voices are `alloy`,
|
|
// `ash`, `ballad`, `coral`, `echo`, `fable`, `nova`, `onyx`, `sage`, `shimmer`,
|
|
// `marin`, and `cedar`. You may also provide a custom voice object with an `id`,
|
|
// for example `{ "id": "voice_1234" }`.
|
|
Voice ChatCompletionAudioParamVoiceUnion `json:"voice,omitzero" api:"required"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionAudioParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionAudioParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionAudioParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// Specifies the output audio format. Must be one of `wav`, `mp3`, `flac`, `opus`,
|
|
// or `pcm16`.
|
|
type ChatCompletionAudioParamFormat string
|
|
|
|
const (
|
|
ChatCompletionAudioParamFormatWAV ChatCompletionAudioParamFormat = "wav"
|
|
ChatCompletionAudioParamFormatAAC ChatCompletionAudioParamFormat = "aac"
|
|
ChatCompletionAudioParamFormatMP3 ChatCompletionAudioParamFormat = "mp3"
|
|
ChatCompletionAudioParamFormatFLAC ChatCompletionAudioParamFormat = "flac"
|
|
ChatCompletionAudioParamFormatOpus ChatCompletionAudioParamFormat = "opus"
|
|
ChatCompletionAudioParamFormatPcm16 ChatCompletionAudioParamFormat = "pcm16"
|
|
)
|
|
|
|
// Only one field can be non-zero.
|
|
//
|
|
// Use [param.IsOmitted] to confirm if a field is set.
|
|
type ChatCompletionAudioParamVoiceUnion struct {
|
|
OfString param.Opt[string] `json:",omitzero,inline"`
|
|
// Check if union is this variant with
|
|
// !param.IsOmitted(union.OfChatCompletionAudioVoiceString)
|
|
OfChatCompletionAudioVoiceString param.Opt[string] `json:",omitzero,inline"`
|
|
OfChatCompletionAudioVoiceID *ChatCompletionAudioParamVoiceID `json:",omitzero,inline"`
|
|
paramUnion
|
|
}
|
|
|
|
func (u ChatCompletionAudioParamVoiceUnion) MarshalJSON() ([]byte, error) {
|
|
return param.MarshalUnion(u, u.OfString, u.OfChatCompletionAudioVoiceString, u.OfChatCompletionAudioVoiceID)
|
|
}
|
|
func (u *ChatCompletionAudioParamVoiceUnion) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, u)
|
|
}
|
|
|
|
func (u *ChatCompletionAudioParamVoiceUnion) asAny() any {
|
|
if !param.IsOmitted(u.OfString) {
|
|
return &u.OfString.Value
|
|
} else if !param.IsOmitted(u.OfChatCompletionAudioVoiceString) {
|
|
return &u.OfChatCompletionAudioVoiceString
|
|
} else if !param.IsOmitted(u.OfChatCompletionAudioVoiceID) {
|
|
return u.OfChatCompletionAudioVoiceID
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type ChatCompletionAudioParamVoiceString string
|
|
|
|
const (
|
|
ChatCompletionAudioParamVoiceStringAlloy ChatCompletionAudioParamVoiceString = "alloy"
|
|
ChatCompletionAudioParamVoiceStringAsh ChatCompletionAudioParamVoiceString = "ash"
|
|
ChatCompletionAudioParamVoiceStringBallad ChatCompletionAudioParamVoiceString = "ballad"
|
|
ChatCompletionAudioParamVoiceStringCoral ChatCompletionAudioParamVoiceString = "coral"
|
|
ChatCompletionAudioParamVoiceStringEcho ChatCompletionAudioParamVoiceString = "echo"
|
|
ChatCompletionAudioParamVoiceStringSage ChatCompletionAudioParamVoiceString = "sage"
|
|
ChatCompletionAudioParamVoiceStringShimmer ChatCompletionAudioParamVoiceString = "shimmer"
|
|
ChatCompletionAudioParamVoiceStringVerse ChatCompletionAudioParamVoiceString = "verse"
|
|
ChatCompletionAudioParamVoiceStringMarin ChatCompletionAudioParamVoiceString = "marin"
|
|
ChatCompletionAudioParamVoiceStringCedar ChatCompletionAudioParamVoiceString = "cedar"
|
|
)
|
|
|
|
// Custom voice reference.
|
|
//
|
|
// The property ID is required.
|
|
type ChatCompletionAudioParamVoiceID struct {
|
|
// The custom voice ID, e.g. `voice_1234`.
|
|
ID string `json:"id" api:"required"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionAudioParamVoiceID) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionAudioParamVoiceID
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionAudioParamVoiceID) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// 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" api:"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" api:"required"`
|
|
// The Unix timestamp (in seconds) of when the chat completion was created. Each
|
|
// chunk has the same timestamp.
|
|
Created int64 `json:"created" api:"required"`
|
|
// The model to generate the completion.
|
|
Model string `json:"model" api:"required"`
|
|
// The object type, which is always `chat.completion.chunk`.
|
|
Object constant.ChatCompletionChunk `json:"object" default:"chat.completion.chunk"`
|
|
// Specifies the processing type used for serving the request.
|
|
//
|
|
// - If set to 'auto', then the request will be processed with the service tier
|
|
// configured in the Project settings. Unless otherwise configured, the Project
|
|
// will use 'default'.
|
|
// - If set to 'default', then the request will be processed with the standard
|
|
// pricing and performance for the selected model.
|
|
// - If set to '[flex](https://platform.openai.com/docs/guides/flex-processing)' or
|
|
// '[priority](https://openai.com/api-priority-processing/)', then the request
|
|
// will be processed with the corresponding service tier.
|
|
// - When not set, the default behavior is 'auto'.
|
|
//
|
|
// When the `service_tier` parameter is set, the response body will include the
|
|
// `service_tier` value based on the processing mode actually used to serve the
|
|
// request. This response value may be different from the value set in the
|
|
// parameter.
|
|
//
|
|
// Any of "auto", "default", "flex", "scale", "priority".
|
|
ServiceTier ChatCompletionChunkServiceTier `json:"service_tier" api:"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.
|
|
//
|
|
// Deprecated: deprecated
|
|
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" api:"nullable"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
ID respjson.Field
|
|
Choices respjson.Field
|
|
Created respjson.Field
|
|
Model respjson.Field
|
|
Object respjson.Field
|
|
ServiceTier respjson.Field
|
|
SystemFingerprint respjson.Field
|
|
Usage respjson.Field
|
|
ExtraFields map[string]respjson.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" api:"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" api:"required"`
|
|
// The index of the choice in the list of choices.
|
|
Index int64 `json:"index" api:"required"`
|
|
// Log probability information for the choice.
|
|
Logprobs ChatCompletionChunkChoiceLogprobs `json:"logprobs" api:"nullable"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Delta respjson.Field
|
|
FinishReason respjson.Field
|
|
Index respjson.Field
|
|
Logprobs respjson.Field
|
|
ExtraFields map[string]respjson.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" api:"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" api:"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"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Content respjson.Field
|
|
FunctionCall respjson.Field
|
|
Refusal respjson.Field
|
|
Role respjson.Field
|
|
ToolCalls respjson.Field
|
|
ExtraFields map[string]respjson.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"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Arguments respjson.Field
|
|
Name respjson.Field
|
|
ExtraFields map[string]respjson.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" api:"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"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Index respjson.Field
|
|
ID respjson.Field
|
|
Function respjson.Field
|
|
Type respjson.Field
|
|
ExtraFields map[string]respjson.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"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Arguments respjson.Field
|
|
Name respjson.Field
|
|
ExtraFields map[string]respjson.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" api:"required"`
|
|
// A list of message refusal tokens with log probability information.
|
|
Refusal []ChatCompletionTokenLogprob `json:"refusal" api:"required"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Content respjson.Field
|
|
Refusal respjson.Field
|
|
ExtraFields map[string]respjson.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)
|
|
}
|
|
|
|
// Specifies the processing type used for serving the request.
|
|
//
|
|
// - If set to 'auto', then the request will be processed with the service tier
|
|
// configured in the Project settings. Unless otherwise configured, the Project
|
|
// will use 'default'.
|
|
// - If set to 'default', then the request will be processed with the standard
|
|
// pricing and performance for the selected model.
|
|
// - If set to '[flex](https://platform.openai.com/docs/guides/flex-processing)' or
|
|
// '[priority](https://openai.com/api-priority-processing/)', then the request
|
|
// will be processed with the corresponding service tier.
|
|
// - When not set, the default behavior is 'auto'.
|
|
//
|
|
// When the `service_tier` parameter is set, the response body will include the
|
|
// `service_tier` value based on the processing mode actually used to serve the
|
|
// request. This response value may be different from the value set in the
|
|
// parameter.
|
|
type ChatCompletionChunkServiceTier string
|
|
|
|
const (
|
|
ChatCompletionChunkServiceTierAuto ChatCompletionChunkServiceTier = "auto"
|
|
ChatCompletionChunkServiceTierDefault ChatCompletionChunkServiceTier = "default"
|
|
ChatCompletionChunkServiceTierFlex ChatCompletionChunkServiceTier = "flex"
|
|
ChatCompletionChunkServiceTierScale ChatCompletionChunkServiceTier = "scale"
|
|
ChatCompletionChunkServiceTierPriority ChatCompletionChunkServiceTier = "priority"
|
|
)
|
|
|
|
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
|
|
}
|
|
|
|
func (u ChatCompletionContentPartUnionParam) MarshalJSON() ([]byte, error) {
|
|
return param.MarshalUnion(u, u.OfText, u.OfImageURL, u.OfInputAudio, u.OfFile)
|
|
}
|
|
func (u *ChatCompletionContentPartUnionParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, u)
|
|
}
|
|
|
|
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.Discriminator[ChatCompletionContentPartTextParam]("text"),
|
|
apijson.Discriminator[ChatCompletionContentPartImageParam]("image_url"),
|
|
apijson.Discriminator[ChatCompletionContentPartInputAudioParam]("input_audio"),
|
|
apijson.Discriminator[ChatCompletionContentPartFileParam]("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" api:"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" default:"file"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionContentPartFileParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionContentPartFileParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionContentPartFileParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, 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
|
|
}
|
|
|
|
func (r ChatCompletionContentPartFileFileParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionContentPartFileFileParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionContentPartFileFileParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// Learn about [image inputs](https://platform.openai.com/docs/guides/vision).
|
|
type ChatCompletionContentPartImage struct {
|
|
ImageURL ChatCompletionContentPartImageImageURL `json:"image_url" api:"required"`
|
|
// The type of the content part.
|
|
Type constant.ImageURL `json:"type" default:"image_url"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
ImageURL respjson.Field
|
|
Type respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r ChatCompletionContentPartImage) RawJSON() string { return r.JSON.raw }
|
|
func (r *ChatCompletionContentPartImage) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// ToParam converts this ChatCompletionContentPartImage to a
|
|
// ChatCompletionContentPartImageParam.
|
|
//
|
|
// 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
|
|
// ChatCompletionContentPartImageParam.Overrides()
|
|
func (r ChatCompletionContentPartImage) ToParam() ChatCompletionContentPartImageParam {
|
|
return param.Override[ChatCompletionContentPartImageParam](json.RawMessage(r.RawJSON()))
|
|
}
|
|
|
|
type ChatCompletionContentPartImageImageURL struct {
|
|
// Either a URL of the image or the base64 encoded image data.
|
|
URL string `json:"url" api:"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"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
URL respjson.Field
|
|
Detail respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r ChatCompletionContentPartImageImageURL) RawJSON() string { return r.JSON.raw }
|
|
func (r *ChatCompletionContentPartImageImageURL) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, 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" api:"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" default:"image_url"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionContentPartImageParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionContentPartImageParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionContentPartImageParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, 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" api:"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
|
|
}
|
|
|
|
func (r ChatCompletionContentPartImageImageURLParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionContentPartImageImageURLParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionContentPartImageImageURLParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
func init() {
|
|
apijson.RegisterFieldValidator[ChatCompletionContentPartImageImageURLParam](
|
|
"detail", "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" api:"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" default:"input_audio"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionContentPartInputAudioParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionContentPartInputAudioParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionContentPartInputAudioParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// The properties Data, Format are required.
|
|
type ChatCompletionContentPartInputAudioInputAudioParam struct {
|
|
// Base64 encoded audio data.
|
|
Data string `json:"data" api:"required"`
|
|
// The format of the encoded audio data. Currently supports "wav" and "mp3".
|
|
//
|
|
// Any of "wav", "mp3".
|
|
Format string `json:"format,omitzero" api:"required"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionContentPartInputAudioInputAudioParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionContentPartInputAudioInputAudioParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionContentPartInputAudioInputAudioParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
func init() {
|
|
apijson.RegisterFieldValidator[ChatCompletionContentPartInputAudioInputAudioParam](
|
|
"format", "wav", "mp3",
|
|
)
|
|
}
|
|
|
|
// The properties Refusal, Type are required.
|
|
type ChatCompletionContentPartRefusalParam struct {
|
|
// The refusal message generated by the model.
|
|
Refusal string `json:"refusal" api:"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" default:"refusal"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionContentPartRefusalParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionContentPartRefusalParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionContentPartRefusalParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// Learn about
|
|
// [text inputs](https://platform.openai.com/docs/guides/text-generation).
|
|
type ChatCompletionContentPartText struct {
|
|
// The text content.
|
|
Text string `json:"text" api:"required"`
|
|
// The type of the content part.
|
|
Type constant.Text `json:"type" default:"text"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Text respjson.Field
|
|
Type respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r ChatCompletionContentPartText) RawJSON() string { return r.JSON.raw }
|
|
func (r *ChatCompletionContentPartText) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// ToParam converts this ChatCompletionContentPartText to a
|
|
// ChatCompletionContentPartTextParam.
|
|
//
|
|
// 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
|
|
// ChatCompletionContentPartTextParam.Overrides()
|
|
func (r ChatCompletionContentPartText) ToParam() ChatCompletionContentPartTextParam {
|
|
return param.Override[ChatCompletionContentPartTextParam](json.RawMessage(r.RawJSON()))
|
|
}
|
|
|
|
// 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" api:"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" default:"text"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionContentPartTextParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionContentPartTextParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionContentPartTextParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// A custom tool that processes input using a specified format.
|
|
//
|
|
// The properties Custom, Type are required.
|
|
type ChatCompletionCustomToolParam struct {
|
|
// Properties of the custom tool.
|
|
Custom ChatCompletionCustomToolCustomParam `json:"custom,omitzero" api:"required"`
|
|
// The type of the custom tool. Always `custom`.
|
|
//
|
|
// This field can be elided, and will marshal its zero value as "custom".
|
|
Type constant.Custom `json:"type" default:"custom"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionCustomToolParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionCustomToolParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionCustomToolParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// Properties of the custom tool.
|
|
//
|
|
// The property Name is required.
|
|
type ChatCompletionCustomToolCustomParam struct {
|
|
// The name of the custom tool, used to identify it in tool calls.
|
|
Name string `json:"name" api:"required"`
|
|
// Optional description of the custom tool, used to provide more context.
|
|
Description param.Opt[string] `json:"description,omitzero"`
|
|
// The input format for the custom tool. Default is unconstrained text.
|
|
Format ChatCompletionCustomToolCustomFormatUnionParam `json:"format,omitzero"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionCustomToolCustomParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionCustomToolCustomParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionCustomToolCustomParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// Only one field can be non-zero.
|
|
//
|
|
// Use [param.IsOmitted] to confirm if a field is set.
|
|
type ChatCompletionCustomToolCustomFormatUnionParam struct {
|
|
OfText *ChatCompletionCustomToolCustomFormatTextParam `json:",omitzero,inline"`
|
|
OfGrammar *ChatCompletionCustomToolCustomFormatGrammarParam `json:",omitzero,inline"`
|
|
paramUnion
|
|
}
|
|
|
|
func (u ChatCompletionCustomToolCustomFormatUnionParam) MarshalJSON() ([]byte, error) {
|
|
return param.MarshalUnion(u, u.OfText, u.OfGrammar)
|
|
}
|
|
func (u *ChatCompletionCustomToolCustomFormatUnionParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, u)
|
|
}
|
|
|
|
func (u *ChatCompletionCustomToolCustomFormatUnionParam) asAny() any {
|
|
if !param.IsOmitted(u.OfText) {
|
|
return u.OfText
|
|
} else if !param.IsOmitted(u.OfGrammar) {
|
|
return u.OfGrammar
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Returns a pointer to the underlying variant's property, if present.
|
|
func (u ChatCompletionCustomToolCustomFormatUnionParam) GetGrammar() *ChatCompletionCustomToolCustomFormatGrammarGrammarParam {
|
|
if vt := u.OfGrammar; vt != nil {
|
|
return &vt.Grammar
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Returns a pointer to the underlying variant's property, if present.
|
|
func (u ChatCompletionCustomToolCustomFormatUnionParam) GetType() *string {
|
|
if vt := u.OfText; vt != nil {
|
|
return (*string)(&vt.Type)
|
|
} else if vt := u.OfGrammar; vt != nil {
|
|
return (*string)(&vt.Type)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func init() {
|
|
apijson.RegisterUnion[ChatCompletionCustomToolCustomFormatUnionParam](
|
|
"type",
|
|
apijson.Discriminator[ChatCompletionCustomToolCustomFormatTextParam]("text"),
|
|
apijson.Discriminator[ChatCompletionCustomToolCustomFormatGrammarParam]("grammar"),
|
|
)
|
|
}
|
|
|
|
func NewChatCompletionCustomToolCustomFormatTextParam() ChatCompletionCustomToolCustomFormatTextParam {
|
|
return ChatCompletionCustomToolCustomFormatTextParam{
|
|
Type: "text",
|
|
}
|
|
}
|
|
|
|
// Unconstrained free-form text.
|
|
//
|
|
// This struct has a constant value, construct it with
|
|
// [NewChatCompletionCustomToolCustomFormatTextParam].
|
|
type ChatCompletionCustomToolCustomFormatTextParam struct {
|
|
// Unconstrained text format. Always `text`.
|
|
Type constant.Text `json:"type" default:"text"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionCustomToolCustomFormatTextParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionCustomToolCustomFormatTextParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionCustomToolCustomFormatTextParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// A grammar defined by the user.
|
|
//
|
|
// The properties Grammar, Type are required.
|
|
type ChatCompletionCustomToolCustomFormatGrammarParam struct {
|
|
// Your chosen grammar.
|
|
Grammar ChatCompletionCustomToolCustomFormatGrammarGrammarParam `json:"grammar,omitzero" api:"required"`
|
|
// Grammar format. Always `grammar`.
|
|
//
|
|
// This field can be elided, and will marshal its zero value as "grammar".
|
|
Type constant.Grammar `json:"type" default:"grammar"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionCustomToolCustomFormatGrammarParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionCustomToolCustomFormatGrammarParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionCustomToolCustomFormatGrammarParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// Your chosen grammar.
|
|
//
|
|
// The properties Definition, Syntax are required.
|
|
type ChatCompletionCustomToolCustomFormatGrammarGrammarParam struct {
|
|
// The grammar definition.
|
|
Definition string `json:"definition" api:"required"`
|
|
// The syntax of the grammar definition. One of `lark` or `regex`.
|
|
//
|
|
// Any of "lark", "regex".
|
|
Syntax string `json:"syntax,omitzero" api:"required"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionCustomToolCustomFormatGrammarGrammarParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionCustomToolCustomFormatGrammarGrammarParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionCustomToolCustomFormatGrammarGrammarParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
func init() {
|
|
apijson.RegisterFieldValidator[ChatCompletionCustomToolCustomFormatGrammarGrammarParam](
|
|
"syntax", "lark", "regex",
|
|
)
|
|
}
|
|
|
|
type ChatCompletionDeleted struct {
|
|
// The ID of the chat completion that was deleted.
|
|
ID string `json:"id" api:"required"`
|
|
// Whether the chat completion was deleted.
|
|
Deleted bool `json:"deleted" api:"required"`
|
|
// The type of object being deleted.
|
|
Object constant.ChatCompletionDeleted `json:"object" default:"chat.completion.deleted"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
ID respjson.Field
|
|
Deleted respjson.Field
|
|
Object respjson.Field
|
|
ExtraFields map[string]respjson.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" api:"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" default:"developer"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionDeveloperMessageParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionDeveloperMessageParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionDeveloperMessageParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, 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
|
|
}
|
|
|
|
func (u ChatCompletionDeveloperMessageParamContentUnion) MarshalJSON() ([]byte, error) {
|
|
return param.MarshalUnion(u, u.OfString, u.OfArrayOfContentParts)
|
|
}
|
|
func (u *ChatCompletionDeveloperMessageParamContentUnion) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, u)
|
|
}
|
|
|
|
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" api:"required"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionFunctionCallOptionParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionFunctionCallOptionParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionFunctionCallOptionParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, 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" api:"required"`
|
|
// The name of the function to call.
|
|
Name string `json:"name" api:"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" default:"function"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionFunctionMessageParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionFunctionMessageParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionFunctionMessageParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// A function tool that can be used to generate a response.
|
|
//
|
|
// The properties Function, Type are required.
|
|
type ChatCompletionFunctionToolParam struct {
|
|
Function shared.FunctionDefinitionParam `json:"function,omitzero" api:"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" default:"function"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionFunctionToolParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionFunctionToolParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionFunctionToolParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// A chat completion message generated by the model.
|
|
type ChatCompletionMessage struct {
|
|
// The contents of the message.
|
|
Content string `json:"content" api:"required"`
|
|
// The refusal message generated by the model.
|
|
Refusal string `json:"refusal" api:"required"`
|
|
// The role of the author of this message.
|
|
Role constant.Assistant `json:"role" default:"assistant"`
|
|
// 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" api:"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 []ChatCompletionMessageToolCallUnion `json:"tool_calls"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Content respjson.Field
|
|
Refusal respjson.Field
|
|
Role respjson.Field
|
|
Annotations respjson.Field
|
|
Audio respjson.Field
|
|
FunctionCall respjson.Field
|
|
ToolCalls respjson.Field
|
|
ExtraFields map[string]respjson.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 {
|
|
for _, v := range r.ToolCalls {
|
|
u := ChatCompletionMessageToolCallUnionParam{}
|
|
switch v.AsAny().(type) {
|
|
case ChatCompletionMessageFunctionToolCall:
|
|
u.OfFunction = &ChatCompletionMessageFunctionToolCallParam{
|
|
ID: v.ID,
|
|
Function: ChatCompletionMessageFunctionToolCallFunctionParam{
|
|
Arguments: v.Function.Arguments,
|
|
Name: v.Function.Name,
|
|
},
|
|
}
|
|
case ChatCompletionMessageCustomToolCall:
|
|
u.OfCustom = &ChatCompletionMessageCustomToolCallParam{
|
|
ID: v.ID,
|
|
Custom: ChatCompletionMessageCustomToolCallCustomParam{
|
|
Input: v.Custom.Input,
|
|
Name: v.Custom.Name,
|
|
},
|
|
}
|
|
}
|
|
|
|
p.ToolCalls = append(p.ToolCalls, u)
|
|
}
|
|
}
|
|
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" default:"url_citation"`
|
|
// A URL citation when using web search.
|
|
URLCitation ChatCompletionMessageAnnotationURLCitation `json:"url_citation" api:"required"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Type respjson.Field
|
|
URLCitation respjson.Field
|
|
ExtraFields map[string]respjson.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" api:"required"`
|
|
// The index of the first character of the URL citation in the message.
|
|
StartIndex int64 `json:"start_index" api:"required"`
|
|
// The title of the web resource.
|
|
Title string `json:"title" api:"required"`
|
|
// The URL of the web resource.
|
|
URL string `json:"url" api:"required"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
EndIndex respjson.Field
|
|
StartIndex respjson.Field
|
|
Title respjson.Field
|
|
URL respjson.Field
|
|
ExtraFields map[string]respjson.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" api:"required"`
|
|
// The name of the function to call.
|
|
Name string `json:"name" api:"required"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Arguments respjson.Field
|
|
Name respjson.Field
|
|
ExtraFields map[string]respjson.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)
|
|
}
|
|
|
|
// A call to a custom tool created by the model.
|
|
type ChatCompletionMessageCustomToolCall struct {
|
|
// The ID of the tool call.
|
|
ID string `json:"id" api:"required"`
|
|
// The custom tool that the model called.
|
|
Custom ChatCompletionMessageCustomToolCallCustom `json:"custom" api:"required"`
|
|
// The type of the tool. Always `custom`.
|
|
Type constant.Custom `json:"type" default:"custom"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
ID respjson.Field
|
|
Custom respjson.Field
|
|
Type respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r ChatCompletionMessageCustomToolCall) RawJSON() string { return r.JSON.raw }
|
|
func (r *ChatCompletionMessageCustomToolCall) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// ToParam converts this ChatCompletionMessageCustomToolCall to a
|
|
// ChatCompletionMessageCustomToolCallParam.
|
|
//
|
|
// 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
|
|
// ChatCompletionMessageCustomToolCallParam.Overrides()
|
|
func (r ChatCompletionMessageCustomToolCall) ToParam() ChatCompletionMessageCustomToolCallParam {
|
|
return param.Override[ChatCompletionMessageCustomToolCallParam](json.RawMessage(r.RawJSON()))
|
|
}
|
|
|
|
// The custom tool that the model called.
|
|
type ChatCompletionMessageCustomToolCallCustom struct {
|
|
// The input for the custom tool call generated by the model.
|
|
Input string `json:"input" api:"required"`
|
|
// The name of the custom tool to call.
|
|
Name string `json:"name" api:"required"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Input respjson.Field
|
|
Name respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r ChatCompletionMessageCustomToolCallCustom) RawJSON() string { return r.JSON.raw }
|
|
func (r *ChatCompletionMessageCustomToolCallCustom) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// A call to a custom tool created by the model.
|
|
//
|
|
// The properties ID, Custom, Type are required.
|
|
type ChatCompletionMessageCustomToolCallParam struct {
|
|
// The ID of the tool call.
|
|
ID string `json:"id" api:"required"`
|
|
// The custom tool that the model called.
|
|
Custom ChatCompletionMessageCustomToolCallCustomParam `json:"custom,omitzero" api:"required"`
|
|
// The type of the tool. Always `custom`.
|
|
//
|
|
// This field can be elided, and will marshal its zero value as "custom".
|
|
Type constant.Custom `json:"type" default:"custom"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionMessageCustomToolCallParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionMessageCustomToolCallParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionMessageCustomToolCallParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// The custom tool that the model called.
|
|
//
|
|
// The properties Input, Name are required.
|
|
type ChatCompletionMessageCustomToolCallCustomParam struct {
|
|
// The input for the custom tool call generated by the model.
|
|
Input string `json:"input" api:"required"`
|
|
// The name of the custom tool to call.
|
|
Name string `json:"name" api:"required"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionMessageCustomToolCallCustomParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionMessageCustomToolCallCustomParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionMessageCustomToolCallCustomParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// A call to a function tool created by the model.
|
|
type ChatCompletionMessageFunctionToolCall struct {
|
|
// The ID of the tool call.
|
|
ID string `json:"id" api:"required"`
|
|
// The function that the model called.
|
|
Function ChatCompletionMessageFunctionToolCallFunction `json:"function" api:"required"`
|
|
// The type of the tool. Currently, only `function` is supported.
|
|
Type constant.Function `json:"type" default:"function"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
ID respjson.Field
|
|
Function respjson.Field
|
|
Type respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r ChatCompletionMessageFunctionToolCall) RawJSON() string { return r.JSON.raw }
|
|
func (r *ChatCompletionMessageFunctionToolCall) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// ToParam converts this ChatCompletionMessageFunctionToolCall to a
|
|
// ChatCompletionMessageFunctionToolCallParam.
|
|
//
|
|
// 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
|
|
// ChatCompletionMessageFunctionToolCallParam.Overrides()
|
|
func (r ChatCompletionMessageFunctionToolCall) ToParam() ChatCompletionMessageFunctionToolCallParam {
|
|
return param.Override[ChatCompletionMessageFunctionToolCallParam](json.RawMessage(r.RawJSON()))
|
|
}
|
|
|
|
// The function that the model called.
|
|
type ChatCompletionMessageFunctionToolCallFunction 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" api:"required"`
|
|
// The name of the function to call.
|
|
Name string `json:"name" api:"required"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Arguments respjson.Field
|
|
Name respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r ChatCompletionMessageFunctionToolCallFunction) RawJSON() string { return r.JSON.raw }
|
|
func (r *ChatCompletionMessageFunctionToolCallFunction) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// A call to a function tool created by the model.
|
|
//
|
|
// The properties ID, Function, Type are required.
|
|
type ChatCompletionMessageFunctionToolCallParam struct {
|
|
// The ID of the tool call.
|
|
ID string `json:"id" api:"required"`
|
|
// The function that the model called.
|
|
Function ChatCompletionMessageFunctionToolCallFunctionParam `json:"function,omitzero" api:"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" default:"function"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionMessageFunctionToolCallParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionMessageFunctionToolCallParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionMessageFunctionToolCallParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// The function that the model called.
|
|
//
|
|
// The properties Arguments, Name are required.
|
|
type ChatCompletionMessageFunctionToolCallFunctionParam 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" api:"required"`
|
|
// The name of the function to call.
|
|
Name string `json:"name" api:"required"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionMessageFunctionToolCallFunctionParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionMessageFunctionToolCallFunctionParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionMessageFunctionToolCallFunctionParam) 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 ChatCompletionMessageParamOfAssistant[
|
|
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 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
|
|
}
|
|
|
|
func (u ChatCompletionMessageParamUnion) MarshalJSON() ([]byte, error) {
|
|
return param.MarshalUnion(u, u.OfDeveloper,
|
|
u.OfSystem,
|
|
u.OfUser,
|
|
u.OfAssistant,
|
|
u.OfTool,
|
|
u.OfFunction)
|
|
}
|
|
func (u *ChatCompletionMessageParamUnion) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, u)
|
|
}
|
|
|
|
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.Valid() {
|
|
return &vt.Refusal.Value
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Returns a pointer to the underlying variant's property, if present.
|
|
func (u ChatCompletionMessageParamUnion) GetToolCalls() []ChatCompletionMessageToolCallUnionParam {
|
|
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.Valid() {
|
|
return &vt.Name.Value
|
|
} else if vt := u.OfSystem; vt != nil && vt.Name.Valid() {
|
|
return &vt.Name.Value
|
|
} else if vt := u.OfUser; vt != nil && vt.Name.Valid() {
|
|
return &vt.Name.Value
|
|
} else if vt := u.OfAssistant; vt != nil && vt.Name.Valid() {
|
|
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.any = vt.Content.asAny()
|
|
} else if vt := u.OfSystem; vt != nil {
|
|
res.any = vt.Content.asAny()
|
|
} else if vt := u.OfUser; vt != nil {
|
|
res.any = vt.Content.asAny()
|
|
} else if vt := u.OfAssistant; vt != nil {
|
|
res.any = vt.Content.asAny()
|
|
} else if vt := u.OfTool; vt != nil {
|
|
res.any = vt.Content.asAny()
|
|
} else if vt := u.OfFunction; vt != nil && vt.Content.Valid() {
|
|
res.any = &vt.Content.Value
|
|
}
|
|
return
|
|
}
|
|
|
|
// Can have the runtime types [*string], [_[]ChatCompletionContentPartTextParam],
|
|
// [_[]ChatCompletionContentPartUnionParam],
|
|
// [\*[]ChatCompletionAssistantMessageParamContentArrayOfContentPartUnion]
|
|
type chatCompletionMessageParamUnionContent struct{ any }
|
|
|
|
// 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 { return u.any }
|
|
|
|
func init() {
|
|
apijson.RegisterUnion[ChatCompletionMessageParamUnion](
|
|
"role",
|
|
apijson.Discriminator[ChatCompletionDeveloperMessageParam]("developer"),
|
|
apijson.Discriminator[ChatCompletionSystemMessageParam]("system"),
|
|
apijson.Discriminator[ChatCompletionUserMessageParam]("user"),
|
|
apijson.Discriminator[ChatCompletionAssistantMessageParam]("assistant"),
|
|
apijson.Discriminator[ChatCompletionToolMessageParam]("tool"),
|
|
apijson.Discriminator[ChatCompletionFunctionMessageParam]("function"),
|
|
)
|
|
}
|
|
|
|
// ChatCompletionMessageToolCallUnion contains all possible properties and values
|
|
// from [ChatCompletionMessageFunctionToolCall],
|
|
// [ChatCompletionMessageCustomToolCall].
|
|
//
|
|
// Use the [ChatCompletionMessageToolCallUnion.AsAny] method to switch on the
|
|
// variant.
|
|
//
|
|
// Use the methods beginning with 'As' to cast the union to one of its variants.
|
|
type ChatCompletionMessageToolCallUnion struct {
|
|
ID string `json:"id"`
|
|
// This field is from variant [ChatCompletionMessageFunctionToolCall].
|
|
Function ChatCompletionMessageFunctionToolCallFunction `json:"function"`
|
|
// Any of "function", "custom".
|
|
Type string `json:"type"`
|
|
// This field is from variant [ChatCompletionMessageCustomToolCall].
|
|
Custom ChatCompletionMessageCustomToolCallCustom `json:"custom"`
|
|
JSON struct {
|
|
ID respjson.Field
|
|
Function respjson.Field
|
|
Type respjson.Field
|
|
Custom respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// anyChatCompletionMessageToolCall is implemented by each variant of
|
|
// [ChatCompletionMessageToolCallUnion] to add type safety for the return type of
|
|
// [ChatCompletionMessageToolCallUnion.AsAny]
|
|
type anyChatCompletionMessageToolCall interface {
|
|
implChatCompletionMessageToolCallUnion()
|
|
}
|
|
|
|
func (ChatCompletionMessageFunctionToolCall) implChatCompletionMessageToolCallUnion() {}
|
|
func (ChatCompletionMessageCustomToolCall) implChatCompletionMessageToolCallUnion() {}
|
|
|
|
// Use the following switch statement to find the correct variant
|
|
//
|
|
// switch variant := ChatCompletionMessageToolCallUnion.AsAny().(type) {
|
|
// case openai.ChatCompletionMessageFunctionToolCall:
|
|
// case openai.ChatCompletionMessageCustomToolCall:
|
|
// default:
|
|
// fmt.Errorf("no variant present")
|
|
// }
|
|
func (u ChatCompletionMessageToolCallUnion) AsAny() anyChatCompletionMessageToolCall {
|
|
switch u.Type {
|
|
case "function":
|
|
return u.AsFunction()
|
|
case "custom":
|
|
return u.AsCustom()
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (u ChatCompletionMessageToolCallUnion) AsFunction() (v ChatCompletionMessageFunctionToolCall) {
|
|
apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
|
|
return
|
|
}
|
|
|
|
func (u ChatCompletionMessageToolCallUnion) AsCustom() (v ChatCompletionMessageCustomToolCall) {
|
|
apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
|
|
return
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (u ChatCompletionMessageToolCallUnion) RawJSON() string { return u.JSON.raw }
|
|
|
|
func (r *ChatCompletionMessageToolCallUnion) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// ToParam converts this ChatCompletionMessageToolCallUnion to a
|
|
// ChatCompletionMessageToolCallUnionParam.
|
|
//
|
|
// 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
|
|
// ChatCompletionMessageToolCallUnionParam.Overrides()
|
|
func (r ChatCompletionMessageToolCallUnion) ToParam() ChatCompletionMessageToolCallUnionParam {
|
|
return param.Override[ChatCompletionMessageToolCallUnionParam](json.RawMessage(r.RawJSON()))
|
|
}
|
|
|
|
// Only one field can be non-zero.
|
|
//
|
|
// Use [param.IsOmitted] to confirm if a field is set.
|
|
type ChatCompletionMessageToolCallUnionParam struct {
|
|
OfFunction *ChatCompletionMessageFunctionToolCallParam `json:",omitzero,inline"`
|
|
OfCustom *ChatCompletionMessageCustomToolCallParam `json:",omitzero,inline"`
|
|
paramUnion
|
|
}
|
|
|
|
func (u ChatCompletionMessageToolCallUnionParam) MarshalJSON() ([]byte, error) {
|
|
return param.MarshalUnion(u, u.OfFunction, u.OfCustom)
|
|
}
|
|
func (u *ChatCompletionMessageToolCallUnionParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, u)
|
|
}
|
|
|
|
func (u *ChatCompletionMessageToolCallUnionParam) asAny() any {
|
|
if !param.IsOmitted(u.OfFunction) {
|
|
return u.OfFunction
|
|
} else if !param.IsOmitted(u.OfCustom) {
|
|
return u.OfCustom
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Returns a pointer to the underlying variant's property, if present.
|
|
func (u ChatCompletionMessageToolCallUnionParam) GetFunction() *ChatCompletionMessageFunctionToolCallFunctionParam {
|
|
if vt := u.OfFunction; vt != nil {
|
|
return &vt.Function
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Returns a pointer to the underlying variant's property, if present.
|
|
func (u ChatCompletionMessageToolCallUnionParam) GetCustom() *ChatCompletionMessageCustomToolCallCustomParam {
|
|
if vt := u.OfCustom; vt != nil {
|
|
return &vt.Custom
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Returns a pointer to the underlying variant's property, if present.
|
|
func (u ChatCompletionMessageToolCallUnionParam) GetID() *string {
|
|
if vt := u.OfFunction; vt != nil {
|
|
return (*string)(&vt.ID)
|
|
} else if vt := u.OfCustom; vt != nil {
|
|
return (*string)(&vt.ID)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Returns a pointer to the underlying variant's property, if present.
|
|
func (u ChatCompletionMessageToolCallUnionParam) GetType() *string {
|
|
if vt := u.OfFunction; vt != nil {
|
|
return (*string)(&vt.Type)
|
|
} else if vt := u.OfCustom; vt != nil {
|
|
return (*string)(&vt.Type)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func init() {
|
|
apijson.RegisterUnion[ChatCompletionMessageToolCallUnionParam](
|
|
"type",
|
|
apijson.Discriminator[ChatCompletionMessageFunctionToolCallParam]("function"),
|
|
apijson.Discriminator[ChatCompletionMessageCustomToolCallParam]("custom"),
|
|
)
|
|
}
|
|
|
|
// 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" api:"required"`
|
|
// For function calling, the type is always `function`.
|
|
//
|
|
// This field can be elided, and will marshal its zero value as "function".
|
|
Type constant.Function `json:"type" default:"function"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionNamedToolChoiceParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionNamedToolChoiceParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionNamedToolChoiceParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// The property Name is required.
|
|
type ChatCompletionNamedToolChoiceFunctionParam struct {
|
|
// The name of the function to call.
|
|
Name string `json:"name" api:"required"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionNamedToolChoiceFunctionParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionNamedToolChoiceFunctionParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionNamedToolChoiceFunctionParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// Specifies a tool the model should use. Use to force the model to call a specific
|
|
// custom tool.
|
|
//
|
|
// The properties Custom, Type are required.
|
|
type ChatCompletionNamedToolChoiceCustomParam struct {
|
|
Custom ChatCompletionNamedToolChoiceCustomCustomParam `json:"custom,omitzero" api:"required"`
|
|
// For custom tool calling, the type is always `custom`.
|
|
//
|
|
// This field can be elided, and will marshal its zero value as "custom".
|
|
Type constant.Custom `json:"type" default:"custom"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionNamedToolChoiceCustomParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionNamedToolChoiceCustomParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionNamedToolChoiceCustomParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// The property Name is required.
|
|
type ChatCompletionNamedToolChoiceCustomCustomParam struct {
|
|
// The name of the custom tool to call.
|
|
Name string `json:"name" api:"required"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionNamedToolChoiceCustomCustomParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionNamedToolChoiceCustomCustomParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionNamedToolChoiceCustomCustomParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, 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" api:"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" default:"content"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionPredictionContentParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionPredictionContentParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionPredictionContentParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, 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
|
|
}
|
|
|
|
func (u ChatCompletionPredictionContentContentUnionParam) MarshalJSON() ([]byte, error) {
|
|
return param.MarshalUnion(u, u.OfString, u.OfArrayOfContentParts)
|
|
}
|
|
func (u *ChatCompletionPredictionContentContentUnionParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, u)
|
|
}
|
|
|
|
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" api:"required"`
|
|
// If a content parts array was provided, this is an array of `text` and
|
|
// `image_url` parts. Otherwise, null.
|
|
ContentParts []ChatCompletionStoreMessageContentPartUnion `json:"content_parts" api:"nullable"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
ID respjson.Field
|
|
ContentParts respjson.Field
|
|
ExtraFields map[string]respjson.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)
|
|
}
|
|
|
|
// ChatCompletionStoreMessageContentPartUnion contains all possible properties and
|
|
// values from [ChatCompletionContentPartText], [ChatCompletionContentPartImage].
|
|
//
|
|
// Use the methods beginning with 'As' to cast the union to one of its variants.
|
|
type ChatCompletionStoreMessageContentPartUnion struct {
|
|
// This field is from variant [ChatCompletionContentPartText].
|
|
Text string `json:"text"`
|
|
Type string `json:"type"`
|
|
// This field is from variant [ChatCompletionContentPartImage].
|
|
ImageURL ChatCompletionContentPartImageImageURL `json:"image_url"`
|
|
JSON struct {
|
|
Text respjson.Field
|
|
Type respjson.Field
|
|
ImageURL respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
func (u ChatCompletionStoreMessageContentPartUnion) AsTextContentPart() (v ChatCompletionContentPartText) {
|
|
apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
|
|
return
|
|
}
|
|
|
|
func (u ChatCompletionStoreMessageContentPartUnion) AsImageContentPart() (v ChatCompletionContentPartImage) {
|
|
apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
|
|
return
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (u ChatCompletionStoreMessageContentPartUnion) RawJSON() string { return u.JSON.raw }
|
|
|
|
func (r *ChatCompletionStoreMessageContentPartUnion) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// Options for streaming response. Only set this when you set `stream: true`.
|
|
type ChatCompletionStreamOptionsParam struct {
|
|
// When true, stream obfuscation will be enabled. Stream obfuscation adds random
|
|
// characters to an `obfuscation` field on streaming delta events to normalize
|
|
// payload sizes as a mitigation to certain side-channel attacks. These obfuscation
|
|
// fields are included by default, but add a small amount of overhead to the data
|
|
// stream. You can set `include_obfuscation` to false to optimize for bandwidth if
|
|
// you trust the network links between your application and the OpenAI API.
|
|
IncludeObfuscation param.Opt[bool] `json:"include_obfuscation,omitzero"`
|
|
// 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
|
|
}
|
|
|
|
func (r ChatCompletionStreamOptionsParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionStreamOptionsParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionStreamOptionsParam) 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, 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" api:"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" default:"system"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionSystemMessageParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionSystemMessageParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionSystemMessageParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, 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
|
|
}
|
|
|
|
func (u ChatCompletionSystemMessageParamContentUnion) MarshalJSON() ([]byte, error) {
|
|
return param.MarshalUnion(u, u.OfString, u.OfArrayOfContentParts)
|
|
}
|
|
func (u *ChatCompletionSystemMessageParamContentUnion) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, u)
|
|
}
|
|
|
|
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" api:"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" api:"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" api:"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" api:"required"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Token respjson.Field
|
|
Bytes respjson.Field
|
|
Logprob respjson.Field
|
|
TopLogprobs respjson.Field
|
|
ExtraFields map[string]respjson.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" api:"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" api:"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" api:"required"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Token respjson.Field
|
|
Bytes respjson.Field
|
|
Logprob respjson.Field
|
|
ExtraFields map[string]respjson.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)
|
|
}
|
|
|
|
func ChatCompletionFunctionTool(function shared.FunctionDefinitionParam) ChatCompletionToolUnionParam {
|
|
var variant ChatCompletionFunctionToolParam
|
|
variant.Function = function
|
|
return ChatCompletionToolUnionParam{OfFunction: &variant}
|
|
}
|
|
|
|
func ChatCompletionCustomTool(custom ChatCompletionCustomToolCustomParam) ChatCompletionToolUnionParam {
|
|
var variant ChatCompletionCustomToolParam
|
|
variant.Custom = custom
|
|
return ChatCompletionToolUnionParam{OfCustom: &variant}
|
|
}
|
|
|
|
// Only one field can be non-zero.
|
|
//
|
|
// Use [param.IsOmitted] to confirm if a field is set.
|
|
type ChatCompletionToolUnionParam struct {
|
|
OfFunction *ChatCompletionFunctionToolParam `json:",omitzero,inline"`
|
|
OfCustom *ChatCompletionCustomToolParam `json:",omitzero,inline"`
|
|
paramUnion
|
|
}
|
|
|
|
func (u ChatCompletionToolUnionParam) MarshalJSON() ([]byte, error) {
|
|
return param.MarshalUnion(u, u.OfFunction, u.OfCustom)
|
|
}
|
|
func (u *ChatCompletionToolUnionParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, u)
|
|
}
|
|
|
|
func (u *ChatCompletionToolUnionParam) asAny() any {
|
|
if !param.IsOmitted(u.OfFunction) {
|
|
return u.OfFunction
|
|
} else if !param.IsOmitted(u.OfCustom) {
|
|
return u.OfCustom
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Returns a pointer to the underlying variant's property, if present.
|
|
func (u ChatCompletionToolUnionParam) GetFunction() *shared.FunctionDefinitionParam {
|
|
if vt := u.OfFunction; vt != nil {
|
|
return &vt.Function
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Returns a pointer to the underlying variant's property, if present.
|
|
func (u ChatCompletionToolUnionParam) GetCustom() *ChatCompletionCustomToolCustomParam {
|
|
if vt := u.OfCustom; vt != nil {
|
|
return &vt.Custom
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Returns a pointer to the underlying variant's property, if present.
|
|
func (u ChatCompletionToolUnionParam) GetType() *string {
|
|
if vt := u.OfFunction; vt != nil {
|
|
return (*string)(&vt.Type)
|
|
} else if vt := u.OfCustom; vt != nil {
|
|
return (*string)(&vt.Type)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func init() {
|
|
apijson.RegisterUnion[ChatCompletionToolUnionParam](
|
|
"type",
|
|
apijson.Discriminator[ChatCompletionFunctionToolParam]("function"),
|
|
apijson.Discriminator[ChatCompletionCustomToolParam]("custom"),
|
|
)
|
|
}
|
|
|
|
func ToolChoiceOptionAllowedTools(allowedTools ChatCompletionAllowedToolsParam) ChatCompletionToolChoiceOptionUnionParam {
|
|
var variant ChatCompletionAllowedToolChoiceParam
|
|
variant.AllowedTools = allowedTools
|
|
return ChatCompletionToolChoiceOptionUnionParam{OfAllowedTools: &variant}
|
|
}
|
|
|
|
func ToolChoiceOptionFunctionToolChoice(function ChatCompletionNamedToolChoiceFunctionParam) ChatCompletionToolChoiceOptionUnionParam {
|
|
var variant ChatCompletionNamedToolChoiceParam
|
|
variant.Function = function
|
|
return ChatCompletionToolChoiceOptionUnionParam{OfFunctionToolChoice: &variant}
|
|
}
|
|
|
|
func ToolChoiceOptionCustomToolChoice(custom ChatCompletionNamedToolChoiceCustomCustomParam) ChatCompletionToolChoiceOptionUnionParam {
|
|
var variant ChatCompletionNamedToolChoiceCustomParam
|
|
variant.Custom = custom
|
|
return ChatCompletionToolChoiceOptionUnionParam{OfCustomToolChoice: &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"`
|
|
OfAllowedTools *ChatCompletionAllowedToolChoiceParam `json:",omitzero,inline"`
|
|
OfFunctionToolChoice *ChatCompletionNamedToolChoiceParam `json:",omitzero,inline"`
|
|
OfCustomToolChoice *ChatCompletionNamedToolChoiceCustomParam `json:",omitzero,inline"`
|
|
paramUnion
|
|
}
|
|
|
|
func (u ChatCompletionToolChoiceOptionUnionParam) MarshalJSON() ([]byte, error) {
|
|
return param.MarshalUnion(u, u.OfAuto, u.OfAllowedTools, u.OfFunctionToolChoice, u.OfCustomToolChoice)
|
|
}
|
|
func (u *ChatCompletionToolChoiceOptionUnionParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, u)
|
|
}
|
|
|
|
func (u *ChatCompletionToolChoiceOptionUnionParam) asAny() any {
|
|
if !param.IsOmitted(u.OfAuto) {
|
|
return &u.OfAuto
|
|
} else if !param.IsOmitted(u.OfAllowedTools) {
|
|
return u.OfAllowedTools
|
|
} else if !param.IsOmitted(u.OfFunctionToolChoice) {
|
|
return u.OfFunctionToolChoice
|
|
} else if !param.IsOmitted(u.OfCustomToolChoice) {
|
|
return u.OfCustomToolChoice
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Returns a pointer to the underlying variant's property, if present.
|
|
func (u ChatCompletionToolChoiceOptionUnionParam) GetAllowedTools() *ChatCompletionAllowedToolsParam {
|
|
if vt := u.OfAllowedTools; vt != nil {
|
|
return &vt.AllowedTools
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Returns a pointer to the underlying variant's property, if present.
|
|
func (u ChatCompletionToolChoiceOptionUnionParam) GetFunction() *ChatCompletionNamedToolChoiceFunctionParam {
|
|
if vt := u.OfFunctionToolChoice; vt != nil {
|
|
return &vt.Function
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Returns a pointer to the underlying variant's property, if present.
|
|
func (u ChatCompletionToolChoiceOptionUnionParam) GetCustom() *ChatCompletionNamedToolChoiceCustomCustomParam {
|
|
if vt := u.OfCustomToolChoice; vt != nil {
|
|
return &vt.Custom
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Returns a pointer to the underlying variant's property, if present.
|
|
func (u ChatCompletionToolChoiceOptionUnionParam) GetType() *string {
|
|
if vt := u.OfAllowedTools; vt != nil {
|
|
return (*string)(&vt.Type)
|
|
} else if vt := u.OfFunctionToolChoice; vt != nil {
|
|
return (*string)(&vt.Type)
|
|
} else if vt := u.OfCustomToolChoice; 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" api:"required"`
|
|
// Tool call that this message is responding to.
|
|
ToolCallID string `json:"tool_call_id" api:"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" default:"tool"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionToolMessageParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionToolMessageParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionToolMessageParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, 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
|
|
}
|
|
|
|
func (u ChatCompletionToolMessageParamContentUnion) MarshalJSON() ([]byte, error) {
|
|
return param.MarshalUnion(u, u.OfString, u.OfArrayOfContentParts)
|
|
}
|
|
func (u *ChatCompletionToolMessageParamContentUnion) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, u)
|
|
}
|
|
|
|
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" api:"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" default:"user"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionUserMessageParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionUserMessageParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionUserMessageParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, 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
|
|
}
|
|
|
|
func (u ChatCompletionUserMessageParamContentUnion) MarshalJSON() ([]byte, error) {
|
|
return param.MarshalUnion(u, u.OfString, u.OfArrayOfContentParts)
|
|
}
|
|
func (u *ChatCompletionUserMessageParamContentUnion) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, u)
|
|
}
|
|
|
|
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
|
|
}
|
|
|
|
// Constrains the tools available to the model to a pre-defined set.
|
|
//
|
|
// The properties Mode, Tools are required.
|
|
type ChatCompletionAllowedToolsParam struct {
|
|
// Constrains the tools available to the model to a pre-defined set.
|
|
//
|
|
// `auto` allows the model to pick from among the allowed tools and generate a
|
|
// message.
|
|
//
|
|
// `required` requires the model to call one or more of the allowed tools.
|
|
//
|
|
// Any of "auto", "required".
|
|
Mode ChatCompletionAllowedToolsMode `json:"mode,omitzero" api:"required"`
|
|
// A list of tool definitions that the model should be allowed to call.
|
|
//
|
|
// For the Chat Completions API, the list of tool definitions might look like:
|
|
//
|
|
// ```json
|
|
// [
|
|
//
|
|
// { "type": "function", "function": { "name": "get_weather" } },
|
|
// { "type": "function", "function": { "name": "get_time" } }
|
|
//
|
|
// ]
|
|
// ```
|
|
Tools []map[string]any `json:"tools,omitzero" api:"required"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionAllowedToolsParam) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionAllowedToolsParam
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionAllowedToolsParam) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// Constrains the tools available to the model to a pre-defined set.
|
|
//
|
|
// `auto` allows the model to pick from among the allowed tools and generate a
|
|
// message.
|
|
//
|
|
// `required` requires the model to call one or more of the allowed tools.
|
|
type ChatCompletionAllowedToolsMode string
|
|
|
|
const (
|
|
ChatCompletionAllowedToolsModeAuto ChatCompletionAllowedToolsMode = "auto"
|
|
ChatCompletionAllowedToolsModeRequired ChatCompletionAllowedToolsMode = "required"
|
|
)
|
|
|
|
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" api:"required"`
|
|
// Model ID used to generate the response, like `gpt-4o` or `o3`. 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" api:"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
|
|
// [o-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.
|
|
//
|
|
// Supports text and image inputs. Note: image inputs over 8MB will be dropped.
|
|
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"`
|
|
// Used by OpenAI to cache responses for similar requests to optimize your cache
|
|
// hit rates. Replaces the `user` field.
|
|
// [Learn more](https://platform.openai.com/docs/guides/prompt-caching).
|
|
PromptCacheKey param.Opt[string] `json:"prompt_cache_key,omitzero"`
|
|
// A stable identifier used to help detect users of your application that may be
|
|
// violating OpenAI's usage policies. The IDs should be a string that uniquely
|
|
// identifies each user, with a maximum length of 64 characters. We recommend
|
|
// hashing their username or email address, in order to avoid sending us any
|
|
// identifying information.
|
|
// [Learn more](https://platform.openai.com/docs/guides/safety-best-practices#safety-identifiers).
|
|
SafetyIdentifier param.Opt[string] `json:"safety_identifier,omitzero"`
|
|
// This field is being replaced by `safety_identifier` and `prompt_cache_key`. Use
|
|
// `prompt_cache_key` instead to maintain caching optimizations. A stable
|
|
// identifier for your end-users. Used to boost cache hit rates by better bucketing
|
|
// similar requests and to help OpenAI detect and prevent abuse.
|
|
// [Learn more](https://platform.openai.com/docs/guides/safety-best-practices#safety-identifiers).
|
|
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.Metadata `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"`
|
|
// The retention policy for the prompt cache. Set to `24h` to enable extended
|
|
// prompt caching, which keeps cached prefixes active for longer, up to a maximum
|
|
// of 24 hours.
|
|
// [Learn more](https://platform.openai.com/docs/guides/prompt-caching#prompt-cache-retention).
|
|
//
|
|
// Any of "in-memory", "24h".
|
|
PromptCacheRetention ChatCompletionNewParamsPromptCacheRetention `json:"prompt_cache_retention,omitzero"`
|
|
// Constrains effort on reasoning for
|
|
// [reasoning models](https://platform.openai.com/docs/guides/reasoning). Currently
|
|
// supported values are `none`, `minimal`, `low`, `medium`, `high`, and `xhigh`.
|
|
// Reducing reasoning effort can result in faster responses and fewer tokens used
|
|
// on reasoning in a response.
|
|
//
|
|
// - `gpt-5.1` defaults to `none`, which does not perform reasoning. The supported
|
|
// reasoning values for `gpt-5.1` are `none`, `low`, `medium`, and `high`. Tool
|
|
// calls are supported for all reasoning values in gpt-5.1.
|
|
// - All models before `gpt-5.1` default to `medium` reasoning effort, and do not
|
|
// support `none`.
|
|
// - The `gpt-5-pro` model defaults to (and only supports) `high` reasoning effort.
|
|
// - `xhigh` is supported for all models after `gpt-5.1-codex-max`.
|
|
//
|
|
// Any of "none", "minimal", "low", "medium", "high", "xhigh".
|
|
ReasoningEffort shared.ReasoningEffort `json:"reasoning_effort,omitzero"`
|
|
// Specifies the processing type used for serving the request.
|
|
//
|
|
// - If set to 'auto', then the request will be processed with the service tier
|
|
// configured in the Project settings. Unless otherwise configured, the Project
|
|
// will use 'default'.
|
|
// - If set to 'default', then the request will be processed with the standard
|
|
// pricing and performance for the selected model.
|
|
// - If set to '[flex](https://platform.openai.com/docs/guides/flex-processing)' or
|
|
// '[priority](https://openai.com/api-priority-processing/)', then the request
|
|
// will be processed with the corresponding service tier.
|
|
// - When not set, the default behavior is 'auto'.
|
|
//
|
|
// When the `service_tier` parameter is set, the response body will include the
|
|
// `service_tier` value based on the processing mode actually used to serve the
|
|
// request. This response value may be different from the value set in the
|
|
// parameter.
|
|
//
|
|
// Any of "auto", "default", "flex", "scale", "priority".
|
|
ServiceTier ChatCompletionNewParamsServiceTier `json:"service_tier,omitzero"`
|
|
// Not supported with latest reasoning models `o3` and `o4-mini`.
|
|
//
|
|
// 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"`
|
|
// Constrains the verbosity of the model's response. Lower values will result in
|
|
// more concise responses, while higher values will result in more verbose
|
|
// responses. Currently supported values are `low`, `medium`, and `high`.
|
|
//
|
|
// Any of "low", "medium", "high".
|
|
Verbosity ChatCompletionNewParamsVerbosity `json:"verbosity,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. You can provide either
|
|
// [custom tools](https://platform.openai.com/docs/guides/function-calling#custom-tools)
|
|
// or [function tools](https://platform.openai.com/docs/guides/function-calling).
|
|
Tools []ChatCompletionToolUnionParam `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
|
|
}
|
|
|
|
func (r ChatCompletionNewParams) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionNewParams
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionNewParams) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, 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
|
|
}
|
|
|
|
func (u ChatCompletionNewParamsFunctionCallUnion) MarshalJSON() ([]byte, error) {
|
|
return param.MarshalUnion(u, u.OfFunctionCallMode, u.OfFunctionCallOption)
|
|
}
|
|
func (u *ChatCompletionNewParamsFunctionCallUnion) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, u)
|
|
}
|
|
|
|
func (u *ChatCompletionNewParamsFunctionCallUnion) asAny() any {
|
|
if !param.IsOmitted(u.OfFunctionCallMode) {
|
|
return &u.OfFunctionCallMode
|
|
} else if !param.IsOmitted(u.OfFunctionCallOption) {
|
|
return u.OfFunctionCallOption
|
|
}
|
|
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" api:"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
|
|
}
|
|
|
|
func (r ChatCompletionNewParamsFunction) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionNewParamsFunction
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionNewParamsFunction) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// The retention policy for the prompt cache. Set to `24h` to enable extended
|
|
// prompt caching, which keeps cached prefixes active for longer, up to a maximum
|
|
// of 24 hours.
|
|
// [Learn more](https://platform.openai.com/docs/guides/prompt-caching#prompt-cache-retention).
|
|
type ChatCompletionNewParamsPromptCacheRetention string
|
|
|
|
const (
|
|
ChatCompletionNewParamsPromptCacheRetentionInMemory ChatCompletionNewParamsPromptCacheRetention = "in-memory"
|
|
ChatCompletionNewParamsPromptCacheRetention24h ChatCompletionNewParamsPromptCacheRetention = "24h"
|
|
)
|
|
|
|
// 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
|
|
}
|
|
|
|
func (u ChatCompletionNewParamsResponseFormatUnion) MarshalJSON() ([]byte, error) {
|
|
return param.MarshalUnion(u, u.OfText, u.OfJSONSchema, u.OfJSONObject)
|
|
}
|
|
func (u *ChatCompletionNewParamsResponseFormatUnion) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, u)
|
|
}
|
|
|
|
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
|
|
}
|
|
|
|
func init() {
|
|
apijson.RegisterUnion[ChatCompletionNewParamsResponseFormatUnion](
|
|
"type",
|
|
apijson.Discriminator[shared.ResponseFormatTextParam]("text"),
|
|
apijson.Discriminator[shared.ResponseFormatJSONSchemaParam]("json_schema"),
|
|
apijson.Discriminator[shared.ResponseFormatJSONObjectParam]("json_object"),
|
|
)
|
|
}
|
|
|
|
// Specifies the processing type used for serving the request.
|
|
//
|
|
// - If set to 'auto', then the request will be processed with the service tier
|
|
// configured in the Project settings. Unless otherwise configured, the Project
|
|
// will use 'default'.
|
|
// - If set to 'default', then the request will be processed with the standard
|
|
// pricing and performance for the selected model.
|
|
// - If set to '[flex](https://platform.openai.com/docs/guides/flex-processing)' or
|
|
// '[priority](https://openai.com/api-priority-processing/)', then the request
|
|
// will be processed with the corresponding service tier.
|
|
// - When not set, the default behavior is 'auto'.
|
|
//
|
|
// When the `service_tier` parameter is set, the response body will include the
|
|
// `service_tier` value based on the processing mode actually used to serve the
|
|
// request. This response value may be different from the value set in the
|
|
// parameter.
|
|
type ChatCompletionNewParamsServiceTier string
|
|
|
|
const (
|
|
ChatCompletionNewParamsServiceTierAuto ChatCompletionNewParamsServiceTier = "auto"
|
|
ChatCompletionNewParamsServiceTierDefault ChatCompletionNewParamsServiceTier = "default"
|
|
ChatCompletionNewParamsServiceTierFlex ChatCompletionNewParamsServiceTier = "flex"
|
|
ChatCompletionNewParamsServiceTierScale ChatCompletionNewParamsServiceTier = "scale"
|
|
ChatCompletionNewParamsServiceTierPriority ChatCompletionNewParamsServiceTier = "priority"
|
|
)
|
|
|
|
// 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"`
|
|
OfStringArray []string `json:",omitzero,inline"`
|
|
paramUnion
|
|
}
|
|
|
|
func (u ChatCompletionNewParamsStopUnion) MarshalJSON() ([]byte, error) {
|
|
return param.MarshalUnion(u, u.OfString, u.OfStringArray)
|
|
}
|
|
func (u *ChatCompletionNewParamsStopUnion) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, u)
|
|
}
|
|
|
|
func (u *ChatCompletionNewParamsStopUnion) asAny() any {
|
|
if !param.IsOmitted(u.OfString) {
|
|
return &u.OfString.Value
|
|
} else if !param.IsOmitted(u.OfStringArray) {
|
|
return &u.OfStringArray
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Constrains the verbosity of the model's response. Lower values will result in
|
|
// more concise responses, while higher values will result in more verbose
|
|
// responses. Currently supported values are `low`, `medium`, and `high`.
|
|
type ChatCompletionNewParamsVerbosity string
|
|
|
|
const (
|
|
ChatCompletionNewParamsVerbosityLow ChatCompletionNewParamsVerbosity = "low"
|
|
ChatCompletionNewParamsVerbosityMedium ChatCompletionNewParamsVerbosity = "medium"
|
|
ChatCompletionNewParamsVerbosityHigh ChatCompletionNewParamsVerbosity = "high"
|
|
)
|
|
|
|
// 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
|
|
}
|
|
|
|
func (r ChatCompletionNewParamsWebSearchOptions) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionNewParamsWebSearchOptions
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionNewParamsWebSearchOptions) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
func init() {
|
|
apijson.RegisterFieldValidator[ChatCompletionNewParamsWebSearchOptions](
|
|
"search_context_size", "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" api:"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" default:"approximate"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionNewParamsWebSearchOptionsUserLocation) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionNewParamsWebSearchOptionsUserLocation
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionNewParamsWebSearchOptionsUserLocation) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, 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
|
|
}
|
|
|
|
func (r ChatCompletionNewParamsWebSearchOptionsUserLocationApproximate) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionNewParamsWebSearchOptionsUserLocationApproximate
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionNewParamsWebSearchOptionsUserLocationApproximate) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, 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.Metadata `json:"metadata,omitzero" api:"required"`
|
|
paramObj
|
|
}
|
|
|
|
func (r ChatCompletionUpdateParams) MarshalJSON() (data []byte, err error) {
|
|
type shadow ChatCompletionUpdateParams
|
|
return param.MarshalObject(r, (*shadow)(&r))
|
|
}
|
|
func (r *ChatCompletionUpdateParams) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, 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.Metadata `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
|
|
}
|
|
|
|
// 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"
|
|
)
|