mirror of
https://github.com/openai/openai-go.git
synced 2026-03-31 16:47:11 +09:00
1397 lines
51 KiB
Go
1397 lines
51 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/shared"
|
|
"github.com/openai/openai-go/v3/shared/constant"
|
|
)
|
|
|
|
// Build Assistants that can call models and use tools.
|
|
//
|
|
// BetaThreadRunStepService 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 [NewBetaThreadRunStepService] method instead.
|
|
//
|
|
// Deprecated: The Assistants API is deprecated in favor of the Responses API
|
|
type BetaThreadRunStepService struct {
|
|
Options []option.RequestOption
|
|
}
|
|
|
|
// NewBetaThreadRunStepService 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 NewBetaThreadRunStepService(opts ...option.RequestOption) (r BetaThreadRunStepService) {
|
|
r = BetaThreadRunStepService{}
|
|
r.Options = opts
|
|
return
|
|
}
|
|
|
|
// Retrieves a run step.
|
|
//
|
|
// Deprecated: The Assistants API is deprecated in favor of the Responses API
|
|
func (r *BetaThreadRunStepService) Get(ctx context.Context, threadID string, runID string, stepID string, query BetaThreadRunStepGetParams, opts ...option.RequestOption) (res *RunStep, err error) {
|
|
opts = slices.Concat(r.Options, opts)
|
|
opts = append([]option.RequestOption{option.WithHeader("OpenAI-Beta", "assistants=v2")}, opts...)
|
|
if threadID == "" {
|
|
err = errors.New("missing required thread_id parameter")
|
|
return nil, err
|
|
}
|
|
if runID == "" {
|
|
err = errors.New("missing required run_id parameter")
|
|
return nil, err
|
|
}
|
|
if stepID == "" {
|
|
err = errors.New("missing required step_id parameter")
|
|
return nil, err
|
|
}
|
|
path := fmt.Sprintf("threads/%s/runs/%s/steps/%s", threadID, runID, stepID)
|
|
err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, query, &res, opts...)
|
|
return res, err
|
|
}
|
|
|
|
// Returns a list of run steps belonging to a run.
|
|
//
|
|
// Deprecated: The Assistants API is deprecated in favor of the Responses API
|
|
func (r *BetaThreadRunStepService) List(ctx context.Context, threadID string, runID string, query BetaThreadRunStepListParams, opts ...option.RequestOption) (res *pagination.CursorPage[RunStep], err error) {
|
|
var raw *http.Response
|
|
opts = slices.Concat(r.Options, opts)
|
|
opts = append([]option.RequestOption{option.WithHeader("OpenAI-Beta", "assistants=v2"), option.WithResponseInto(&raw)}, opts...)
|
|
if threadID == "" {
|
|
err = errors.New("missing required thread_id parameter")
|
|
return nil, err
|
|
}
|
|
if runID == "" {
|
|
err = errors.New("missing required run_id parameter")
|
|
return nil, err
|
|
}
|
|
path := fmt.Sprintf("threads/%s/runs/%s/steps", threadID, runID)
|
|
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
|
|
}
|
|
|
|
// Returns a list of run steps belonging to a run.
|
|
//
|
|
// Deprecated: The Assistants API is deprecated in favor of the Responses API
|
|
func (r *BetaThreadRunStepService) ListAutoPaging(ctx context.Context, threadID string, runID string, query BetaThreadRunStepListParams, opts ...option.RequestOption) *pagination.CursorPageAutoPager[RunStep] {
|
|
return pagination.NewCursorPageAutoPager(r.List(ctx, threadID, runID, query, opts...))
|
|
}
|
|
|
|
// Text output from the Code Interpreter tool call as part of a run step.
|
|
type CodeInterpreterLogs struct {
|
|
// The index of the output in the outputs array.
|
|
Index int64 `json:"index" api:"required"`
|
|
// Always `logs`.
|
|
Type constant.Logs `json:"type" default:"logs"`
|
|
// The text output from the Code Interpreter tool call.
|
|
Logs string `json:"logs"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Index respjson.Field
|
|
Type respjson.Field
|
|
Logs respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r CodeInterpreterLogs) RawJSON() string { return r.JSON.raw }
|
|
func (r *CodeInterpreterLogs) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
type CodeInterpreterOutputImage struct {
|
|
// The index of the output in the outputs array.
|
|
Index int64 `json:"index" api:"required"`
|
|
// Always `image`.
|
|
Type constant.Image `json:"type" default:"image"`
|
|
Image CodeInterpreterOutputImageImage `json:"image"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Index respjson.Field
|
|
Type respjson.Field
|
|
Image respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r CodeInterpreterOutputImage) RawJSON() string { return r.JSON.raw }
|
|
func (r *CodeInterpreterOutputImage) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
type CodeInterpreterOutputImageImage struct {
|
|
// The [file](https://platform.openai.com/docs/api-reference/files) ID of the
|
|
// image.
|
|
FileID string `json:"file_id"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
FileID respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r CodeInterpreterOutputImageImage) RawJSON() string { return r.JSON.raw }
|
|
func (r *CodeInterpreterOutputImageImage) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// Details of the Code Interpreter tool call the run step was involved in.
|
|
type CodeInterpreterToolCall struct {
|
|
// The ID of the tool call.
|
|
ID string `json:"id" api:"required"`
|
|
// The Code Interpreter tool call definition.
|
|
CodeInterpreter CodeInterpreterToolCallCodeInterpreter `json:"code_interpreter" api:"required"`
|
|
// The type of tool call. This is always going to be `code_interpreter` for this
|
|
// type of tool call.
|
|
Type constant.CodeInterpreter `json:"type" default:"code_interpreter"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
ID respjson.Field
|
|
CodeInterpreter respjson.Field
|
|
Type respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r CodeInterpreterToolCall) RawJSON() string { return r.JSON.raw }
|
|
func (r *CodeInterpreterToolCall) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// The Code Interpreter tool call definition.
|
|
type CodeInterpreterToolCallCodeInterpreter struct {
|
|
// The input to the Code Interpreter tool call.
|
|
Input string `json:"input" api:"required"`
|
|
// The outputs from the Code Interpreter tool call. Code Interpreter can output one
|
|
// or more items, including text (`logs`) or images (`image`). Each of these are
|
|
// represented by a different object type.
|
|
Outputs []CodeInterpreterToolCallCodeInterpreterOutputUnion `json:"outputs" api:"required"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Input respjson.Field
|
|
Outputs respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r CodeInterpreterToolCallCodeInterpreter) RawJSON() string { return r.JSON.raw }
|
|
func (r *CodeInterpreterToolCallCodeInterpreter) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// CodeInterpreterToolCallCodeInterpreterOutputUnion contains all possible
|
|
// properties and values from [CodeInterpreterToolCallCodeInterpreterOutputLogs],
|
|
// [CodeInterpreterToolCallCodeInterpreterOutputImage].
|
|
//
|
|
// Use the [CodeInterpreterToolCallCodeInterpreterOutputUnion.AsAny] method to
|
|
// switch on the variant.
|
|
//
|
|
// Use the methods beginning with 'As' to cast the union to one of its variants.
|
|
type CodeInterpreterToolCallCodeInterpreterOutputUnion struct {
|
|
// This field is from variant [CodeInterpreterToolCallCodeInterpreterOutputLogs].
|
|
Logs string `json:"logs"`
|
|
// Any of "logs", "image".
|
|
Type string `json:"type"`
|
|
// This field is from variant [CodeInterpreterToolCallCodeInterpreterOutputImage].
|
|
Image CodeInterpreterToolCallCodeInterpreterOutputImageImage `json:"image"`
|
|
JSON struct {
|
|
Logs respjson.Field
|
|
Type respjson.Field
|
|
Image respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// anyCodeInterpreterToolCallCodeInterpreterOutput is implemented by each variant
|
|
// of [CodeInterpreterToolCallCodeInterpreterOutputUnion] to add type safety for
|
|
// the return type of [CodeInterpreterToolCallCodeInterpreterOutputUnion.AsAny]
|
|
type anyCodeInterpreterToolCallCodeInterpreterOutput interface {
|
|
implCodeInterpreterToolCallCodeInterpreterOutputUnion()
|
|
}
|
|
|
|
func (CodeInterpreterToolCallCodeInterpreterOutputLogs) implCodeInterpreterToolCallCodeInterpreterOutputUnion() {
|
|
}
|
|
func (CodeInterpreterToolCallCodeInterpreterOutputImage) implCodeInterpreterToolCallCodeInterpreterOutputUnion() {
|
|
}
|
|
|
|
// Use the following switch statement to find the correct variant
|
|
//
|
|
// switch variant := CodeInterpreterToolCallCodeInterpreterOutputUnion.AsAny().(type) {
|
|
// case openai.CodeInterpreterToolCallCodeInterpreterOutputLogs:
|
|
// case openai.CodeInterpreterToolCallCodeInterpreterOutputImage:
|
|
// default:
|
|
// fmt.Errorf("no variant present")
|
|
// }
|
|
func (u CodeInterpreterToolCallCodeInterpreterOutputUnion) AsAny() anyCodeInterpreterToolCallCodeInterpreterOutput {
|
|
switch u.Type {
|
|
case "logs":
|
|
return u.AsLogs()
|
|
case "image":
|
|
return u.AsImage()
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (u CodeInterpreterToolCallCodeInterpreterOutputUnion) AsLogs() (v CodeInterpreterToolCallCodeInterpreterOutputLogs) {
|
|
apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
|
|
return
|
|
}
|
|
|
|
func (u CodeInterpreterToolCallCodeInterpreterOutputUnion) AsImage() (v CodeInterpreterToolCallCodeInterpreterOutputImage) {
|
|
apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
|
|
return
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (u CodeInterpreterToolCallCodeInterpreterOutputUnion) RawJSON() string { return u.JSON.raw }
|
|
|
|
func (r *CodeInterpreterToolCallCodeInterpreterOutputUnion) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// Text output from the Code Interpreter tool call as part of a run step.
|
|
type CodeInterpreterToolCallCodeInterpreterOutputLogs struct {
|
|
// The text output from the Code Interpreter tool call.
|
|
Logs string `json:"logs" api:"required"`
|
|
// Always `logs`.
|
|
Type constant.Logs `json:"type" default:"logs"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Logs respjson.Field
|
|
Type respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r CodeInterpreterToolCallCodeInterpreterOutputLogs) RawJSON() string { return r.JSON.raw }
|
|
func (r *CodeInterpreterToolCallCodeInterpreterOutputLogs) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
type CodeInterpreterToolCallCodeInterpreterOutputImage struct {
|
|
Image CodeInterpreterToolCallCodeInterpreterOutputImageImage `json:"image" api:"required"`
|
|
// Always `image`.
|
|
Type constant.Image `json:"type" default:"image"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Image respjson.Field
|
|
Type respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r CodeInterpreterToolCallCodeInterpreterOutputImage) RawJSON() string { return r.JSON.raw }
|
|
func (r *CodeInterpreterToolCallCodeInterpreterOutputImage) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
type CodeInterpreterToolCallCodeInterpreterOutputImageImage struct {
|
|
// The [file](https://platform.openai.com/docs/api-reference/files) ID of the
|
|
// image.
|
|
FileID string `json:"file_id" api:"required"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
FileID respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r CodeInterpreterToolCallCodeInterpreterOutputImageImage) RawJSON() string { return r.JSON.raw }
|
|
func (r *CodeInterpreterToolCallCodeInterpreterOutputImageImage) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// Details of the Code Interpreter tool call the run step was involved in.
|
|
type CodeInterpreterToolCallDelta struct {
|
|
// The index of the tool call in the tool calls array.
|
|
Index int64 `json:"index" api:"required"`
|
|
// The type of tool call. This is always going to be `code_interpreter` for this
|
|
// type of tool call.
|
|
Type constant.CodeInterpreter `json:"type" default:"code_interpreter"`
|
|
// The ID of the tool call.
|
|
ID string `json:"id"`
|
|
// The Code Interpreter tool call definition.
|
|
CodeInterpreter CodeInterpreterToolCallDeltaCodeInterpreter `json:"code_interpreter"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Index respjson.Field
|
|
Type respjson.Field
|
|
ID respjson.Field
|
|
CodeInterpreter respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r CodeInterpreterToolCallDelta) RawJSON() string { return r.JSON.raw }
|
|
func (r *CodeInterpreterToolCallDelta) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// The Code Interpreter tool call definition.
|
|
type CodeInterpreterToolCallDeltaCodeInterpreter struct {
|
|
// The input to the Code Interpreter tool call.
|
|
Input string `json:"input"`
|
|
// The outputs from the Code Interpreter tool call. Code Interpreter can output one
|
|
// or more items, including text (`logs`) or images (`image`). Each of these are
|
|
// represented by a different object type.
|
|
Outputs []CodeInterpreterToolCallDeltaCodeInterpreterOutputUnion `json:"outputs"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Input respjson.Field
|
|
Outputs respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r CodeInterpreterToolCallDeltaCodeInterpreter) RawJSON() string { return r.JSON.raw }
|
|
func (r *CodeInterpreterToolCallDeltaCodeInterpreter) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// CodeInterpreterToolCallDeltaCodeInterpreterOutputUnion contains all possible
|
|
// properties and values from [CodeInterpreterLogs], [CodeInterpreterOutputImage].
|
|
//
|
|
// Use the [CodeInterpreterToolCallDeltaCodeInterpreterOutputUnion.AsAny] method to
|
|
// switch on the variant.
|
|
//
|
|
// Use the methods beginning with 'As' to cast the union to one of its variants.
|
|
type CodeInterpreterToolCallDeltaCodeInterpreterOutputUnion struct {
|
|
Index int64 `json:"index"`
|
|
// Any of "logs", "image".
|
|
Type string `json:"type"`
|
|
// This field is from variant [CodeInterpreterLogs].
|
|
Logs string `json:"logs"`
|
|
// This field is from variant [CodeInterpreterOutputImage].
|
|
Image CodeInterpreterOutputImageImage `json:"image"`
|
|
JSON struct {
|
|
Index respjson.Field
|
|
Type respjson.Field
|
|
Logs respjson.Field
|
|
Image respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// anyCodeInterpreterToolCallDeltaCodeInterpreterOutput is implemented by each
|
|
// variant of [CodeInterpreterToolCallDeltaCodeInterpreterOutputUnion] to add type
|
|
// safety for the return type of
|
|
// [CodeInterpreterToolCallDeltaCodeInterpreterOutputUnion.AsAny]
|
|
type anyCodeInterpreterToolCallDeltaCodeInterpreterOutput interface {
|
|
implCodeInterpreterToolCallDeltaCodeInterpreterOutputUnion()
|
|
}
|
|
|
|
func (CodeInterpreterLogs) implCodeInterpreterToolCallDeltaCodeInterpreterOutputUnion() {}
|
|
func (CodeInterpreterOutputImage) implCodeInterpreterToolCallDeltaCodeInterpreterOutputUnion() {}
|
|
|
|
// Use the following switch statement to find the correct variant
|
|
//
|
|
// switch variant := CodeInterpreterToolCallDeltaCodeInterpreterOutputUnion.AsAny().(type) {
|
|
// case openai.CodeInterpreterLogs:
|
|
// case openai.CodeInterpreterOutputImage:
|
|
// default:
|
|
// fmt.Errorf("no variant present")
|
|
// }
|
|
func (u CodeInterpreterToolCallDeltaCodeInterpreterOutputUnion) AsAny() anyCodeInterpreterToolCallDeltaCodeInterpreterOutput {
|
|
switch u.Type {
|
|
case "logs":
|
|
return u.AsLogs()
|
|
case "image":
|
|
return u.AsImage()
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (u CodeInterpreterToolCallDeltaCodeInterpreterOutputUnion) AsLogs() (v CodeInterpreterLogs) {
|
|
apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
|
|
return
|
|
}
|
|
|
|
func (u CodeInterpreterToolCallDeltaCodeInterpreterOutputUnion) AsImage() (v CodeInterpreterOutputImage) {
|
|
apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
|
|
return
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (u CodeInterpreterToolCallDeltaCodeInterpreterOutputUnion) RawJSON() string { return u.JSON.raw }
|
|
|
|
func (r *CodeInterpreterToolCallDeltaCodeInterpreterOutputUnion) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
type FileSearchToolCall struct {
|
|
// The ID of the tool call object.
|
|
ID string `json:"id" api:"required"`
|
|
// For now, this is always going to be an empty object.
|
|
FileSearch FileSearchToolCallFileSearch `json:"file_search" api:"required"`
|
|
// The type of tool call. This is always going to be `file_search` for this type of
|
|
// tool call.
|
|
Type constant.FileSearch `json:"type" default:"file_search"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
ID respjson.Field
|
|
FileSearch respjson.Field
|
|
Type respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r FileSearchToolCall) RawJSON() string { return r.JSON.raw }
|
|
func (r *FileSearchToolCall) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// For now, this is always going to be an empty object.
|
|
type FileSearchToolCallFileSearch struct {
|
|
// The ranking options for the file search.
|
|
RankingOptions FileSearchToolCallFileSearchRankingOptions `json:"ranking_options"`
|
|
// The results of the file search.
|
|
Results []FileSearchToolCallFileSearchResult `json:"results"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
RankingOptions respjson.Field
|
|
Results respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r FileSearchToolCallFileSearch) RawJSON() string { return r.JSON.raw }
|
|
func (r *FileSearchToolCallFileSearch) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// The ranking options for the file search.
|
|
type FileSearchToolCallFileSearchRankingOptions struct {
|
|
// The ranker to use for the file search. If not specified will use the `auto`
|
|
// ranker.
|
|
//
|
|
// Any of "auto", "default_2024_08_21".
|
|
Ranker string `json:"ranker" api:"required"`
|
|
// The score threshold for the file search. All values must be a floating point
|
|
// number between 0 and 1.
|
|
ScoreThreshold float64 `json:"score_threshold" api:"required"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Ranker respjson.Field
|
|
ScoreThreshold respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r FileSearchToolCallFileSearchRankingOptions) RawJSON() string { return r.JSON.raw }
|
|
func (r *FileSearchToolCallFileSearchRankingOptions) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// A result instance of the file search.
|
|
type FileSearchToolCallFileSearchResult struct {
|
|
// The ID of the file that result was found in.
|
|
FileID string `json:"file_id" api:"required"`
|
|
// The name of the file that result was found in.
|
|
FileName string `json:"file_name" api:"required"`
|
|
// The score of the result. All values must be a floating point number between 0
|
|
// and 1.
|
|
Score float64 `json:"score" api:"required"`
|
|
// The content of the result that was found. The content is only included if
|
|
// requested via the include query parameter.
|
|
Content []FileSearchToolCallFileSearchResultContent `json:"content"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
FileID respjson.Field
|
|
FileName respjson.Field
|
|
Score respjson.Field
|
|
Content respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r FileSearchToolCallFileSearchResult) RawJSON() string { return r.JSON.raw }
|
|
func (r *FileSearchToolCallFileSearchResult) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
type FileSearchToolCallFileSearchResultContent struct {
|
|
// The text content of the file.
|
|
Text string `json:"text"`
|
|
// The type of the content.
|
|
//
|
|
// Any of "text".
|
|
Type string `json:"type"`
|
|
// 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 FileSearchToolCallFileSearchResultContent) RawJSON() string { return r.JSON.raw }
|
|
func (r *FileSearchToolCallFileSearchResultContent) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
type FileSearchToolCallDelta struct {
|
|
// For now, this is always going to be an empty object.
|
|
FileSearch any `json:"file_search" api:"required"`
|
|
// The index of the tool call in the tool calls array.
|
|
Index int64 `json:"index" api:"required"`
|
|
// The type of tool call. This is always going to be `file_search` for this type of
|
|
// tool call.
|
|
Type constant.FileSearch `json:"type" default:"file_search"`
|
|
// The ID of the tool call object.
|
|
ID string `json:"id"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
FileSearch respjson.Field
|
|
Index respjson.Field
|
|
Type respjson.Field
|
|
ID respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r FileSearchToolCallDelta) RawJSON() string { return r.JSON.raw }
|
|
func (r *FileSearchToolCallDelta) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
type FunctionToolCall struct {
|
|
// The ID of the tool call object.
|
|
ID string `json:"id" api:"required"`
|
|
// The definition of the function that was called.
|
|
Function FunctionToolCallFunction `json:"function" api:"required"`
|
|
// The type of tool call. This is always going to be `function` for this type of
|
|
// tool call.
|
|
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 FunctionToolCall) RawJSON() string { return r.JSON.raw }
|
|
func (r *FunctionToolCall) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// The definition of the function that was called.
|
|
type FunctionToolCallFunction struct {
|
|
// The arguments passed to the function.
|
|
Arguments string `json:"arguments" api:"required"`
|
|
// The name of the function.
|
|
Name string `json:"name" api:"required"`
|
|
// The output of the function. This will be `null` if the outputs have not been
|
|
// [submitted](https://platform.openai.com/docs/api-reference/runs/submitToolOutputs)
|
|
// yet.
|
|
Output string `json:"output" api:"required"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Arguments respjson.Field
|
|
Name respjson.Field
|
|
Output respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r FunctionToolCallFunction) RawJSON() string { return r.JSON.raw }
|
|
func (r *FunctionToolCallFunction) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
type FunctionToolCallDelta struct {
|
|
// The index of the tool call in the tool calls array.
|
|
Index int64 `json:"index" api:"required"`
|
|
// The type of tool call. This is always going to be `function` for this type of
|
|
// tool call.
|
|
Type constant.Function `json:"type" default:"function"`
|
|
// The ID of the tool call object.
|
|
ID string `json:"id"`
|
|
// The definition of the function that was called.
|
|
Function FunctionToolCallDeltaFunction `json:"function"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Index respjson.Field
|
|
Type respjson.Field
|
|
ID respjson.Field
|
|
Function respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r FunctionToolCallDelta) RawJSON() string { return r.JSON.raw }
|
|
func (r *FunctionToolCallDelta) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// The definition of the function that was called.
|
|
type FunctionToolCallDeltaFunction struct {
|
|
// The arguments passed to the function.
|
|
Arguments string `json:"arguments"`
|
|
// The name of the function.
|
|
Name string `json:"name"`
|
|
// The output of the function. This will be `null` if the outputs have not been
|
|
// [submitted](https://platform.openai.com/docs/api-reference/runs/submitToolOutputs)
|
|
// yet.
|
|
Output string `json:"output" api:"nullable"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Arguments respjson.Field
|
|
Name respjson.Field
|
|
Output respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r FunctionToolCallDeltaFunction) RawJSON() string { return r.JSON.raw }
|
|
func (r *FunctionToolCallDeltaFunction) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// Details of the message creation by the run step.
|
|
type MessageCreationStepDetails struct {
|
|
MessageCreation MessageCreationStepDetailsMessageCreation `json:"message_creation" api:"required"`
|
|
// Always `message_creation`.
|
|
Type constant.MessageCreation `json:"type" default:"message_creation"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
MessageCreation respjson.Field
|
|
Type respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r MessageCreationStepDetails) RawJSON() string { return r.JSON.raw }
|
|
func (r *MessageCreationStepDetails) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
type MessageCreationStepDetailsMessageCreation struct {
|
|
// The ID of the message that was created by this run step.
|
|
MessageID string `json:"message_id" api:"required"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
MessageID respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r MessageCreationStepDetailsMessageCreation) RawJSON() string { return r.JSON.raw }
|
|
func (r *MessageCreationStepDetailsMessageCreation) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// Represents a step in execution of a run.
|
|
type RunStep struct {
|
|
// The identifier of the run step, which can be referenced in API endpoints.
|
|
ID string `json:"id" api:"required"`
|
|
// The ID of the
|
|
// [assistant](https://platform.openai.com/docs/api-reference/assistants)
|
|
// associated with the run step.
|
|
AssistantID string `json:"assistant_id" api:"required"`
|
|
// The Unix timestamp (in seconds) for when the run step was cancelled.
|
|
CancelledAt int64 `json:"cancelled_at" api:"required"`
|
|
// The Unix timestamp (in seconds) for when the run step completed.
|
|
CompletedAt int64 `json:"completed_at" api:"required"`
|
|
// The Unix timestamp (in seconds) for when the run step was created.
|
|
CreatedAt int64 `json:"created_at" api:"required"`
|
|
// The Unix timestamp (in seconds) for when the run step expired. A step is
|
|
// considered expired if the parent run is expired.
|
|
ExpiredAt int64 `json:"expired_at" api:"required"`
|
|
// The Unix timestamp (in seconds) for when the run step failed.
|
|
FailedAt int64 `json:"failed_at" api:"required"`
|
|
// The last error associated with this run step. Will be `null` if there are no
|
|
// errors.
|
|
LastError RunStepLastError `json:"last_error" api:"required"`
|
|
// 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" api:"required"`
|
|
// The object type, which is always `thread.run.step`.
|
|
Object constant.ThreadRunStep `json:"object" default:"thread.run.step"`
|
|
// The ID of the [run](https://platform.openai.com/docs/api-reference/runs) that
|
|
// this run step is a part of.
|
|
RunID string `json:"run_id" api:"required"`
|
|
// The status of the run step, which can be either `in_progress`, `cancelled`,
|
|
// `failed`, `completed`, or `expired`.
|
|
//
|
|
// Any of "in_progress", "cancelled", "failed", "completed", "expired".
|
|
Status RunStepStatus `json:"status" api:"required"`
|
|
// The details of the run step.
|
|
StepDetails RunStepStepDetailsUnion `json:"step_details" api:"required"`
|
|
// The ID of the [thread](https://platform.openai.com/docs/api-reference/threads)
|
|
// that was run.
|
|
ThreadID string `json:"thread_id" api:"required"`
|
|
// The type of run step, which can be either `message_creation` or `tool_calls`.
|
|
//
|
|
// Any of "message_creation", "tool_calls".
|
|
Type RunStepType `json:"type" api:"required"`
|
|
// Usage statistics related to the run step. This value will be `null` while the
|
|
// run step's status is `in_progress`.
|
|
Usage RunStepUsage `json:"usage" api:"required"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
ID respjson.Field
|
|
AssistantID respjson.Field
|
|
CancelledAt respjson.Field
|
|
CompletedAt respjson.Field
|
|
CreatedAt respjson.Field
|
|
ExpiredAt respjson.Field
|
|
FailedAt respjson.Field
|
|
LastError respjson.Field
|
|
Metadata respjson.Field
|
|
Object respjson.Field
|
|
RunID respjson.Field
|
|
Status respjson.Field
|
|
StepDetails respjson.Field
|
|
ThreadID respjson.Field
|
|
Type respjson.Field
|
|
Usage respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r RunStep) RawJSON() string { return r.JSON.raw }
|
|
func (r *RunStep) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// The last error associated with this run step. Will be `null` if there are no
|
|
// errors.
|
|
type RunStepLastError struct {
|
|
// One of `server_error` or `rate_limit_exceeded`.
|
|
//
|
|
// Any of "server_error", "rate_limit_exceeded".
|
|
Code string `json:"code" api:"required"`
|
|
// A human-readable description of the error.
|
|
Message string `json:"message" api:"required"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Code respjson.Field
|
|
Message respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r RunStepLastError) RawJSON() string { return r.JSON.raw }
|
|
func (r *RunStepLastError) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// The status of the run step, which can be either `in_progress`, `cancelled`,
|
|
// `failed`, `completed`, or `expired`.
|
|
type RunStepStatus string
|
|
|
|
const (
|
|
RunStepStatusInProgress RunStepStatus = "in_progress"
|
|
RunStepStatusCancelled RunStepStatus = "cancelled"
|
|
RunStepStatusFailed RunStepStatus = "failed"
|
|
RunStepStatusCompleted RunStepStatus = "completed"
|
|
RunStepStatusExpired RunStepStatus = "expired"
|
|
)
|
|
|
|
// RunStepStepDetailsUnion contains all possible properties and values from
|
|
// [MessageCreationStepDetails], [ToolCallsStepDetails].
|
|
//
|
|
// Use the [RunStepStepDetailsUnion.AsAny] method to switch on the variant.
|
|
//
|
|
// Use the methods beginning with 'As' to cast the union to one of its variants.
|
|
type RunStepStepDetailsUnion struct {
|
|
// This field is from variant [MessageCreationStepDetails].
|
|
MessageCreation MessageCreationStepDetailsMessageCreation `json:"message_creation"`
|
|
// Any of "message_creation", "tool_calls".
|
|
Type string `json:"type"`
|
|
// This field is from variant [ToolCallsStepDetails].
|
|
ToolCalls []ToolCallUnion `json:"tool_calls"`
|
|
JSON struct {
|
|
MessageCreation respjson.Field
|
|
Type respjson.Field
|
|
ToolCalls respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// anyRunStepStepDetails is implemented by each variant of
|
|
// [RunStepStepDetailsUnion] to add type safety for the return type of
|
|
// [RunStepStepDetailsUnion.AsAny]
|
|
type anyRunStepStepDetails interface {
|
|
implRunStepStepDetailsUnion()
|
|
}
|
|
|
|
func (MessageCreationStepDetails) implRunStepStepDetailsUnion() {}
|
|
func (ToolCallsStepDetails) implRunStepStepDetailsUnion() {}
|
|
|
|
// Use the following switch statement to find the correct variant
|
|
//
|
|
// switch variant := RunStepStepDetailsUnion.AsAny().(type) {
|
|
// case openai.MessageCreationStepDetails:
|
|
// case openai.ToolCallsStepDetails:
|
|
// default:
|
|
// fmt.Errorf("no variant present")
|
|
// }
|
|
func (u RunStepStepDetailsUnion) AsAny() anyRunStepStepDetails {
|
|
switch u.Type {
|
|
case "message_creation":
|
|
return u.AsMessageCreation()
|
|
case "tool_calls":
|
|
return u.AsToolCalls()
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (u RunStepStepDetailsUnion) AsMessageCreation() (v MessageCreationStepDetails) {
|
|
apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
|
|
return
|
|
}
|
|
|
|
func (u RunStepStepDetailsUnion) AsToolCalls() (v ToolCallsStepDetails) {
|
|
apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
|
|
return
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (u RunStepStepDetailsUnion) RawJSON() string { return u.JSON.raw }
|
|
|
|
func (r *RunStepStepDetailsUnion) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// The type of run step, which can be either `message_creation` or `tool_calls`.
|
|
type RunStepType string
|
|
|
|
const (
|
|
RunStepTypeMessageCreation RunStepType = "message_creation"
|
|
RunStepTypeToolCalls RunStepType = "tool_calls"
|
|
)
|
|
|
|
// Usage statistics related to the run step. This value will be `null` while the
|
|
// run step's status is `in_progress`.
|
|
type RunStepUsage struct {
|
|
// Number of completion tokens used over the course of the run step.
|
|
CompletionTokens int64 `json:"completion_tokens" api:"required"`
|
|
// Number of prompt tokens used over the course of the run step.
|
|
PromptTokens int64 `json:"prompt_tokens" api:"required"`
|
|
// Total number of tokens used (prompt + completion).
|
|
TotalTokens int64 `json:"total_tokens" api:"required"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
CompletionTokens respjson.Field
|
|
PromptTokens respjson.Field
|
|
TotalTokens respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r RunStepUsage) RawJSON() string { return r.JSON.raw }
|
|
func (r *RunStepUsage) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// The delta containing the fields that have changed on the run step.
|
|
type RunStepDelta struct {
|
|
// The details of the run step.
|
|
StepDetails RunStepDeltaStepDetailsUnion `json:"step_details"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
StepDetails respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r RunStepDelta) RawJSON() string { return r.JSON.raw }
|
|
func (r *RunStepDelta) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// RunStepDeltaStepDetailsUnion contains all possible properties and values from
|
|
// [RunStepDeltaMessageDelta], [ToolCallDeltaObject].
|
|
//
|
|
// Use the [RunStepDeltaStepDetailsUnion.AsAny] method to switch on the variant.
|
|
//
|
|
// Use the methods beginning with 'As' to cast the union to one of its variants.
|
|
type RunStepDeltaStepDetailsUnion struct {
|
|
// Any of "message_creation", "tool_calls".
|
|
Type string `json:"type"`
|
|
// This field is from variant [RunStepDeltaMessageDelta].
|
|
MessageCreation RunStepDeltaMessageDeltaMessageCreation `json:"message_creation"`
|
|
// This field is from variant [ToolCallDeltaObject].
|
|
ToolCalls []ToolCallDeltaUnion `json:"tool_calls"`
|
|
JSON struct {
|
|
Type respjson.Field
|
|
MessageCreation respjson.Field
|
|
ToolCalls respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// anyRunStepDeltaStepDetails is implemented by each variant of
|
|
// [RunStepDeltaStepDetailsUnion] to add type safety for the return type of
|
|
// [RunStepDeltaStepDetailsUnion.AsAny]
|
|
type anyRunStepDeltaStepDetails interface {
|
|
implRunStepDeltaStepDetailsUnion()
|
|
}
|
|
|
|
func (RunStepDeltaMessageDelta) implRunStepDeltaStepDetailsUnion() {}
|
|
func (ToolCallDeltaObject) implRunStepDeltaStepDetailsUnion() {}
|
|
|
|
// Use the following switch statement to find the correct variant
|
|
//
|
|
// switch variant := RunStepDeltaStepDetailsUnion.AsAny().(type) {
|
|
// case openai.RunStepDeltaMessageDelta:
|
|
// case openai.ToolCallDeltaObject:
|
|
// default:
|
|
// fmt.Errorf("no variant present")
|
|
// }
|
|
func (u RunStepDeltaStepDetailsUnion) AsAny() anyRunStepDeltaStepDetails {
|
|
switch u.Type {
|
|
case "message_creation":
|
|
return u.AsMessageCreation()
|
|
case "tool_calls":
|
|
return u.AsToolCalls()
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (u RunStepDeltaStepDetailsUnion) AsMessageCreation() (v RunStepDeltaMessageDelta) {
|
|
apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
|
|
return
|
|
}
|
|
|
|
func (u RunStepDeltaStepDetailsUnion) AsToolCalls() (v ToolCallDeltaObject) {
|
|
apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
|
|
return
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (u RunStepDeltaStepDetailsUnion) RawJSON() string { return u.JSON.raw }
|
|
|
|
func (r *RunStepDeltaStepDetailsUnion) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// Represents a run step delta i.e. any changed fields on a run step during
|
|
// streaming.
|
|
type RunStepDeltaEvent struct {
|
|
// The identifier of the run step, which can be referenced in API endpoints.
|
|
ID string `json:"id" api:"required"`
|
|
// The delta containing the fields that have changed on the run step.
|
|
Delta RunStepDelta `json:"delta" api:"required"`
|
|
// The object type, which is always `thread.run.step.delta`.
|
|
Object constant.ThreadRunStepDelta `json:"object" default:"thread.run.step.delta"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
ID respjson.Field
|
|
Delta respjson.Field
|
|
Object respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r RunStepDeltaEvent) RawJSON() string { return r.JSON.raw }
|
|
func (r *RunStepDeltaEvent) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// Details of the message creation by the run step.
|
|
type RunStepDeltaMessageDelta struct {
|
|
// Always `message_creation`.
|
|
Type constant.MessageCreation `json:"type" default:"message_creation"`
|
|
MessageCreation RunStepDeltaMessageDeltaMessageCreation `json:"message_creation"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Type respjson.Field
|
|
MessageCreation respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r RunStepDeltaMessageDelta) RawJSON() string { return r.JSON.raw }
|
|
func (r *RunStepDeltaMessageDelta) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
type RunStepDeltaMessageDeltaMessageCreation struct {
|
|
// The ID of the message that was created by this run step.
|
|
MessageID string `json:"message_id"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
MessageID respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r RunStepDeltaMessageDeltaMessageCreation) RawJSON() string { return r.JSON.raw }
|
|
func (r *RunStepDeltaMessageDeltaMessageCreation) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
type RunStepInclude string
|
|
|
|
const (
|
|
RunStepIncludeStepDetailsToolCallsFileSearchResultsContent RunStepInclude = "step_details.tool_calls[*].file_search.results[*].content"
|
|
)
|
|
|
|
// ToolCallUnion contains all possible properties and values from
|
|
// [CodeInterpreterToolCall], [FileSearchToolCall], [FunctionToolCall].
|
|
//
|
|
// Use the [ToolCallUnion.AsAny] method to switch on the variant.
|
|
//
|
|
// Use the methods beginning with 'As' to cast the union to one of its variants.
|
|
type ToolCallUnion struct {
|
|
ID string `json:"id"`
|
|
// This field is from variant [CodeInterpreterToolCall].
|
|
CodeInterpreter CodeInterpreterToolCallCodeInterpreter `json:"code_interpreter"`
|
|
// Any of "code_interpreter", "file_search", "function".
|
|
Type string `json:"type"`
|
|
// This field is from variant [FileSearchToolCall].
|
|
FileSearch FileSearchToolCallFileSearch `json:"file_search"`
|
|
// This field is from variant [FunctionToolCall].
|
|
Function FunctionToolCallFunction `json:"function"`
|
|
JSON struct {
|
|
ID respjson.Field
|
|
CodeInterpreter respjson.Field
|
|
Type respjson.Field
|
|
FileSearch respjson.Field
|
|
Function respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// anyToolCall is implemented by each variant of [ToolCallUnion] to add type safety
|
|
// for the return type of [ToolCallUnion.AsAny]
|
|
type anyToolCall interface {
|
|
implToolCallUnion()
|
|
}
|
|
|
|
func (CodeInterpreterToolCall) implToolCallUnion() {}
|
|
func (FileSearchToolCall) implToolCallUnion() {}
|
|
func (FunctionToolCall) implToolCallUnion() {}
|
|
|
|
// Use the following switch statement to find the correct variant
|
|
//
|
|
// switch variant := ToolCallUnion.AsAny().(type) {
|
|
// case openai.CodeInterpreterToolCall:
|
|
// case openai.FileSearchToolCall:
|
|
// case openai.FunctionToolCall:
|
|
// default:
|
|
// fmt.Errorf("no variant present")
|
|
// }
|
|
func (u ToolCallUnion) AsAny() anyToolCall {
|
|
switch u.Type {
|
|
case "code_interpreter":
|
|
return u.AsCodeInterpreter()
|
|
case "file_search":
|
|
return u.AsFileSearch()
|
|
case "function":
|
|
return u.AsFunction()
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (u ToolCallUnion) AsCodeInterpreter() (v CodeInterpreterToolCall) {
|
|
apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
|
|
return
|
|
}
|
|
|
|
func (u ToolCallUnion) AsFileSearch() (v FileSearchToolCall) {
|
|
apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
|
|
return
|
|
}
|
|
|
|
func (u ToolCallUnion) AsFunction() (v FunctionToolCall) {
|
|
apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
|
|
return
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (u ToolCallUnion) RawJSON() string { return u.JSON.raw }
|
|
|
|
func (r *ToolCallUnion) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// ToolCallDeltaUnion contains all possible properties and values from
|
|
// [CodeInterpreterToolCallDelta], [FileSearchToolCallDelta],
|
|
// [FunctionToolCallDelta].
|
|
//
|
|
// Use the [ToolCallDeltaUnion.AsAny] method to switch on the variant.
|
|
//
|
|
// Use the methods beginning with 'As' to cast the union to one of its variants.
|
|
type ToolCallDeltaUnion struct {
|
|
Index int64 `json:"index"`
|
|
// Any of "code_interpreter", "file_search", "function".
|
|
Type string `json:"type"`
|
|
ID string `json:"id"`
|
|
// This field is from variant [CodeInterpreterToolCallDelta].
|
|
CodeInterpreter CodeInterpreterToolCallDeltaCodeInterpreter `json:"code_interpreter"`
|
|
// This field is from variant [FileSearchToolCallDelta].
|
|
FileSearch any `json:"file_search"`
|
|
// This field is from variant [FunctionToolCallDelta].
|
|
Function FunctionToolCallDeltaFunction `json:"function"`
|
|
JSON struct {
|
|
Index respjson.Field
|
|
Type respjson.Field
|
|
ID respjson.Field
|
|
CodeInterpreter respjson.Field
|
|
FileSearch respjson.Field
|
|
Function respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// anyToolCallDelta is implemented by each variant of [ToolCallDeltaUnion] to add
|
|
// type safety for the return type of [ToolCallDeltaUnion.AsAny]
|
|
type anyToolCallDelta interface {
|
|
implToolCallDeltaUnion()
|
|
}
|
|
|
|
func (CodeInterpreterToolCallDelta) implToolCallDeltaUnion() {}
|
|
func (FileSearchToolCallDelta) implToolCallDeltaUnion() {}
|
|
func (FunctionToolCallDelta) implToolCallDeltaUnion() {}
|
|
|
|
// Use the following switch statement to find the correct variant
|
|
//
|
|
// switch variant := ToolCallDeltaUnion.AsAny().(type) {
|
|
// case openai.CodeInterpreterToolCallDelta:
|
|
// case openai.FileSearchToolCallDelta:
|
|
// case openai.FunctionToolCallDelta:
|
|
// default:
|
|
// fmt.Errorf("no variant present")
|
|
// }
|
|
func (u ToolCallDeltaUnion) AsAny() anyToolCallDelta {
|
|
switch u.Type {
|
|
case "code_interpreter":
|
|
return u.AsCodeInterpreter()
|
|
case "file_search":
|
|
return u.AsFileSearch()
|
|
case "function":
|
|
return u.AsFunction()
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (u ToolCallDeltaUnion) AsCodeInterpreter() (v CodeInterpreterToolCallDelta) {
|
|
apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
|
|
return
|
|
}
|
|
|
|
func (u ToolCallDeltaUnion) AsFileSearch() (v FileSearchToolCallDelta) {
|
|
apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
|
|
return
|
|
}
|
|
|
|
func (u ToolCallDeltaUnion) AsFunction() (v FunctionToolCallDelta) {
|
|
apijson.UnmarshalRoot(json.RawMessage(u.JSON.raw), &v)
|
|
return
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (u ToolCallDeltaUnion) RawJSON() string { return u.JSON.raw }
|
|
|
|
func (r *ToolCallDeltaUnion) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// Details of the tool call.
|
|
type ToolCallDeltaObject struct {
|
|
// Always `tool_calls`.
|
|
Type constant.ToolCalls `json:"type" default:"tool_calls"`
|
|
// An array of tool calls the run step was involved in. These can be associated
|
|
// with one of three types of tools: `code_interpreter`, `file_search`, or
|
|
// `function`.
|
|
ToolCalls []ToolCallDeltaUnion `json:"tool_calls"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
Type respjson.Field
|
|
ToolCalls respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r ToolCallDeltaObject) RawJSON() string { return r.JSON.raw }
|
|
func (r *ToolCallDeltaObject) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
// Details of the tool call.
|
|
type ToolCallsStepDetails struct {
|
|
// An array of tool calls the run step was involved in. These can be associated
|
|
// with one of three types of tools: `code_interpreter`, `file_search`, or
|
|
// `function`.
|
|
ToolCalls []ToolCallUnion `json:"tool_calls" api:"required"`
|
|
// Always `tool_calls`.
|
|
Type constant.ToolCalls `json:"type" default:"tool_calls"`
|
|
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
|
|
JSON struct {
|
|
ToolCalls respjson.Field
|
|
Type respjson.Field
|
|
ExtraFields map[string]respjson.Field
|
|
raw string
|
|
} `json:"-"`
|
|
}
|
|
|
|
// Returns the unmodified JSON received from the API
|
|
func (r ToolCallsStepDetails) RawJSON() string { return r.JSON.raw }
|
|
func (r *ToolCallsStepDetails) UnmarshalJSON(data []byte) error {
|
|
return apijson.UnmarshalRoot(data, r)
|
|
}
|
|
|
|
type BetaThreadRunStepGetParams struct {
|
|
// A list of additional fields to include in the response. Currently the only
|
|
// supported value is `step_details.tool_calls[*].file_search.results[*].content`
|
|
// to fetch the file search result content.
|
|
//
|
|
// See the
|
|
// [file search tool documentation](https://platform.openai.com/docs/assistants/tools/file-search#customizing-file-search-settings)
|
|
// for more information.
|
|
Include []RunStepInclude `query:"include,omitzero" json:"-"`
|
|
paramObj
|
|
}
|
|
|
|
// URLQuery serializes [BetaThreadRunStepGetParams]'s query parameters as
|
|
// `url.Values`.
|
|
func (r BetaThreadRunStepGetParams) URLQuery() (v url.Values, err error) {
|
|
return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
|
|
ArrayFormat: apiquery.ArrayQueryFormatBrackets,
|
|
NestedFormat: apiquery.NestedQueryFormatBrackets,
|
|
})
|
|
}
|
|
|
|
type BetaThreadRunStepListParams struct {
|
|
// A cursor for use in pagination. `after` is an object ID that defines your place
|
|
// in the list. For instance, if you make a list request and receive 100 objects,
|
|
// ending with obj_foo, your subsequent call can include after=obj_foo in order to
|
|
// fetch the next page of the list.
|
|
After param.Opt[string] `query:"after,omitzero" json:"-"`
|
|
// A cursor for use in pagination. `before` is an object ID that defines your place
|
|
// in the list. For instance, if you make a list request and receive 100 objects,
|
|
// starting with obj_foo, your subsequent call can include before=obj_foo in order
|
|
// to fetch the previous page of the list.
|
|
Before param.Opt[string] `query:"before,omitzero" json:"-"`
|
|
// A limit on the number of objects to be returned. Limit can range between 1 and
|
|
// 100, and the default is 20.
|
|
Limit param.Opt[int64] `query:"limit,omitzero" json:"-"`
|
|
// A list of additional fields to include in the response. Currently the only
|
|
// supported value is `step_details.tool_calls[*].file_search.results[*].content`
|
|
// to fetch the file search result content.
|
|
//
|
|
// See the
|
|
// [file search tool documentation](https://platform.openai.com/docs/assistants/tools/file-search#customizing-file-search-settings)
|
|
// for more information.
|
|
Include []RunStepInclude `query:"include,omitzero" json:"-"`
|
|
// Sort order by the `created_at` timestamp of the objects. `asc` for ascending
|
|
// order and `desc` for descending order.
|
|
//
|
|
// Any of "asc", "desc".
|
|
Order BetaThreadRunStepListParamsOrder `query:"order,omitzero" json:"-"`
|
|
paramObj
|
|
}
|
|
|
|
// URLQuery serializes [BetaThreadRunStepListParams]'s query parameters as
|
|
// `url.Values`.
|
|
func (r BetaThreadRunStepListParams) URLQuery() (v url.Values, err error) {
|
|
return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
|
|
ArrayFormat: apiquery.ArrayQueryFormatBrackets,
|
|
NestedFormat: apiquery.NestedQueryFormatBrackets,
|
|
})
|
|
}
|
|
|
|
// Sort order by the `created_at` timestamp of the objects. `asc` for ascending
|
|
// order and `desc` for descending order.
|
|
type BetaThreadRunStepListParamsOrder string
|
|
|
|
const (
|
|
BetaThreadRunStepListParamsOrderAsc BetaThreadRunStepListParamsOrder = "asc"
|
|
BetaThreadRunStepListParamsOrderDesc BetaThreadRunStepListParamsOrder = "desc"
|
|
)
|