using System;
using System.Collections.Generic;


namespace AIRuntime.Runtime.Providers.OpenAI
{
    /// <summary>
    /// Shared adapter for providers that implement the OpenAI
    /// Chat Completions request and response contract.
    ///
    /// Compatible services commonly use max_tokens rather than
    /// OpenAI's newer max_completion_tokens request field.
    /// </summary>
    public class OpenAICompatibleProvider :
        OpenAIProvider
    {
        public OpenAICompatibleProvider(
            string providerName,
            IOpenAIClient client,
            double maximumTemperature = 2,
            IReadOnlyList<string> requestTags = null)
            : base(
                client,
                providerName,
                useMaxCompletionTokens: false,
                maximumTemperature: maximumTemperature,
                requestTags: requestTags)
        {
            if (string.Equals(
                    providerName?.Trim(),
                    "OpenAI",
                    StringComparison.OrdinalIgnoreCase))
            {
                throw new ArgumentException(
                    "Use OpenAIProvider for the OpenAI API.",
                    nameof(providerName));
            }
        }
    }
}
