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/fine_tuning.ex
defmodule OpenaiEx.FineTuning.Job do
@moduledoc """
This module provides an implementation of the OpenAI fine-tuning job API. The API reference can be found at https://platform.openai.com/docs/api-reference/fine-tuning.
## API Fields
The following fields can be used as parameters for various endpoints of the API:
- `:model`
- `:training_file`
- `:hyperparameters`
- `:suffix`
- `:validation_file`
- `:after`
- `:limit`
"""
@api_fields [
:model,
:hyperparameters,
:suffix,
:training_file,
:validation_file,
:after,
:limit
]
defp ep_url(fine_tuning_job_id \\ nil, action \\ nil) do
"/fine_tuning/jobs" <>
if(is_nil(fine_tuning_job_id), do: "", else: "/#{fine_tuning_job_id}") <>
if(is_nil(action), do: "", else: "/#{action}")
end
@doc """
Creates a new fine-tuning job request with the given arguments.
## Arguments
- `args`: A list of key-value pairs, or a map, representing the fields of the fine-tuning job request.
## Returns
A map containing the fields of the fine-tuning job request.
"""
def new(args = [_ | _]) do
args |> Enum.into(%{}) |> new()
end
def new(args = %{}) do
args |> Map.take(@api_fields)
end
@doc """
Calls the fine-tuning job creation endpoint.
https://platform.openai.com/docs/api-reference/fine-tuning/create
"""
def create(openai = %OpenaiEx{}, finetuning = %{}) do
openai |> OpenaiEx.Http.post(ep_url(), json: finetuning)
end
@doc """
Calls the fine-tuning job list endpoint.
https://platform.openai.com/docs/api-reference/fine-tuning/list
"""
def list(openai = %OpenaiEx{}, params = %{} \\ %{}) do
openai |> OpenaiEx.Http.get(ep_url(), params |> Map.take(@api_fields))
end
@doc """
Calls the fine-tuning job retrieve endpoint.
https://platform.openai.com/docs/api-reference/fine-tuning/retrieve
"""
def retrieve(openai = %OpenaiEx{}, fine_tuning_job_id: fine_tuning_job_id) do
openai |> OpenaiEx.Http.get(ep_url(fine_tuning_job_id))
end
@doc """
Calls the fine-tuning job cancel endpoint.
https://platform.openai.com/docs/api-reference/fine-tuning/cancel
"""
def cancel(openai = %OpenaiEx{}, fine_tuning_job_id: fine_tuning_job_id) do
openai |> OpenaiEx.Http.post(ep_url(fine_tuning_job_id, "cancel"))
end
@doc """
Calls the fine-tuning job list events endpoint.
https://platform.openai.com/docs/api-reference/fine-tuning/events
"""
def list_events(openai = %OpenaiEx{}, fine_tuning_job_id: fine_tuning_job_id) do
openai |> OpenaiEx.Http.get(ep_url(fine_tuning_job_id, "events"))
end
end