Packages
openai_ex
0.5.5
0.9.21
0.9.20
0.9.19
0.9.18
0.9.17
0.9.16
0.9.15
0.9.14
0.9.13
0.9.12
0.9.11
0.9.10
0.9.9
0.9.8
0.9.7
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.0
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.2
0.4.1
0.4.0
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Community maintained Elixir library for OpenAI API
Current section
Files
Jump to
Current section
Files
lib/openai_ex/beta/assistant_file.ex
defmodule OpenaiEx.Beta.Assistant.File do
@moduledoc """
This module provides an implementation of the OpenAI assistants files API. The API reference can be found at https://platform.openai.com/docs/api-reference/assistants.
## API Fields
The following fields can be used as parameters for the assistant files API:
- `:assistant_id`
- `:file_id`
"""
@api_fields [
:assistant_id,
:file_id
]
defp ep_url(assistant_id, file_id \\ nil) do
"/assistants/#{assistant_id}/files" <> if is_nil(file_id), do: "", else: "/#{file_id}"
end
@doc """
Creates a new assistant file request with the given arguments.
## Arguments
- `args`: A list of key-value pairs, or a map, representing the fields of the assistant file request.
## Returns
A map containing the fields of the assistant file request.
"""
def new(args = [_ | _]) do
args |> Enum.into(%{}) |> new()
end
def new(args = %{assistant_id: assistant_id}) do
%{
assistand_id: assistant_id
}
|> Map.merge(args)
|> Map.take(@api_fields)
end
@doc """
Calls the assistant file create endpoint.
## Arguments
- `openai`: The OpenAI configuration.
- `params`: A map containing the fields of the assistant file create request.
## Returns
A map containing the fields of the created assistant file object.
https://platform.openai.com/docs/api-reference/assistants/createAssistantFile
"""
def create(openai = %OpenaiEx{}, _params = %{assistant_id: assistant_id, file_id: file_id}) do
openai
|> OpenaiEx.with_assistants_beta()
|> OpenaiEx.Http.post(ep_url(assistant_id),
json: %{file_id: file_id} |> Map.take(@api_fields)
)
end
@doc """
Calls the assistant file retrieve endpoint.
## Arguments
- `openai`: The OpenAI configuration.
- `params`: A map containing the fields of the assistant file retrieve request.
## Returns
A map containing the fields of the specificied assistant file object.
https://platform.openai.com/docs/api-reference/assistants/getAssistantFile
"""
def retrieve(openai = %OpenaiEx{}, _params = %{assistant_id: assistant_id, file_id: file_id}) do
openai
|> OpenaiEx.with_assistants_beta()
|> OpenaiEx.Http.get(ep_url(assistant_id, file_id))
end
@doc """
Calls the assistant file delete endpoint.
## Arguments
- `openai`: The OpenAI configuration.
- `params`: A map containing the fields of the assistant file delete request.
## Returns
A map containing the fields of the assistant file delete response.
https://platform.openai.com/docs/api-reference/assistants/deleteAssistantFile
"""
def delete(openai = %OpenaiEx{}, _params = %{assistant_id: assistant_id, file_id: file_id}) do
openai
|> OpenaiEx.with_assistants_beta()
|> OpenaiEx.Http.delete(ep_url(assistant_id, file_id))
end
@doc """
Lists the files that belong to the specified assistant.
https://platform.openai.com/docs/api-reference/assistants/listAssistantFiles
"""
def new_list(args = [_ | _]) do
args |> Enum.into(%{}) |> new_list()
end
def new_list(args = %{assistant_id: _}) do
args |> Map.take([:assistant_id | OpenaiEx.list_query_fields()])
end
def list(openai = %OpenaiEx{}, params = %{assistant_id: assistant_id}) do
openai
|> OpenaiEx.with_assistants_beta()
|> OpenaiEx.Http.get(ep_url(assistant_id), params |> Map.take(OpenaiEx.list_query_fields()))
end
end