defmodule OpenAi.Response do @moduledoc """ Provides struct and type for a Response """ @type t :: %__MODULE__{ created_at: number | nil, error: OpenAi.Response.Error.t() | nil, id: String.t() | nil, incomplete_details: OpenAi.Response.IncompleteDetails.t() | nil, instructions: String.t() | nil, max_output_tokens: integer | nil, metadata: map | nil, model: String.t() | nil, object: String.t() | nil, output: [ OpenAi.Response.Computer.ToolCall.t() | OpenAi.Response.FileSearch.Tool.Call.t() | OpenAi.Response.Function.ToolCall.t() | OpenAi.Response.Output.Message.t() | OpenAi.Response.Reasoning.Item.t() | OpenAi.Response.WebSearch.ToolCall.t() ] | nil, output_text: String.t() | nil, parallel_tool_calls: boolean | nil, previous_response_id: String.t() | nil, reasoning: OpenAi.Response.Reasoning.t() | nil, service_tier: String.t() | nil, status: String.t() | nil, temperature: number | nil, text: map | nil, tool_choice: OpenAi.Tool.Choice.Function.t() | OpenAi.Tool.Choice.Types.t() | String.t() | nil, tools: [ OpenAi.Response.Computer.UsePreviewTool.t() | OpenAi.Response.FileSearch.Tool.t() | OpenAi.Response.Function.Tool.t() | OpenAi.Response.WebSearch.PreviewTool.t() ] | nil, top_p: number | nil, truncation: String.t() | nil, usage: OpenAi.Response.Usage.t() | nil, user: String.t() | nil } defstruct [ :created_at, :error, :id, :incomplete_details, :instructions, :max_output_tokens, :metadata, :model, :object, :output, :output_text, :parallel_tool_calls, :previous_response_id, :reasoning, :service_tier, :status, :temperature, :text, :tool_choice, :tools, :top_p, :truncation, :usage, :user ] @doc false @spec __fields__(atom) :: keyword def __fields__(type \\ :t) def __fields__(:t) do [ created_at: :number, error: {OpenAi.Response.Error, :t}, id: {:string, :generic}, incomplete_details: {OpenAi.Response.IncompleteDetails, :t}, instructions: {:string, :generic}, max_output_tokens: :integer, metadata: :map, 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" ], enum: [ "o1-pro", "o1-pro-2025-03-19", "computer-use-preview", "computer-use-preview-2025-03-11" ], string: :generic}, object: {:const, "response"}, output: [ union: [ {OpenAi.Response.Computer.ToolCall, :t}, {OpenAi.Response.FileSearch.Tool.Call, :t}, {OpenAi.Response.Function.ToolCall, :t}, {OpenAi.Response.Output.Message, :t}, {OpenAi.Response.Reasoning.Item, :t}, {OpenAi.Response.WebSearch.ToolCall, :t} ] ], output_text: {:string, :generic}, parallel_tool_calls: :boolean, previous_response_id: {:string, :generic}, reasoning: {OpenAi.Response.Reasoning, :t}, service_tier: {:enum, ["auto", "default", "flex"]}, status: {:enum, ["completed", "failed", "in_progress", "incomplete"]}, temperature: :number, text: :map, tool_choice: {:union, [ {OpenAi.Tool.Choice.Function, :t}, {OpenAi.Tool.Choice.Types, :t}, enum: ["none", "auto", "required"] ]}, tools: [ union: [ {OpenAi.Response.Computer.UsePreviewTool, :t}, {OpenAi.Response.FileSearch.Tool, :t}, {OpenAi.Response.Function.Tool, :t}, {OpenAi.Response.WebSearch.PreviewTool, :t} ] ], top_p: :number, truncation: {:enum, ["auto", "disabled"]}, usage: {OpenAi.Response.Usage, :t}, user: {:string, :generic} ] end end