lib/openai/moderations.ex

defmodule OpenAI.Moderations do
  @moduledoc """
  Given a input text, outputs if the model classifies it as violating OpenAI's content policy.

  Related guide: [Moderations](https://platform.openai.com/docs/guides/moderation)

  https://platform.openai.com/docs/api-reference/moderations
  """

  alias OpenAI.Client

  @type create_params :: %{
          required(:input) => String.t() | [String.t()],
          optional(:model) => String.t()
        }

  @doc """
  Classifies if text violates OpenAI's Content Policy
  """
  @spec create(Client.t(), create_params(), Keyword.t()) :: Client.result()
  def create(client, params, opts \\ []) do
    client
    |> Client.post("/v1/moderations", params, opts)
    |> Client.handle_response(opts)
  end
end