lib/requests/completion_request.ex
defmodule ExOpenAi.CompletionRequest do
@moduledoc """
Represents a completion request to the OpenAI API.
- [OpenAI API Docs](https://platform.openai.com/docs/api-reference/completions)
"""
use ExOpenAi.Request
alias ExOpenAi.Completion
@required_fields ~w(
model
)a
@optional_fields ~w(
prompt
suffix
max_tokens
temperature
top_p
n
stream
logprobs
echo
stop
presence_penalty
frequency_penalty
best_of
logit_bias
user
)a
@doc """
Builds the create completion request and validates the required fields.
"""
@spec create(params :: map) :: {:ok, ExOpenAi.Completion.t()} | {:error, map}
def create(params) do
params
|> prepare(@optional_fields, @required_fields)
|> Completion.create()
end
end