using AIStudio.Provider; using Host = AIStudio.Provider.SelfHosted.Host; 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", Host Host = Host.NONE) { #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.Host}, {this.Hostname}, {this.Model})"; return $"{this.InstanceName} ({this.UsedProvider.ToName()}, {this.Model})"; } #endregion }