resources/beta/threads/runs/steps.ts (290 lines of code) (raw):
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
import { APIResource } from "../../../../resource.ts";
import { isRequestOptions } from "../../../../core.ts";
import * as Core from "../../../../core.ts";
import * as StepsAPI from "./steps.ts";
import { CursorPage, type CursorPageParams } from "../../../../pagination.ts";
export class Steps extends APIResource {
/**
* Retrieves a run step.
*/
retrieve(
threadId: string,
runId: string,
stepId: string,
query?: StepRetrieveParams,
options?: Core.RequestOptions,
): Core.APIPromise<RunStep>;
retrieve(
threadId: string,
runId: string,
stepId: string,
options?: Core.RequestOptions,
): Core.APIPromise<RunStep>;
retrieve(
threadId: string,
runId: string,
stepId: string,
query: StepRetrieveParams | Core.RequestOptions = {},
options?: Core.RequestOptions,
): Core.APIPromise<RunStep> {
if (isRequestOptions(query)) {
return this.retrieve(threadId, runId, stepId, {}, query);
}
return this._client.get(
`/threads/${threadId}/runs/${runId}/steps/${stepId}`,
{
query,
...options,
headers: { "OpenAI-Beta": "assistants=v2", ...options?.headers },
},
);
}
/**
* Returns a list of run steps belonging to a run.
*/
list(
threadId: string,
runId: string,
query?: StepListParams,
options?: Core.RequestOptions,
): Core.PagePromise<RunStepsPage, RunStep>;
list(
threadId: string,
runId: string,
options?: Core.RequestOptions,
): Core.PagePromise<RunStepsPage, RunStep>;
list(
threadId: string,
runId: string,
query: StepListParams | Core.RequestOptions = {},
options?: Core.RequestOptions,
): Core.PagePromise<RunStepsPage, RunStep> {
if (isRequestOptions(query)) {
return this.list(threadId, runId, {}, query);
}
return this._client.getAPIList(
`/threads/${threadId}/runs/${runId}/steps`,
RunStepsPage,
{
query,
...options,
headers: { "OpenAI-Beta": "assistants=v2", ...options?.headers },
},
);
}
}
export class RunStepsPage extends CursorPage<RunStep> {}
/**
* Text output from the Code Interpreter tool call as part of a run step.
*/
export interface CodeInterpreterLogs {
/**
* The index of the output in the outputs array.
*/
index: number;
/**
* Always `logs`.
*/
type: "logs";
/**
* The text output from the Code Interpreter tool call.
*/
logs?: string;
}
export interface CodeInterpreterOutputImage {
/**
* The index of the output in the outputs array.
*/
index: number;
/**
* Always `image`.
*/
type: "image";
image?: CodeInterpreterOutputImage.Image;
}
export namespace CodeInterpreterOutputImage {
export interface Image {
/**
* The [file](https://platform.openai.com/docs/api-reference/files) ID of the
* image.
*/
file_id?: string;
}
}
/**
* Details of the Code Interpreter tool call the run step was involved in.
*/
export interface CodeInterpreterToolCall {
/**
* The ID of the tool call.
*/
id: string;
/**
* The Code Interpreter tool call definition.
*/
code_interpreter: CodeInterpreterToolCall.CodeInterpreter;
/**
* The type of tool call. This is always going to be `code_interpreter` for this
* type of tool call.
*/
type: "code_interpreter";
}
export namespace CodeInterpreterToolCall {
/**
* The Code Interpreter tool call definition.
*/
export interface CodeInterpreter {
/**
* The input to the Code Interpreter tool call.
*/
input: string;
/**
* 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: Array<CodeInterpreter.Logs | CodeInterpreter.Image>;
}
export namespace CodeInterpreter {
/**
* Text output from the Code Interpreter tool call as part of a run step.
*/
export interface Logs {
/**
* The text output from the Code Interpreter tool call.
*/
logs: string;
/**
* Always `logs`.
*/
type: "logs";
}
export interface Image {
image: Image.Image;
/**
* Always `image`.
*/
type: "image";
}
export namespace Image {
export interface Image {
/**
* The [file](https://platform.openai.com/docs/api-reference/files) ID of the
* image.
*/
file_id: string;
}
}
}
}
/**
* Details of the Code Interpreter tool call the run step was involved in.
*/
export interface CodeInterpreterToolCallDelta {
/**
* The index of the tool call in the tool calls array.
*/
index: number;
/**
* The type of tool call. This is always going to be `code_interpreter` for this
* type of tool call.
*/
type: "code_interpreter";
/**
* The ID of the tool call.
*/
id?: string;
/**
* The Code Interpreter tool call definition.
*/
code_interpreter?: CodeInterpreterToolCallDelta.CodeInterpreter;
}
export namespace CodeInterpreterToolCallDelta {
/**
* The Code Interpreter tool call definition.
*/
export interface CodeInterpreter {
/**
* The input to the Code Interpreter tool call.
*/
input?: string;
/**
* 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?: Array<
StepsAPI.CodeInterpreterLogs | StepsAPI.CodeInterpreterOutputImage
>;
}
}
export interface FileSearchToolCall {
/**
* The ID of the tool call object.
*/
id: string;
/**
* For now, this is always going to be an empty object.
*/
file_search: FileSearchToolCall.FileSearch;
/**
* The type of tool call. This is always going to be `file_search` for this type of
* tool call.
*/
type: "file_search";
}
export namespace FileSearchToolCall {
/**
* For now, this is always going to be an empty object.
*/
export interface FileSearch {
/**
* The ranking options for the file search.
*/
ranking_options?: FileSearch.RankingOptions;
/**
* The results of the file search.
*/
results?: Array<FileSearch.Result>;
}
export namespace FileSearch {
/**
* The ranking options for the file search.
*/
export interface RankingOptions {
/**
* The ranker used for the file search.
*/
ranker: "default_2024_08_21";
/**
* The score threshold for the file search. All values must be a floating point
* number between 0 and 1.
*/
score_threshold: number;
}
/**
* A result instance of the file search.
*/
export interface Result {
/**
* The ID of the file that result was found in.
*/
file_id: string;
/**
* The name of the file that result was found in.
*/
file_name: string;
/**
* The score of the result. All values must be a floating point number between 0
* and 1.
*/
score: number;
/**
* The content of the result that was found. The content is only included if
* requested via the include query parameter.
*/
content?: Array<Result.Content>;
}
export namespace Result {
export interface Content {
/**
* The text content of the file.
*/
text?: string;
/**
* The type of the content.
*/
type?: "text";
}
}
}
}
export interface FileSearchToolCallDelta {
/**
* For now, this is always going to be an empty object.
*/
file_search: unknown;
/**
* The index of the tool call in the tool calls array.
*/
index: number;
/**
* The type of tool call. This is always going to be `file_search` for this type of
* tool call.
*/
type: "file_search";
/**
* The ID of the tool call object.
*/
id?: string;
}
export interface FunctionToolCall {
/**
* The ID of the tool call object.
*/
id: string;
/**
* The definition of the function that was called.
*/
function: FunctionToolCall.Function;
/**
* The type of tool call. This is always going to be `function` for this type of
* tool call.
*/
type: "function";
}
export namespace FunctionToolCall {
/**
* The definition of the function that was called.
*/
export interface Function {
/**
* The arguments passed to the function.
*/
arguments: string;
/**
* The name of the function.
*/
name: string;
/**
* 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 | null;
}
}
export interface FunctionToolCallDelta {
/**
* The index of the tool call in the tool calls array.
*/
index: number;
/**
* The type of tool call. This is always going to be `function` for this type of
* tool call.
*/
type: "function";
/**
* The ID of the tool call object.
*/
id?: string;
/**
* The definition of the function that was called.
*/
function?: FunctionToolCallDelta.Function;
}
export namespace FunctionToolCallDelta {
/**
* The definition of the function that was called.
*/
export interface Function {
/**
* The arguments passed to the function.
*/
arguments?: string;
/**
* The name of the function.
*/
name?: string;
/**
* 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 | null;
}
}
/**
* Details of the message creation by the run step.
*/
export interface MessageCreationStepDetails {
message_creation: MessageCreationStepDetails.MessageCreation;
/**
* Always `message_creation`.
*/
type: "message_creation";
}
export namespace MessageCreationStepDetails {
export interface MessageCreation {
/**
* The ID of the message that was created by this run step.
*/
message_id: string;
}
}
/**
* Represents a step in execution of a run.
*/
export interface RunStep {
/**
* The identifier of the run step, which can be referenced in API endpoints.
*/
id: string;
/**
* The ID of the
* [assistant](https://platform.openai.com/docs/api-reference/assistants)
* associated with the run step.
*/
assistant_id: string;
/**
* The Unix timestamp (in seconds) for when the run step was cancelled.
*/
cancelled_at: number | null;
/**
* The Unix timestamp (in seconds) for when the run step completed.
*/
completed_at: number | null;
/**
* The Unix timestamp (in seconds) for when the run step was created.
*/
created_at: number;
/**
* The Unix timestamp (in seconds) for when the run step expired. A step is
* considered expired if the parent run is expired.
*/
expired_at: number | null;
/**
* The Unix timestamp (in seconds) for when the run step failed.
*/
failed_at: number | null;
/**
* The last error associated with this run step. Will be `null` if there are no
* errors.
*/
last_error: RunStep.LastError | null;
/**
* 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. Keys
* can be a maximum of 64 characters long and values can be a maxium of 512
* characters long.
*/
metadata: unknown | null;
/**
* The object type, which is always `thread.run.step`.
*/
object: "thread.run.step";
/**
* The ID of the [run](https://platform.openai.com/docs/api-reference/runs) that
* this run step is a part of.
*/
run_id: string;
/**
* The status of the run step, which can be either `in_progress`, `cancelled`,
* `failed`, `completed`, or `expired`.
*/
status: "in_progress" | "cancelled" | "failed" | "completed" | "expired";
/**
* The details of the run step.
*/
step_details: MessageCreationStepDetails | ToolCallsStepDetails;
/**
* The ID of the [thread](https://platform.openai.com/docs/api-reference/threads)
* that was run.
*/
thread_id: string;
/**
* The type of run step, which can be either `message_creation` or `tool_calls`.
*/
type: "message_creation" | "tool_calls";
/**
* Usage statistics related to the run step. This value will be `null` while the
* run step's status is `in_progress`.
*/
usage: RunStep.Usage | null;
}
export namespace RunStep {
/**
* The last error associated with this run step. Will be `null` if there are no
* errors.
*/
export interface LastError {
/**
* One of `server_error` or `rate_limit_exceeded`.
*/
code: "server_error" | "rate_limit_exceeded";
/**
* A human-readable description of the error.
*/
message: string;
}
/**
* Usage statistics related to the run step. This value will be `null` while the
* run step's status is `in_progress`.
*/
export interface Usage {
/**
* Number of completion tokens used over the course of the run step.
*/
completion_tokens: number;
/**
* Number of prompt tokens used over the course of the run step.
*/
prompt_tokens: number;
/**
* Total number of tokens used (prompt + completion).
*/
total_tokens: number;
}
}
/**
* The delta containing the fields that have changed on the run step.
*/
export interface RunStepDelta {
/**
* The details of the run step.
*/
step_details?: RunStepDeltaMessageDelta | ToolCallDeltaObject;
}
/**
* Represents a run step delta i.e. any changed fields on a run step during
* streaming.
*/
export interface RunStepDeltaEvent {
/**
* The identifier of the run step, which can be referenced in API endpoints.
*/
id: string;
/**
* The delta containing the fields that have changed on the run step.
*/
delta: RunStepDelta;
/**
* The object type, which is always `thread.run.step.delta`.
*/
object: "thread.run.step.delta";
}
/**
* Details of the message creation by the run step.
*/
export interface RunStepDeltaMessageDelta {
/**
* Always `message_creation`.
*/
type: "message_creation";
message_creation?: RunStepDeltaMessageDelta.MessageCreation;
}
export namespace RunStepDeltaMessageDelta {
export interface MessageCreation {
/**
* The ID of the message that was created by this run step.
*/
message_id?: string;
}
}
export type RunStepInclude =
"step_details.tool_calls[*].file_search.results[*].content";
/**
* Details of the Code Interpreter tool call the run step was involved in.
*/
export type ToolCall =
| CodeInterpreterToolCall
| FileSearchToolCall
| FunctionToolCall;
/**
* Details of the Code Interpreter tool call the run step was involved in.
*/
export type ToolCallDelta =
| CodeInterpreterToolCallDelta
| FileSearchToolCallDelta
| FunctionToolCallDelta;
/**
* Details of the tool call.
*/
export interface ToolCallDeltaObject {
/**
* Always `tool_calls`.
*/
type: "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`.
*/
tool_calls?: Array<ToolCallDelta>;
}
/**
* Details of the tool call.
*/
export interface ToolCallsStepDetails {
/**
* 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`.
*/
tool_calls: Array<ToolCall>;
/**
* Always `tool_calls`.
*/
type: "tool_calls";
}
export interface StepRetrieveParams {
/**
* 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?: Array<RunStepInclude>;
}
export interface StepListParams extends CursorPageParams {
/**
* 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,
* ending with obj_foo, your subsequent call can include before=obj_foo in order to
* fetch the previous page of the list.
*/
before?: string;
/**
* 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?: Array<RunStepInclude>;
/**
* Sort order by the `created_at` timestamp of the objects. `asc` for ascending
* order and `desc` for descending order.
*/
order?: "asc" | "desc";
}
export namespace Steps {
export type CodeInterpreterLogs = StepsAPI.CodeInterpreterLogs;
export type CodeInterpreterOutputImage = StepsAPI.CodeInterpreterOutputImage;
export type CodeInterpreterToolCall = StepsAPI.CodeInterpreterToolCall;
export type CodeInterpreterToolCallDelta =
StepsAPI.CodeInterpreterToolCallDelta;
export type FileSearchToolCall = StepsAPI.FileSearchToolCall;
export type FileSearchToolCallDelta = StepsAPI.FileSearchToolCallDelta;
export type FunctionToolCall = StepsAPI.FunctionToolCall;
export type FunctionToolCallDelta = StepsAPI.FunctionToolCallDelta;
export type MessageCreationStepDetails = StepsAPI.MessageCreationStepDetails;
export type RunStep = StepsAPI.RunStep;
export type RunStepDelta = StepsAPI.RunStepDelta;
export type RunStepDeltaEvent = StepsAPI.RunStepDeltaEvent;
export type RunStepDeltaMessageDelta = StepsAPI.RunStepDeltaMessageDelta;
export type RunStepInclude = StepsAPI.RunStepInclude;
export type ToolCall = StepsAPI.ToolCall;
export type ToolCallDelta = StepsAPI.ToolCallDelta;
export type ToolCallDeltaObject = StepsAPI.ToolCallDeltaObject;
export type ToolCallsStepDetails = StepsAPI.ToolCallsStepDetails;
export import RunStepsPage = StepsAPI.RunStepsPage;
export type StepRetrieveParams = StepsAPI.StepRetrieveParams;
export type StepListParams = StepsAPI.StepListParams;
}