defmodule ExOpenAi.Completion do @moduledoc """ Represents a completion request to the OpenAI API. - [OpenAI API Docs](https://platform.openai.com/docs/api-reference/completions) ## Examples iex> params = %{ ...> model: "text-model", ...> prompt: "tell me a joke", ...> max_tokens: 500 ...> } iex> ExOpenAi.Completion.create(params) {:ok, %ExOpenAi.Completion{...}} iex> ExOpenAi.Completion.create(%{}) {:error, %{}} """ defstruct id: nil, object: nil, created: nil, model: nil, choices: nil, usage: nil @type t :: %__MODULE__{ id: String.t(), object: String.t(), created: integer(), model: String.t(), choices: list(), usage: map() } use ExOpenAi.Resource, import: [:new, :create, :create_stream] def keep_it_simple(response, true) do response |> Map.get(:choices) |> Enum.map(fn choice -> choice.text end) end def keep_it_simple(response, _), do: response end