@using AIStudio.Provider @using AIStudio.Provider.HuggingFace @using AIStudio.Provider.SelfHosted @inherits MSGComponentBase <MudDialog> <DialogContent> <MudForm @ref="@this.form" @bind-IsValid="@this.dataIsValid" @bind-Errors="@this.dataIssues"> <MudStack Row="@true" AlignItems="AlignItems.Center"> @* ReSharper disable once CSharpWarnings::CS8974 *@ <MudSelect @bind-Value="@this.DataLLMProvider" Label="@T("Provider")" Class="mb-3" OpenIcon="@Icons.Material.Filled.AccountBalance" AdornmentColor="Color.Info" Adornment="Adornment.Start" Validation="@this.providerValidation.ValidatingProvider"> @foreach (LLMProviders provider in Enum.GetValues(typeof(LLMProviders))) { <MudSelectItem Value="@provider"> @provider.ToName() </MudSelectItem> } </MudSelect> <MudButton Disabled="@(!this.DataLLMProvider.ShowRegisterButton())" Variant="Variant.Filled" Size="Size.Small" StartIcon="@Icons.Material.Filled.OpenInBrowser" Href="@this.DataLLMProvider.GetCreationURL()" Target="_blank"> @T("Create account") </MudButton> </MudStack> @if (this.DataLLMProvider.IsAPIKeyNeeded(this.DataHost)) { @* ReSharper disable once CSharpWarnings::CS8974 *@ <MudTextField T="string" @bind-Text="@this.dataAPIKey" Label="@this.APIKeyText" Class="mb-3" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.VpnKey" AdornmentColor="Color.Info" InputType="InputType.Password" Immediate="true" Validation="@this.providerValidation.ValidatingAPIKey"/> } @if (this.DataLLMProvider.IsHostnameNeeded()) { <MudTextField T="string" @bind-Text="@this.DataHostname" Label="@T("Hostname")" Class="mb-3" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Dns" AdornmentColor="Color.Info" Validation="@this.providerValidation.ValidatingHostname" UserAttributes="@SPELLCHECK_ATTRIBUTES"/> } @if (this.DataLLMProvider.IsHostNeeded()) { <MudSelect @bind-Value="@this.DataHost" Label="@T("Host")" Class="mb-3" OpenIcon="@Icons.Material.Filled.ExpandMore" AdornmentColor="Color.Info" Adornment="Adornment.Start" Validation="@this.providerValidation.ValidatingHost"> @foreach (Host host in Enum.GetValues(typeof(Host))) { <MudSelectItem Value="@host"> @host.Name() </MudSelectItem> } </MudSelect> } @if (this.DataLLMProvider.IsHFInstanceProviderNeeded()) { <MudSelect @bind-Value="@this.HFInferenceProviderId" Label="@T("Hugging Face Inference Provider")" Class="mb-3" OpenIcon="@Icons.Material.Filled.Dns" AdornmentColor="Color.Info" Adornment="Adornment.Start" Validation="@this.providerValidation.ValidatingHFInstanceProvider"> @foreach (HFInferenceProvider inferenceProvider in Enum.GetValues(typeof(HFInferenceProvider))) { <MudSelectItem Value="@inferenceProvider"> @inferenceProvider.ToName() </MudSelectItem> } </MudSelect> @* ReSharper disable Asp.Entity *@ <MudJustifiedText Class="mb-3"> Please double-check if your model name matches the curl specifications provided by the inference provider. If it doesn't, you might get a <b>Not Found</b> error when trying to use the model. Here's a <MudLink Href="https://huggingface.co/meta-llama/Llama-3.1-8B-Instruct?inference_api=true&inference_provider=novita&language=sh" Target="_blank">curl example</MudLink>. </MudJustifiedText> @* ReSharper restore Asp.Entity *@ } <MudField FullWidth="true" Label="Model selection" Variant="Variant.Outlined" Class="mb-3"> <MudStack Row="@true" AlignItems="AlignItems.Center" StretchItems="StretchItems.End"> @if (this.DataLLMProvider.IsLLMModelProvidedManually()) { <MudButton Variant="Variant.Filled" Size="Size.Small" StartIcon="@Icons.Material.Filled.OpenInBrowser" Href="@this.DataLLMProvider.GetModelsOverviewURL(this.HFInferenceProviderId)" Target="_blank"> @T("Show available models") </MudButton> <MudTextField T="string" @bind-Text="@this.dataManuallyModel" Label="@T("Model")" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.FaceRetouchingNatural" AdornmentColor="Color.Info" Validation="@this.ValidateManuallyModel" UserAttributes="@SPELLCHECK_ATTRIBUTES" /> } else { <MudButton Disabled="@(!this.DataLLMProvider.CanLoadModels(this.DataHost, this.dataAPIKey))" Variant="Variant.Filled" Size="Size.Small" StartIcon="@Icons.Material.Filled.Refresh" OnClick="this.ReloadModels"> @T("Load models") </MudButton> @if(this.availableModels.Count is 0) { <MudText Typo="Typo.body1"> @T("No models loaded or available.") </MudText> } else { <MudSelect @bind-Value="@this.DataModel" OpenIcon="@Icons.Material.Filled.FaceRetouchingNatural" AdornmentColor="Color.Info" Adornment="Adornment.Start" Validation="@this.providerValidation.ValidatingModel"> @foreach (var model in this.availableModels) { <MudSelectItem Value="@model"> @model </MudSelectItem> } </MudSelect> } } </MudStack> </MudField> @* ReSharper disable once CSharpWarnings::CS8974 *@ <MudTextField T="string" @bind-Text="@this.DataInstanceName" Label="@T("Instance Name")" Class="mb-3" MaxLength="40" Counter="40" Immediate="@true" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Lightbulb" AdornmentColor="Color.Info" Validation="@this.providerValidation.ValidatingInstanceName" UserAttributes="@SPELLCHECK_ATTRIBUTES" /> </MudForm> <Issues IssuesData="@this.dataIssues"/> </DialogContent> <DialogActions> <MudButton OnClick="@this.Cancel" Variant="Variant.Filled"> @T("Cancel") </MudButton> <MudButton OnClick="@this.Store" Variant="Variant.Filled" Color="Color.Primary"> @if(this.IsEditing) { @T("Update") } else { @T("Add") } </MudButton> </DialogActions> </MudDialog>