using AIStudio.Provider;
namespace AIStudio.Settings;
///
/// Data model for configured providers.
///
/// The provider's number.
/// The provider's ID.
/// The provider's instance name. Useful for multiple instances of the same provider, e.g., to distinguish between different OpenAI API keys.
/// The provider used.
/// Whether the provider is self-hosted.
/// The hostname of the provider. Useful for self-hosted providers.
/// The LLM model to use for chat.
public readonly record struct Provider(uint Num, string Id, string InstanceName, Providers UsedProvider, Model Model, bool IsSelfHosted = false, string Hostname = "http://localhost:1234")
{
#region Overrides of ValueType
///
/// Returns a string that represents the current provider in a human-readable format.
/// We use this to display the provider in the chat UI.
///
/// A string that represents the current provider in a human-readable format.
public override string ToString()
{
if(this.IsSelfHosted)
return $"{this.InstanceName} ({this.UsedProvider.ToName()}, {this.Hostname}, {this.Model})";
return $"{this.InstanceName} ({this.UsedProvider.ToName()}, {this.Model})";
}
#endregion
}