Packages
openai_ex
0.1.7
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/image.ex
defmodule OpenaiEx.Image do
@moduledoc """
This module provides an implementation of the OpenAI images API. The API reference can be found at https://platform.openai.com/docs/api-reference/images.
## API Fields
The following fields can be used as parameters when creating a new image:
- `:prompt`
- `:n`
- `:size`
- `:response_format`
- `:user`
"""
@api_fields [
:prompt,
:n,
:size,
:response_format,
:user
]
alias OpenaiEx.Image
@doc """
Creates a new image request with the given arguments.
## Arguments
- `args`: A list of key-value pairs, or a map, representing the fields of the image request.
## Returns
A map containing the fields of the image request.
The `:prompt` field is required.
Example usage:
iex> _request = OpenaiEx.Image.new(prompt: "This is a test")
%{prompt: "This is a test"}
iex> _request = OpenaiEx.Image.new(%{prompt: "This is a test"})
%{prompt: "This is a test"}
"""
def new(args = [_ | _]) do
args |> Enum.into(%{}) |> new()
end
def new(args = %{prompt: prompt}) do
%{
prompt: prompt
}
|> Map.merge(args)
|> Map.take(@api_fields)
end
@doc """
Calls the image generation endpoint.
## Arguments
- `openai`: The OpenAI configuration to use.
- `image`: The image request to send.
## Returns
A map containing the response from the OpenAI API.
See the [OpenAI API Create Image reference](https://platform.openai.com/docs/api-reference/images/create) for more information.
"""
def create(openai = %OpenaiEx{}, image = %{}) do
openai |> OpenaiEx.post("/images/generations", json: image)
end
@doc """
Calls the image edit endpoint.
## Arguments
- `openai`: The OpenAI configuration to use.
- `image_edit`: The image edit request to send.
## Returns
A map containing the response from the OpenAI API.
See the [OpenAI API Create Image Edit reference](https://platform.openai.com/docs/api-reference/images/create-edit) for more information.
"""
def create_edit(openai = %OpenaiEx{}, image_edit = %{}) do
openai
|> OpenaiEx.post("/images/edits",
multipart: image_edit |> OpenaiEx.to_multi_part_form_data(Image.Edit.file_fields())
)
end
@doc """
Calls the image variation endpoint.
## Arguments
- `openai`: The OpenAI configuration to use.
- `image_variation`: The image variation request to send.
## Returns
A map containing the response from the OpenAI API.
See the [OpenAI API Create Image Variation reference](https://platform.openai.com/docs/api-reference/images/create-variation) for more information.
"""
def create_variation(openai = %OpenaiEx{}, image_variation = %{}) do
openai
|> OpenaiEx.post("/images/variations",
multipart:
image_variation |> OpenaiEx.to_multi_part_form_data(Image.Variation.file_fields())
)
end
end