Current section

Files

Jump to
oapi_open_ai lib schemas chat completion create_request.ex
Raw

lib/schemas/chat/completion/create_request.ex

defmodule OpenAi.Chat.Completion.CreateRequest do
@moduledoc """
Provides struct and type for a Chat.Completion.CreateRequest
"""
@type t :: %__MODULE__{
audio: OpenAi.Chat.Completion.CreateRequest.Audio.t() | nil,
frequency_penalty: number | nil,
function_call: OpenAi.Chat.Completion.FunctionCallOption.t() | String.t() | nil,
functions: [OpenAi.Chat.Completion.Function.t()] | nil,
logit_bias: OpenAi.Chat.Completion.CreateRequest.LogitBias.t() | nil,
logprobs: boolean | nil,
max_completion_tokens: integer | nil,
max_tokens: integer | nil,
messages:
[
OpenAi.Chat.Completion.Request.AssistantMessage.t()
| OpenAi.Chat.Completion.Request.DeveloperMessage.t()
| OpenAi.Chat.Completion.Request.FunctionMessage.t()
| OpenAi.Chat.Completion.Request.SystemMessage.t()
| OpenAi.Chat.Completion.Request.ToolMessage.t()
| OpenAi.Chat.Completion.Request.UserMessage.t()
]
| nil,
metadata: map | nil,
modalities: [String.t()] | nil,
model: String.t() | nil,
n: integer | nil,
parallel_tool_calls: boolean | nil,
prediction: OpenAi.Chat.Completion.PredictionContent.t() | nil,
presence_penalty: number | nil,
reasoning_effort: String.t() | nil,
response_format:
OpenAi.Response.Format.Json.t()
| OpenAi.Response.Format.JsonSchema.t()
| OpenAi.Response.Format.Text.t()
| nil,
seed: integer | nil,
service_tier: String.t() | nil,
stop: String.t() | [String.t()] | nil,
store: boolean | nil,
stream: boolean | nil,
stream_options: OpenAi.Chat.Completion.Stream.Options.t() | nil,
temperature: number | nil,
tool_choice: OpenAi.Chat.Completion.NamedTool.Choice.t() | String.t() | nil,
tools: [OpenAi.Chat.Completion.Tool.t()] | nil,
top_logprobs: integer | nil,
top_p: number | nil,
user: String.t() | nil,
web_search_options: OpenAi.Response.WebSearch.t() | nil
}
defstruct [
:audio,
:frequency_penalty,
:function_call,
:functions,
:logit_bias,
:logprobs,
:max_completion_tokens,
:max_tokens,
:messages,
:metadata,
:modalities,
:model,
:n,
:parallel_tool_calls,
:prediction,
:presence_penalty,
:reasoning_effort,
:response_format,
:seed,
:service_tier,
:stop,
:store,
:stream,
:stream_options,
:temperature,
:tool_choice,
:tools,
:top_logprobs,
:top_p,
:user,
:web_search_options
]
@doc false
@spec __fields__(atom) :: keyword
def __fields__(type \\ :t)
def __fields__(:t) do
[
audio: {OpenAi.Chat.Completion.CreateRequest.Audio, :t},
frequency_penalty: :number,
function_call:
{:union, [{OpenAi.Chat.Completion.FunctionCallOption, :t}, enum: ["none", "auto"]]},
functions: [{OpenAi.Chat.Completion.Function, :t}],
logit_bias: {OpenAi.Chat.Completion.CreateRequest.LogitBias, :t},
logprobs: :boolean,
max_completion_tokens: :integer,
max_tokens: :integer,
messages: [
union: [
{OpenAi.Chat.Completion.Request.AssistantMessage, :t},
{OpenAi.Chat.Completion.Request.DeveloperMessage, :t},
{OpenAi.Chat.Completion.Request.FunctionMessage, :t},
{OpenAi.Chat.Completion.Request.SystemMessage, :t},
{OpenAi.Chat.Completion.Request.ToolMessage, :t},
{OpenAi.Chat.Completion.Request.UserMessage, :t}
]
],
metadata: :map,
modalities: [enum: ["text", "audio"]],
model:
{:union,
enum: [
"gpt-4.1",
"gpt-4.1-mini",
"gpt-4.1-nano",
"gpt-4.1-2025-04-14",
"gpt-4.1-mini-2025-04-14",
"gpt-4.1-nano-2025-04-14",
"o4-mini",
"o4-mini-2025-04-16",
"o3",
"o3-2025-04-16",
"o3-mini",
"o3-mini-2025-01-31",
"o1",
"o1-2024-12-17",
"o1-preview",
"o1-preview-2024-09-12",
"o1-mini",
"o1-mini-2024-09-12",
"gpt-4o",
"gpt-4o-2024-11-20",
"gpt-4o-2024-08-06",
"gpt-4o-2024-05-13",
"gpt-4o-audio-preview",
"gpt-4o-audio-preview-2024-10-01",
"gpt-4o-audio-preview-2024-12-17",
"gpt-4o-mini-audio-preview",
"gpt-4o-mini-audio-preview-2024-12-17",
"gpt-4o-search-preview",
"gpt-4o-mini-search-preview",
"gpt-4o-search-preview-2025-03-11",
"gpt-4o-mini-search-preview-2025-03-11",
"chatgpt-4o-latest",
"gpt-4o-mini",
"gpt-4o-mini-2024-07-18",
"gpt-4-turbo",
"gpt-4-turbo-2024-04-09",
"gpt-4-0125-preview",
"gpt-4-turbo-preview",
"gpt-4-1106-preview",
"gpt-4-vision-preview",
"gpt-4",
"gpt-4-0314",
"gpt-4-0613",
"gpt-4-32k",
"gpt-4-32k-0314",
"gpt-4-32k-0613",
"gpt-3.5-turbo",
"gpt-3.5-turbo-16k",
"gpt-3.5-turbo-0301",
"gpt-3.5-turbo-0613",
"gpt-3.5-turbo-1106",
"gpt-3.5-turbo-0125",
"gpt-3.5-turbo-16k-0613"
],
string: :generic},
n: :integer,
parallel_tool_calls: :boolean,
prediction: {OpenAi.Chat.Completion.PredictionContent, :t},
presence_penalty: :number,
reasoning_effort: {:enum, ["low", "medium", "high"]},
response_format:
{:union,
[
{OpenAi.Response.Format.Json, :t},
{OpenAi.Response.Format.JsonSchema, :t},
{OpenAi.Response.Format.Text, :t}
]},
seed: :integer,
service_tier: {:enum, ["auto", "default", "flex"]},
stop: {:union, [{:string, :generic}, [string: :generic]]},
store: :boolean,
stream: :boolean,
stream_options: {OpenAi.Chat.Completion.Stream.Options, :t},
temperature: :number,
tool_choice:
{:union,
[{OpenAi.Chat.Completion.NamedTool.Choice, :t}, enum: ["none", "auto", "required"]]},
tools: [{OpenAi.Chat.Completion.Tool, :t}],
top_logprobs: :integer,
top_p: :number,
user: {:string, :generic},
web_search_options: {OpenAi.Response.WebSearch, :t}
]
end
end