// <auto-generated/>

#nullable disable

using System;
using System.Collections.Generic;
using System.Linq;

namespace OpenAI.Chat
{
    public partial class ChatCompletionOptions
    {
        internal IDictionary<string, BinaryData> SerializedAdditionalRawData { get; set; }

        internal ChatCompletionOptions(IList<ChatMessage> messages, InternalCreateChatCompletionRequestModel model, float? frequencyPenalty, IDictionary<int, int> logitBiases, bool? includeLogProbabilities, int? topLogProbabilityCount, int? maxTokens, int? n, float? presencePenalty, ChatResponseFormat responseFormat, long? seed, IList<string> stopSequences, bool? stream, InternalChatCompletionStreamOptions streamOptions, float? temperature, float? topP, IList<ChatTool> tools, ChatToolChoice toolChoice, bool? parallelToolCallsEnabled, string user, ChatFunctionChoice functionChoice, IList<ChatFunction> functions, IDictionary<string, BinaryData> serializedAdditionalRawData)
        {
            Messages = messages;
            Model = model;
            FrequencyPenalty = frequencyPenalty;
            LogitBiases = logitBiases;
            IncludeLogProbabilities = includeLogProbabilities;
            TopLogProbabilityCount = topLogProbabilityCount;
            MaxTokens = maxTokens;
            N = n;
            PresencePenalty = presencePenalty;
            ResponseFormat = responseFormat;
            Seed = seed;
            StopSequences = stopSequences;
            Stream = stream;
            StreamOptions = streamOptions;
            Temperature = temperature;
            TopP = topP;
            Tools = tools;
            ToolChoice = toolChoice;
            ParallelToolCallsEnabled = parallelToolCallsEnabled;
            User = user;
            FunctionChoice = functionChoice;
            Functions = functions;
            SerializedAdditionalRawData = serializedAdditionalRawData;
        }
        public float? FrequencyPenalty { get; set; }
        public int? MaxTokens { get; set; }
        public float? PresencePenalty { get; set; }
        public ChatResponseFormat ResponseFormat { get; set; }
        public long? Seed { get; set; }
        public float? Temperature { get; set; }
        public float? TopP { get; set; }
        public IList<ChatTool> Tools { get; init; }
        public string User { get; set; }
        public IList<ChatFunction> Functions { get; }
    }
}
