Packages
openai_ex
0.8.0
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/batches.ex
defmodule OpenaiEx.Batches do
@moduledoc """
This module provides an implementation of the OpenAI Batch API. The API reference can be found at https://platform.openai.com/docs/api-reference/batch.
"""
alias OpenaiEx.Http
@api_fields [
:input_file_id,
:completion_window,
:endpoint,
:metadata,
:after,
:limit
]
defp ep_url(batch_id \\ nil, action \\ nil) do
"/batches" <>
if(is_nil(batch_id), do: "", else: "/#{batch_id}") <>
if(is_nil(action), do: "", else: "/#{action}")
end
@doc """
Creates a new batch request with the given arguments.
## Arguments
- `args`: A list of key-value pairs, or a map, representing the fields of the batch request.
## Returns
A map containing the fields of the batch request.
"""
def new(args = [_ | _]) do
args |> Enum.into(%{}) |> new()
end
def new(args = %{}) do
args |> Map.take(@api_fields)
end
@doc """
Creates and executes a batch from an uploaded file of requests.
https://platform.openai.com/docs/api-reference/batch/create
"""
def create!(openai = %OpenaiEx{}, batch = %{}) do
openai |> create(batch) |> Http.bang_it!()
end
def create(openai = %OpenaiEx{}, batch = %{}) do
openai |> Http.post(ep_url(), json: batch)
end
@doc """
Retrieves a batch.
https://platform.openai.com/docs/api-reference/batch/retrieve
"""
def retrieve!(openai = %OpenaiEx{}, batch_id: batch_id) do
openai |> retrieve(batch_id: batch_id) |> Http.bang_it!()
end
def retrieve(openai = %OpenaiEx{}, batch_id: batch_id) do
openai |> Http.get(ep_url(batch_id))
end
@doc """
Cancels an in-progress batch.
https://platform.openai.com/docs/api-reference/batch/cancel
"""
def cancel!(openai = %OpenaiEx{}, batch_id: batch_id) do
openai |> cancel(batch_id: batch_id) |> Http.bang_it!()
end
def cancel(openai = %OpenaiEx{}, batch_id: batch_id) do
openai |> Http.post(ep_url(batch_id, "cancel"))
end
@doc """
Lists your organization's batches.
https://platform.openai.com/docs/api-reference/batch/list
"""
def list!(openai = %OpenaiEx{}, opts \\ []) do
openai |> list(opts) |> Http.bang_it!()
end
def list(openai = %OpenaiEx{}, opts \\ []) do
params = opts |> Enum.into(%{}) |> Map.take([:after, :limit])
openai |> Http.get(ep_url(), params)
end
end