defmodule Noizu.OpenAI.Api.Embedding do require Noizu.OpenAI import Noizu.OpenAI #------------------------------- # #------------------------------- @doc """ Generates embeddings for a list of strings using the specified model. ## Parameters - input: A list of strings for which embeddings are to be generated - options: A map or keyword list of optional parameters (e.g., :model, :user) ## Returns Returns a tuple {:ok, response} on successful API call, where response is a map containing the generated embeddings. Returns {:error, term} on failure, where term contains error details. ## Example input = ["apple", "orange", "banana"] {:ok, response} = Noizu.OpenAI.embeddings(input) """ @type embeddings_response() :: map() @type embeddings_supported_models :: :"text-embedding-ada-002" @type embeddings_options() :: %{ optional(:model) => Noizu.OpenAI.model_option(embeddings_supported_models()), optional(:user) => Noizu.OpenAI.user_option() } | Keyword.t() @spec create(input :: String.t(), embeddings_options) :: {:ok, embeddings_response()} | {:error, term} def create(input, options \\ nil) do url = openai_base() <> "embeddings" body = %{input: input} |> put_field(:model, options, "text-embedding-ada-002") |> put_field(:user, options) api_call(:post, url, body, Noizu.OpenAI.Embeddings, options) end end