Current section

Files

Jump to
openai_ex lib openai_ex moderation.ex
Raw

lib/openai_ex/moderation.ex

defmodule OpenaiEx.Moderation do
@moduledoc """
This module provides an implementation of the OpenAI moderation API. The API reference can be found at https://platform.openai.com/docs/api-reference/moderations.
## API Fields
The following fields can be used as parameters when creating a new moderation:
- `:input`
- `:model`
"""
@api_fields [
:input,
:model
]
@doc """
Creates a new moderation request with the given arguments.
## Arguments
- `args`: A list of key-value pairs, or a map, representing the fields of the moderation request.
## Returns
A map containing the fields of the moderation request.
The `:input` field is required.
Example usage:
iex> OpenaiEx.Moderation.new(input: "This is a test")
%{
input: "This is a test"
}
iex> OpenaiEx.Moderation.new(%{input: "This is a test"})
%{
input: "This is a test"
}
"""
def new(args = [_ | _]) do
args |> Enum.into(%{}) |> new()
end
def new(args = %{input: input}) do
%{
input: input
}
|> Map.merge(args)
|> Map.take(@api_fields)
end
@doc """
Calls the moderation endpoint.
## Arguments
- `openai`: The OpenAI configuration to use.
- `moderation`: The moderation request to send.
## Returns
A map containing the fields of the moderation response.
"""
def create(openai = %OpenaiEx{}, moderation) do
openai
|> OpenaiEx.Http.post("/moderations", json: moderation |> Map.take(@api_fields))
end
end