lib/requests/embedding_request.ex

defmodule ExOpenAi.EmbeddingRequest do
  @moduledoc """
  Represents an embedding request to the OpenAI API.

  - [OpenAI API Docs](https://platform.openai.com/docs/api-reference/embeddings)
  """

  use ExOpenAi.Request

  alias ExOpenAi.Embedding

  @required_fields ~w(
    model
    input
  )a

  @optional_fields ~w(
    user
  )a

  @doc """
  Builds the create embedding request and validates the required fields.
  """
  @spec create(params :: map) :: {:ok, Embedding.t()} | {:error, map}
  def create(params) do
    params
    |> prepare(@optional_fields, @required_fields)
    |> Embedding.create()
  end
end