lib/openai/embeddings.ex

defmodule OpenAI.Embeddings do
  @moduledoc """
  Get a vector representation of a given input that can be easily consumed by machine learning models and algorithms.

  Related guide: [Embeddings](https://platform.openai.com/docs/guides/embeddings)

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

  alias OpenAI.Client

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

  @doc """
  Creates an embedding vector representing the input text.
  """
  @spec create(Client.t(), create_params(), Keyword.t()) :: Client.result()
  def create(client, params, opts \\ []) do
    client
    |> Client.post("/v1/embeddings", params, opts)
    |> Client.handle_response(opts)
  end
end