resources/beta/vector-stores/vector-stores.ts (188 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 VectorStoresAPI from "./vector-stores.ts";
import * as FileBatchesAPI from "./file-batches.ts";
import * as FilesAPI from "./files.ts";
import { CursorPage, type CursorPageParams } from "../../../pagination.ts";
export class VectorStores extends APIResource {
files: FilesAPI.Files = new FilesAPI.Files(this._client);
fileBatches: FileBatchesAPI.FileBatches = new FileBatchesAPI.FileBatches(
this._client,
);
/**
* Create a vector store.
*/
create(
body: VectorStoreCreateParams,
options?: Core.RequestOptions,
): Core.APIPromise<VectorStore> {
return this._client.post("/vector_stores", {
body,
...options,
headers: { "OpenAI-Beta": "assistants=v2", ...options?.headers },
});
}
/**
* Retrieves a vector store.
*/
retrieve(
vectorStoreId: string,
options?: Core.RequestOptions,
): Core.APIPromise<VectorStore> {
return this._client.get(`/vector_stores/${vectorStoreId}`, {
...options,
headers: { "OpenAI-Beta": "assistants=v2", ...options?.headers },
});
}
/**
* Modifies a vector store.
*/
update(
vectorStoreId: string,
body: VectorStoreUpdateParams,
options?: Core.RequestOptions,
): Core.APIPromise<VectorStore> {
return this._client.post(`/vector_stores/${vectorStoreId}`, {
body,
...options,
headers: { "OpenAI-Beta": "assistants=v2", ...options?.headers },
});
}
/**
* Returns a list of vector stores.
*/
list(
query?: VectorStoreListParams,
options?: Core.RequestOptions,
): Core.PagePromise<VectorStoresPage, VectorStore>;
list(
options?: Core.RequestOptions,
): Core.PagePromise<VectorStoresPage, VectorStore>;
list(
query: VectorStoreListParams | Core.RequestOptions = {},
options?: Core.RequestOptions,
): Core.PagePromise<VectorStoresPage, VectorStore> {
if (isRequestOptions(query)) {
return this.list({}, query);
}
return this._client.getAPIList("/vector_stores", VectorStoresPage, {
query,
...options,
headers: { "OpenAI-Beta": "assistants=v2", ...options?.headers },
});
}
/**
* Delete a vector store.
*/
del(
vectorStoreId: string,
options?: Core.RequestOptions,
): Core.APIPromise<VectorStoreDeleted> {
return this._client.delete(`/vector_stores/${vectorStoreId}`, {
...options,
headers: { "OpenAI-Beta": "assistants=v2", ...options?.headers },
});
}
}
export class VectorStoresPage extends CursorPage<VectorStore> {}
/**
* The default strategy. This strategy currently uses a `max_chunk_size_tokens` of
* `800` and `chunk_overlap_tokens` of `400`.
*/
export interface AutoFileChunkingStrategyParam {
/**
* Always `auto`.
*/
type: "auto";
}
/**
* The strategy used to chunk the file.
*/
export type FileChunkingStrategy =
| StaticFileChunkingStrategyObject
| OtherFileChunkingStrategyObject;
/**
* The chunking strategy used to chunk the file(s). If not set, will use the `auto`
* strategy. Only applicable if `file_ids` is non-empty.
*/
export type FileChunkingStrategyParam =
| AutoFileChunkingStrategyParam
| StaticFileChunkingStrategyParam;
/**
* This is returned when the chunking strategy is unknown. Typically, this is
* because the file was indexed before the `chunking_strategy` concept was
* introduced in the API.
*/
export interface OtherFileChunkingStrategyObject {
/**
* Always `other`.
*/
type: "other";
}
export interface StaticFileChunkingStrategy {
/**
* The number of tokens that overlap between chunks. The default value is `400`.
*
* Note that the overlap must not exceed half of `max_chunk_size_tokens`.
*/
chunk_overlap_tokens: number;
/**
* The maximum number of tokens in each chunk. The default value is `800`. The
* minimum value is `100` and the maximum value is `4096`.
*/
max_chunk_size_tokens: number;
}
export interface StaticFileChunkingStrategyObject {
static: StaticFileChunkingStrategy;
/**
* Always `static`.
*/
type: "static";
}
export interface StaticFileChunkingStrategyParam {
static: StaticFileChunkingStrategy;
/**
* Always `static`.
*/
type: "static";
}
/**
* A vector store is a collection of processed files can be used by the
* `file_search` tool.
*/
export interface VectorStore {
/**
* The identifier, which can be referenced in API endpoints.
*/
id: string;
/**
* The Unix timestamp (in seconds) for when the vector store was created.
*/
created_at: number;
file_counts: VectorStore.FileCounts;
/**
* The Unix timestamp (in seconds) for when the vector store was last active.
*/
last_active_at: number | 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 name of the vector store.
*/
name: string;
/**
* The object type, which is always `vector_store`.
*/
object: "vector_store";
/**
* The status of the vector store, which can be either `expired`, `in_progress`, or
* `completed`. A status of `completed` indicates that the vector store is ready
* for use.
*/
status: "expired" | "in_progress" | "completed";
/**
* The total number of bytes used by the files in the vector store.
*/
usage_bytes: number;
/**
* The expiration policy for a vector store.
*/
expires_after?: VectorStore.ExpiresAfter;
/**
* The Unix timestamp (in seconds) for when the vector store will expire.
*/
expires_at?: number | null;
}
export namespace VectorStore {
export interface FileCounts {
/**
* The number of files that were cancelled.
*/
cancelled: number;
/**
* The number of files that have been successfully processed.
*/
completed: number;
/**
* The number of files that have failed to process.
*/
failed: number;
/**
* The number of files that are currently being processed.
*/
in_progress: number;
/**
* The total number of files.
*/
total: number;
}
/**
* The expiration policy for a vector store.
*/
export interface ExpiresAfter {
/**
* Anchor timestamp after which the expiration policy applies. Supported anchors:
* `last_active_at`.
*/
anchor: "last_active_at";
/**
* The number of days after the anchor time that the vector store will expire.
*/
days: number;
}
}
export interface VectorStoreDeleted {
id: string;
deleted: boolean;
object: "vector_store.deleted";
}
export interface VectorStoreCreateParams {
/**
* The chunking strategy used to chunk the file(s). If not set, will use the `auto`
* strategy. Only applicable if `file_ids` is non-empty.
*/
chunking_strategy?: FileChunkingStrategyParam;
/**
* The expiration policy for a vector store.
*/
expires_after?: VectorStoreCreateParams.ExpiresAfter;
/**
* A list of [File](https://platform.openai.com/docs/api-reference/files) IDs that
* the vector store should use. Useful for tools like `file_search` that can access
* files.
*/
file_ids?: Array<string>;
/**
* 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 name of the vector store.
*/
name?: string;
}
export namespace VectorStoreCreateParams {
/**
* The expiration policy for a vector store.
*/
export interface ExpiresAfter {
/**
* Anchor timestamp after which the expiration policy applies. Supported anchors:
* `last_active_at`.
*/
anchor: "last_active_at";
/**
* The number of days after the anchor time that the vector store will expire.
*/
days: number;
}
}
export interface VectorStoreUpdateParams {
/**
* The expiration policy for a vector store.
*/
expires_after?: VectorStoreUpdateParams.ExpiresAfter | 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 name of the vector store.
*/
name?: string | null;
}
export namespace VectorStoreUpdateParams {
/**
* The expiration policy for a vector store.
*/
export interface ExpiresAfter {
/**
* Anchor timestamp after which the expiration policy applies. Supported anchors:
* `last_active_at`.
*/
anchor: "last_active_at";
/**
* The number of days after the anchor time that the vector store will expire.
*/
days: number;
}
}
export interface VectorStoreListParams 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;
/**
* Sort order by the `created_at` timestamp of the objects. `asc` for ascending
* order and `desc` for descending order.
*/
order?: "asc" | "desc";
}
export namespace VectorStores {
export type AutoFileChunkingStrategyParam =
VectorStoresAPI.AutoFileChunkingStrategyParam;
export type FileChunkingStrategy = VectorStoresAPI.FileChunkingStrategy;
export type FileChunkingStrategyParam =
VectorStoresAPI.FileChunkingStrategyParam;
export type OtherFileChunkingStrategyObject =
VectorStoresAPI.OtherFileChunkingStrategyObject;
export type StaticFileChunkingStrategy =
VectorStoresAPI.StaticFileChunkingStrategy;
export type StaticFileChunkingStrategyObject =
VectorStoresAPI.StaticFileChunkingStrategyObject;
export type StaticFileChunkingStrategyParam =
VectorStoresAPI.StaticFileChunkingStrategyParam;
export type VectorStore = VectorStoresAPI.VectorStore;
export type VectorStoreDeleted = VectorStoresAPI.VectorStoreDeleted;
export import VectorStoresPage = VectorStoresAPI.VectorStoresPage;
export type VectorStoreCreateParams = VectorStoresAPI.VectorStoreCreateParams;
export type VectorStoreUpdateParams = VectorStoresAPI.VectorStoreUpdateParams;
export type VectorStoreListParams = VectorStoresAPI.VectorStoreListParams;
export import Files = FilesAPI.Files;
export type VectorStoreFile = FilesAPI.VectorStoreFile;
export type VectorStoreFileDeleted = FilesAPI.VectorStoreFileDeleted;
export import VectorStoreFilesPage = FilesAPI.VectorStoreFilesPage;
export type FileCreateParams = FilesAPI.FileCreateParams;
export type FileListParams = FilesAPI.FileListParams;
export import FileBatches = FileBatchesAPI.FileBatches;
export type VectorStoreFileBatch = FileBatchesAPI.VectorStoreFileBatch;
export type FileBatchCreateParams = FileBatchesAPI.FileBatchCreateParams;
export type FileBatchListFilesParams =
FileBatchesAPI.FileBatchListFilesParams;
}