Current section

Files

Jump to
oapi_open_ai lib operations vector_stores.ex
Raw

lib/operations/vector_stores.ex

defmodule OpenAi.VectorStores do
@moduledoc """
Provides API endpoints related to vector stores
"""
@default_client OpenAi.Client
@doc """
Cancel a vector store file batch. This attempts to cancel the processing of files in this batch as soon as possible.
"""
@spec cancel_vector_store_file_batch(String.t(), String.t(), keyword) ::
{:ok, OpenAi.VectorStore.File.Batch.t()} | :error
def cancel_vector_store_file_batch(vector_store_id, batch_id, opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
args: [vector_store_id: vector_store_id, batch_id: batch_id],
call: {OpenAi.VectorStores, :cancel_vector_store_file_batch},
url: "/vector_stores/#{vector_store_id}/file_batches/#{batch_id}/cancel",
method: :post,
response: [{200, {OpenAi.VectorStore.File.Batch, :t}}],
opts: opts
})
end
@doc """
Create a vector store.
"""
@spec create_vector_store(OpenAi.VectorStore.CreateRequest.t(), keyword) ::
{:ok, OpenAi.VectorStore.t()} | :error
def create_vector_store(body, opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
args: [body: body],
call: {OpenAi.VectorStores, :create_vector_store},
url: "/vector_stores",
body: body,
method: :post,
request: [{"application/json", {OpenAi.VectorStore.CreateRequest, :t}}],
response: [{200, {OpenAi.VectorStore, :t}}],
opts: opts
})
end
@doc """
Create a vector store file by attaching a [File](/docs/api-reference/files) to a [vector store](/docs/api-reference/vector-stores/object).
"""
@spec create_vector_store_file(String.t(), OpenAi.VectorStore.File.CreateRequest.t(), keyword) ::
{:ok, OpenAi.VectorStore.File.t()} | :error
def create_vector_store_file(vector_store_id, body, opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
args: [vector_store_id: vector_store_id, body: body],
call: {OpenAi.VectorStores, :create_vector_store_file},
url: "/vector_stores/#{vector_store_id}/files",
body: body,
method: :post,
request: [{"application/json", {OpenAi.VectorStore.File.CreateRequest, :t}}],
response: [{200, {OpenAi.VectorStore.File, :t}}],
opts: opts
})
end
@doc """
Create a vector store file batch.
"""
@spec create_vector_store_file_batch(
String.t(),
OpenAi.VectorStore.File.Batch.CreateRequest.t(),
keyword
) :: {:ok, OpenAi.VectorStore.File.Batch.t()} | :error
def create_vector_store_file_batch(vector_store_id, body, opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
args: [vector_store_id: vector_store_id, body: body],
call: {OpenAi.VectorStores, :create_vector_store_file_batch},
url: "/vector_stores/#{vector_store_id}/file_batches",
body: body,
method: :post,
request: [{"application/json", {OpenAi.VectorStore.File.Batch.CreateRequest, :t}}],
response: [{200, {OpenAi.VectorStore.File.Batch, :t}}],
opts: opts
})
end
@doc """
Delete a vector store.
"""
@spec delete_vector_store(String.t(), keyword) ::
{:ok, OpenAi.VectorStore.DeleteResponse.t()} | :error
def delete_vector_store(vector_store_id, opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
args: [vector_store_id: vector_store_id],
call: {OpenAi.VectorStores, :delete_vector_store},
url: "/vector_stores/#{vector_store_id}",
method: :delete,
response: [{200, {OpenAi.VectorStore.DeleteResponse, :t}}],
opts: opts
})
end
@doc """
Delete a vector store file. This will remove the file from the vector store but the file itself will not be deleted. To delete the file, use the [delete file](/docs/api-reference/files/delete) endpoint.
"""
@spec delete_vector_store_file(String.t(), String.t(), keyword) ::
{:ok, OpenAi.VectorStore.File.DeleteResponse.t()} | :error
def delete_vector_store_file(vector_store_id, file_id, opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
args: [vector_store_id: vector_store_id, file_id: file_id],
call: {OpenAi.VectorStores, :delete_vector_store_file},
url: "/vector_stores/#{vector_store_id}/files/#{file_id}",
method: :delete,
response: [{200, {OpenAi.VectorStore.File.DeleteResponse, :t}}],
opts: opts
})
end
@doc """
Retrieves a vector store.
"""
@spec get_vector_store(String.t(), keyword) :: {:ok, OpenAi.VectorStore.t()} | :error
def get_vector_store(vector_store_id, opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
args: [vector_store_id: vector_store_id],
call: {OpenAi.VectorStores, :get_vector_store},
url: "/vector_stores/#{vector_store_id}",
method: :get,
response: [{200, {OpenAi.VectorStore, :t}}],
opts: opts
})
end
@doc """
Retrieves a vector store file.
"""
@spec get_vector_store_file(String.t(), String.t(), keyword) ::
{:ok, OpenAi.VectorStore.File.t()} | :error
def get_vector_store_file(vector_store_id, file_id, opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
args: [vector_store_id: vector_store_id, file_id: file_id],
call: {OpenAi.VectorStores, :get_vector_store_file},
url: "/vector_stores/#{vector_store_id}/files/#{file_id}",
method: :get,
response: [{200, {OpenAi.VectorStore.File, :t}}],
opts: opts
})
end
@doc """
Retrieves a vector store file batch.
"""
@spec get_vector_store_file_batch(String.t(), String.t(), keyword) ::
{:ok, OpenAi.VectorStore.File.Batch.t()} | :error
def get_vector_store_file_batch(vector_store_id, batch_id, opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
args: [vector_store_id: vector_store_id, batch_id: batch_id],
call: {OpenAi.VectorStores, :get_vector_store_file_batch},
url: "/vector_stores/#{vector_store_id}/file_batches/#{batch_id}",
method: :get,
response: [{200, {OpenAi.VectorStore.File.Batch, :t}}],
opts: opts
})
end
@doc """
Returns a list of vector store files in a batch.
## Options
* `limit`: A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20.
* `order`: Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and `desc` for descending order.
* `after`: 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.
* `before`: 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.
* `filter`: Filter by file status. One of `in_progress`, `completed`, `failed`, `cancelled`.
"""
@spec list_files_in_vector_store_batch(String.t(), String.t(), keyword) ::
{:ok, OpenAi.VectorStore.File.ListResponse.t()} | :error
def list_files_in_vector_store_batch(vector_store_id, batch_id, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:after, :before, :filter, :limit, :order])
client.request(%{
args: [vector_store_id: vector_store_id, batch_id: batch_id],
call: {OpenAi.VectorStores, :list_files_in_vector_store_batch},
url: "/vector_stores/#{vector_store_id}/file_batches/#{batch_id}/files",
method: :get,
query: query,
response: [{200, {OpenAi.VectorStore.File.ListResponse, :t}}],
opts: opts
})
end
@doc """
Returns a list of vector store files.
## Options
* `limit`: A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20.
* `order`: Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and `desc` for descending order.
* `after`: 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.
* `before`: 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.
* `filter`: Filter by file status. One of `in_progress`, `completed`, `failed`, `cancelled`.
"""
@spec list_vector_store_files(String.t(), keyword) ::
{:ok, OpenAi.VectorStore.File.ListResponse.t()} | :error
def list_vector_store_files(vector_store_id, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:after, :before, :filter, :limit, :order])
client.request(%{
args: [vector_store_id: vector_store_id],
call: {OpenAi.VectorStores, :list_vector_store_files},
url: "/vector_stores/#{vector_store_id}/files",
method: :get,
query: query,
response: [{200, {OpenAi.VectorStore.File.ListResponse, :t}}],
opts: opts
})
end
@doc """
Returns a list of vector stores.
## Options
* `limit`: A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20.
* `order`: Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and `desc` for descending order.
* `after`: 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.
* `before`: 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.
"""
@spec list_vector_stores(keyword) :: {:ok, OpenAi.VectorStore.ListResponse.t()} | :error
def list_vector_stores(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:after, :before, :limit, :order])
client.request(%{
args: [],
call: {OpenAi.VectorStores, :list_vector_stores},
url: "/vector_stores",
method: :get,
query: query,
response: [{200, {OpenAi.VectorStore.ListResponse, :t}}],
opts: opts
})
end
@doc """
Modifies a vector store.
"""
@spec modify_vector_store(String.t(), OpenAi.VectorStore.UpdateRequest.t(), keyword) ::
{:ok, OpenAi.VectorStore.t()} | :error
def modify_vector_store(vector_store_id, body, opts \\ []) do
client = opts[:client] || @default_client
client.request(%{
args: [vector_store_id: vector_store_id, body: body],
call: {OpenAi.VectorStores, :modify_vector_store},
url: "/vector_stores/#{vector_store_id}",
body: body,
method: :post,
request: [{"application/json", {OpenAi.VectorStore.UpdateRequest, :t}}],
response: [{200, {OpenAi.VectorStore, :t}}],
opts: opts
})
end
end