mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-06-21 05:56:26 +00:00
Added a read-only view for managed profiles and chat templates (#813)
Some checks are pending
Build and Release / Determine run mode (push) Waiting to run
Build and Release / Read metadata (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-apple-darwin, osx-arm64, macos-latest, aarch64-apple-darwin, dmg,app,updater, dmg) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-pc-windows-msvc.exe, win-arm64, windows-latest, aarch64-pc-windows-msvc, nsis,updater, nsis) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-unknown-linux-gnu, linux-arm64, ubuntu-22.04-arm, aarch64-unknown-linux-gnu, appimage,updater, appimage) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-apple-darwin, osx-x64, macos-latest, x86_64-apple-darwin, dmg,app,updater, dmg) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-pc-windows-msvc.exe, win-x64, windows-latest, x86_64-pc-windows-msvc, nsis,updater, nsis) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-unknown-linux-gnu, linux-x64, ubuntu-22.04, x86_64-unknown-linux-gnu, appimage,updater, appimage) (push) Blocked by required conditions
Build and Release / Prepare & create release (push) Blocked by required conditions
Build and Release / Publish release (push) Blocked by required conditions
Some checks are pending
Build and Release / Determine run mode (push) Waiting to run
Build and Release / Read metadata (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-apple-darwin, osx-arm64, macos-latest, aarch64-apple-darwin, dmg,app,updater, dmg) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-pc-windows-msvc.exe, win-arm64, windows-latest, aarch64-pc-windows-msvc, nsis,updater, nsis) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-unknown-linux-gnu, linux-arm64, ubuntu-22.04-arm, aarch64-unknown-linux-gnu, appimage,updater, appimage) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-apple-darwin, osx-x64, macos-latest, x86_64-apple-darwin, dmg,app,updater, dmg) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-pc-windows-msvc.exe, win-x64, windows-latest, x86_64-pc-windows-msvc, nsis,updater, nsis) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-unknown-linux-gnu, linux-x64, ubuntu-22.04, x86_64-unknown-linux-gnu, appimage,updater, appimage) (push) Blocked by required conditions
Build and Release / Prepare & create release (push) Blocked by required conditions
Build and Release / Publish release (push) Blocked by required conditions
This commit is contained in:
parent
fc7197ec93
commit
e04879fd7f
@ -46,6 +46,15 @@ LANG_NAME = "English (United States)"
|
|||||||
|
|
||||||
UI_TEXT_CONTENT = {}
|
UI_TEXT_CONTENT = {}
|
||||||
|
|
||||||
|
-- Self-hosted
|
||||||
|
UI_TEXT_CONTENT["::LLMPROVIDERSEXTENSIONS::T146444217"] = "Self-hosted"
|
||||||
|
|
||||||
|
-- No provider selected
|
||||||
|
UI_TEXT_CONTENT["::LLMPROVIDERSEXTENSIONS::T2897045472"] = "No provider selected"
|
||||||
|
|
||||||
|
-- Unknown
|
||||||
|
UI_TEXT_CONTENT["::LLMPROVIDERSEXTENSIONS::T3424652889"] = "Unknown"
|
||||||
|
|
||||||
-- No audit provider is configured.
|
-- No audit provider is configured.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::AGENTS::ASSISTANTAUDIT::ASSISTANTAUDITAGENT::T2034826200"] = "No audit provider is configured."
|
UI_TEXT_CONTENT["AISTUDIO::AGENTS::ASSISTANTAUDIT::ASSISTANTAUDITAGENT::T2034826200"] = "No audit provider is configured."
|
||||||
|
|
||||||
@ -3514,6 +3523,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3227981830"] = "Using s
|
|||||||
-- Add a message
|
-- Add a message
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3372872324"] = "Add a message"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3372872324"] = "Add a message"
|
||||||
|
|
||||||
|
-- Close
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3448155331"] = "Close"
|
||||||
|
|
||||||
-- Unsupported content type
|
-- Unsupported content type
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3570316759"] = "Unsupported content type"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3570316759"] = "Unsupported content type"
|
||||||
|
|
||||||
@ -4294,6 +4306,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::PROFILEDIALOG::T3243902394"] = "The profile
|
|||||||
-- Profile Name
|
-- Profile Name
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::PROFILEDIALOG::T3392578705"] = "Profile Name"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::PROFILEDIALOG::T3392578705"] = "Profile Name"
|
||||||
|
|
||||||
|
-- Close
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::PROFILEDIALOG::T3448155331"] = "Close"
|
||||||
|
|
||||||
-- Please enter what the LLM should know about you and/or what actions it should take.
|
-- Please enter what the LLM should know about you and/or what actions it should take.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::PROFILEDIALOG::T3708405102"] = "Please enter what the LLM should know about you and/or what actions it should take."
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::PROFILEDIALOG::T3708405102"] = "Please enter what the LLM should know about you and/or what actions it should take."
|
||||||
|
|
||||||
@ -4813,6 +4828,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T14695
|
|||||||
-- Add Chat Template
|
-- Add Chat Template
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T1548314416"] = "Add Chat Template"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T1548314416"] = "Add Chat Template"
|
||||||
|
|
||||||
|
-- View
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T1582017048"] = "View"
|
||||||
|
|
||||||
-- Note: This advanced feature is designed for users familiar with prompt engineering concepts. Furthermore, you have to make sure yourself that your chosen provider supports the use of assistant prompts.
|
-- Note: This advanced feature is designed for users familiar with prompt engineering concepts. Furthermore, you have to make sure yourself that your chosen provider supports the use of assistant prompts.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T1909110760"] = "Note: This advanced feature is designed for users familiar with prompt engineering concepts. Furthermore, you have to make sure yourself that your chosen provider supports the use of assistant prompts."
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T1909110760"] = "Note: This advanced feature is designed for users familiar with prompt engineering concepts. Furthermore, you have to make sure yourself that your chosen provider supports the use of assistant prompts."
|
||||||
|
|
||||||
@ -4852,6 +4870,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T38650
|
|||||||
-- Delete Chat Template
|
-- Delete Chat Template
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T4025180906"] = "Delete Chat Template"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T4025180906"] = "Delete Chat Template"
|
||||||
|
|
||||||
|
-- View Chat Template
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T4042112076"] = "View Chat Template"
|
||||||
|
|
||||||
-- Export Chat Template
|
-- Export Chat Template
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T491504763"] = "Export Chat Template"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T491504763"] = "Export Chat Template"
|
||||||
|
|
||||||
@ -5260,6 +5281,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T143353473
|
|||||||
-- Delete
|
-- Delete
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T1469573738"] = "Delete"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T1469573738"] = "Delete"
|
||||||
|
|
||||||
|
-- View
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T1582017048"] = "View"
|
||||||
|
|
||||||
-- Your Profiles
|
-- Your Profiles
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T2378610256"] = "Your Profiles"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T2378610256"] = "Your Profiles"
|
||||||
|
|
||||||
@ -5284,6 +5308,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T405841465
|
|||||||
-- Store personal data about yourself in various profiles so that the AIs know your personal context. This saves you from having to explain your context each time, for example, in every chat. When you have different roles, you can create a profile for each role.
|
-- Store personal data about yourself in various profiles so that the AIs know your personal context. This saves you from having to explain your context each time, for example, in every chat. When you have different roles, you can create a profile for each role.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T4125557797"] = "Store personal data about yourself in various profiles so that the AIs know your personal context. This saves you from having to explain your context each time, for example, in every chat. When you have different roles, you can create a profile for each role."
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T4125557797"] = "Store personal data about yourself in various profiles so that the AIs know your personal context. This saves you from having to explain your context each time, for example, in every chat. When you have different roles, you can create a profile for each role."
|
||||||
|
|
||||||
|
-- View Profile
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T4219233997"] = "View Profile"
|
||||||
|
|
||||||
-- Add Profile
|
-- Add Profile
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T4248067241"] = "Add Profile"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T4248067241"] = "Add Profile"
|
||||||
|
|
||||||
@ -6721,15 +6748,6 @@ UI_TEXT_CONTENT["AISTUDIO::PROVIDER::CONFIDENCELEVELEXTENSIONS::T3188327965"] =
|
|||||||
-- Very Low
|
-- Very Low
|
||||||
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::CONFIDENCELEVELEXTENSIONS::T786675843"] = "Very Low"
|
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::CONFIDENCELEVELEXTENSIONS::T786675843"] = "Very Low"
|
||||||
|
|
||||||
-- Self-hosted
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::LLMPROVIDERSEXTENSIONS::T146444217"] = "Self-hosted"
|
|
||||||
|
|
||||||
-- No provider selected
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::LLMPROVIDERSEXTENSIONS::T2897045472"] = "No provider selected"
|
|
||||||
|
|
||||||
-- Unknown
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::LLMPROVIDERSEXTENSIONS::T3424652889"] = "Unknown"
|
|
||||||
|
|
||||||
-- no model selected
|
-- no model selected
|
||||||
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::MODEL::T2234274832"] = "no model selected"
|
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::MODEL::T2234274832"] = "no model selected"
|
||||||
|
|
||||||
@ -7870,6 +7888,9 @@ UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::PANDOCAVAILABILITYSERVICE::T25964655
|
|||||||
-- Failed to store the secret data due to an API issue.
|
-- Failed to store the secret data due to an API issue.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T1110203516"] = "Failed to store the secret data due to an API issue."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T1110203516"] = "Failed to store the secret data due to an API issue."
|
||||||
|
|
||||||
|
-- Failed to store the API key due to an API issue.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T1704298921"] = "Failed to store the API key due to an API issue."
|
||||||
|
|
||||||
-- Failed to delete the secret data due to an API issue.
|
-- Failed to delete the secret data due to an API issue.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T2303057928"] = "Failed to delete the secret data due to an API issue."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T2303057928"] = "Failed to delete the secret data due to an API issue."
|
||||||
|
|
||||||
|
|||||||
@ -52,29 +52,42 @@
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
<MudStack Row="true" AlignItems="AlignItems.Center" StretchItems="StretchItems.None" Wrap="Wrap.Wrap">
|
@if (!this.Disabled)
|
||||||
<MudText Typo="Typo.body1" Inline="true">
|
{
|
||||||
@T("Drag and drop files into the marked area or click here to attach documents: ")
|
<MudStack Row="true" AlignItems="AlignItems.Center" StretchItems="StretchItems.None" Wrap="Wrap.Wrap">
|
||||||
</MudText>
|
<MudText Typo="Typo.body1" Inline="true">
|
||||||
<MudButton
|
@T("Drag and drop files into the marked area or click here to attach documents: ")
|
||||||
Variant="Variant.Filled"
|
</MudText>
|
||||||
StartIcon="@Icons.Material.Filled.Add"
|
<MudButton
|
||||||
Color="Color.Primary"
|
Variant="Variant.Filled"
|
||||||
OnClick="@(() => this.AddFilesManually())"
|
StartIcon="@Icons.Material.Filled.Add"
|
||||||
Style="vertical-align: top; margin-top: -2px;"
|
Color="Color.Primary"
|
||||||
Size="Size.Small">
|
OnClick="@(() => this.AddFilesManually())"
|
||||||
@T("Add file")
|
Style="vertical-align: top; margin-top: -2px;"
|
||||||
</MudButton>
|
Size="Size.Small">
|
||||||
</MudStack>
|
@T("Add file")
|
||||||
|
</MudButton>
|
||||||
|
</MudStack>
|
||||||
|
}
|
||||||
<div @onmouseenter="@this.OnMouseEnter" @onmouseleave="@this.OnMouseLeave">
|
<div @onmouseenter="@this.OnMouseEnter" @onmouseleave="@this.OnMouseLeave">
|
||||||
<MudPaper Height="20em" Outlined="true" Class="@this.dragClass" Style="overflow-y: auto;">
|
<MudPaper Height="20em" Outlined="true" Class="@this.dragClass" Style="overflow-y: auto;">
|
||||||
@foreach (var fileAttachment in this.DocumentPaths)
|
@foreach (var fileAttachment in this.DocumentPaths)
|
||||||
{
|
{
|
||||||
<MudChip T="string" Color="Color.Dark" Text="@fileAttachment.FileName" tabindex="-1" Icon="@Icons.Material.Filled.Search" OnClick="@(() => this.InvestigateFile(fileAttachment))" OnClose="@(() => this.RemoveDocument(fileAttachment))"/>
|
@if (this.Disabled)
|
||||||
|
{
|
||||||
|
<MudChip T="string" Color="Color.Dark" Text="@fileAttachment.FileName" tabindex="-1" Icon="@Icons.Material.Filled.Search" OnClick="@(() => this.InvestigateFile(fileAttachment))"/>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<MudChip T="string" Color="Color.Dark" Text="@fileAttachment.FileName" tabindex="-1" Icon="@Icons.Material.Filled.Search" OnClick="@(() => this.InvestigateFile(fileAttachment))" OnClose="@(() => this.RemoveDocument(fileAttachment))"/>
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</MudPaper>
|
</MudPaper>
|
||||||
</div>
|
</div>
|
||||||
<MudButton OnClick="@(async () => await this.ClearAllFiles())" Variant="Variant.Filled" Color="Color.Info" Class="mt-2" StartIcon="@Icons.Material.Filled.Delete">
|
@if (!this.Disabled)
|
||||||
@T("Clear file list")
|
{
|
||||||
</MudButton>
|
<MudButton OnClick="@(async () => await this.ClearAllFiles())" Variant="Variant.Filled" Color="Color.Info" Class="mt-2" StartIcon="@Icons.Material.Filled.Delete">
|
||||||
|
@T("Clear file list")
|
||||||
|
</MudButton>
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -48,6 +48,9 @@ public partial class AttachDocuments : MSGComponentBase
|
|||||||
[Parameter]
|
[Parameter]
|
||||||
public bool UseSmallForm { get; set; }
|
public bool UseSmallForm { get; set; }
|
||||||
|
|
||||||
|
[Parameter]
|
||||||
|
public bool Disabled { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// When true, validate media file types before attaching. Default is true. That means that
|
/// When true, validate media file types before attaching. Default is true. That means that
|
||||||
/// the user cannot attach unsupported media file types when the provider or model does not
|
/// the user cannot attach unsupported media file types when the provider or model does not
|
||||||
@ -92,6 +95,9 @@ public partial class AttachDocuments : MSGComponentBase
|
|||||||
|
|
||||||
protected override async Task ProcessIncomingMessage<T>(ComponentBase? sendingComponent, Event triggeredEvent, T? data) where T : default
|
protected override async Task ProcessIncomingMessage<T>(ComponentBase? sendingComponent, Event triggeredEvent, T? data) where T : default
|
||||||
{
|
{
|
||||||
|
if (this.Disabled && triggeredEvent == Event.TAURI_EVENT_RECEIVED)
|
||||||
|
return;
|
||||||
|
|
||||||
switch (triggeredEvent)
|
switch (triggeredEvent)
|
||||||
{
|
{
|
||||||
case Event.REGISTER_FILE_DROP_AREA when sendingComponent != this:
|
case Event.REGISTER_FILE_DROP_AREA when sendingComponent != this:
|
||||||
@ -202,6 +208,9 @@ public partial class AttachDocuments : MSGComponentBase
|
|||||||
|
|
||||||
private async Task AddFilesManually()
|
private async Task AddFilesManually()
|
||||||
{
|
{
|
||||||
|
if (this.Disabled)
|
||||||
|
return;
|
||||||
|
|
||||||
// Ensure that Pandoc is installed and ready:
|
// Ensure that Pandoc is installed and ready:
|
||||||
var pandocState = await this.PandocAvailabilityService.EnsureAvailabilityAsync(
|
var pandocState = await this.PandocAvailabilityService.EnsureAvailabilityAsync(
|
||||||
showSuccessMessage: false,
|
showSuccessMessage: false,
|
||||||
@ -235,11 +244,17 @@ public partial class AttachDocuments : MSGComponentBase
|
|||||||
|
|
||||||
private async Task OpenAttachmentsDialog()
|
private async Task OpenAttachmentsDialog()
|
||||||
{
|
{
|
||||||
|
if (this.Disabled)
|
||||||
|
return;
|
||||||
|
|
||||||
this.DocumentPaths = await ReviewAttachmentsDialog.OpenDialogAsync(this.DialogService, this.DocumentPaths);
|
this.DocumentPaths = await ReviewAttachmentsDialog.OpenDialogAsync(this.DialogService, this.DocumentPaths);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task ClearAllFiles()
|
private async Task ClearAllFiles()
|
||||||
{
|
{
|
||||||
|
if (this.Disabled)
|
||||||
|
return;
|
||||||
|
|
||||||
this.DocumentPaths.Clear();
|
this.DocumentPaths.Clear();
|
||||||
await this.DocumentPathsChanged.InvokeAsync(this.DocumentPaths);
|
await this.DocumentPathsChanged.InvokeAsync(this.DocumentPaths);
|
||||||
await this.OnChange(this.DocumentPaths);
|
await this.OnChange(this.DocumentPaths);
|
||||||
@ -251,7 +266,7 @@ public partial class AttachDocuments : MSGComponentBase
|
|||||||
|
|
||||||
private void OnMouseEnter(EventArgs _)
|
private void OnMouseEnter(EventArgs _)
|
||||||
{
|
{
|
||||||
if(this.PauseCatchingDrops)
|
if(this.Disabled || this.PauseCatchingDrops)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this.Logger.LogDebug("Attach documents component '{Name}' is hovered.", this.Name);
|
this.Logger.LogDebug("Attach documents component '{Name}' is hovered.", this.Name);
|
||||||
@ -262,7 +277,7 @@ public partial class AttachDocuments : MSGComponentBase
|
|||||||
|
|
||||||
private void OnMouseLeave(EventArgs _)
|
private void OnMouseLeave(EventArgs _)
|
||||||
{
|
{
|
||||||
if(this.PauseCatchingDrops)
|
if(this.Disabled || this.PauseCatchingDrops)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this.Logger.LogDebug("Attach documents component '{Name}' is no longer hovered.", this.Name);
|
this.Logger.LogDebug("Attach documents component '{Name}' is no longer hovered.", this.Name);
|
||||||
@ -273,6 +288,9 @@ public partial class AttachDocuments : MSGComponentBase
|
|||||||
|
|
||||||
private async Task RemoveDocument(FileAttachment fileAttachment)
|
private async Task RemoveDocument(FileAttachment fileAttachment)
|
||||||
{
|
{
|
||||||
|
if (this.Disabled)
|
||||||
|
return;
|
||||||
|
|
||||||
this.DocumentPaths.Remove(fileAttachment);
|
this.DocumentPaths.Remove(fileAttachment);
|
||||||
|
|
||||||
await this.DocumentPathsChanged.InvokeAsync(this.DocumentPaths);
|
await this.DocumentPathsChanged.InvokeAsync(this.DocumentPaths);
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
<ActivatorContent>
|
<ActivatorContent>
|
||||||
@if (this.CurrentChatTemplate != ChatTemplate.NO_CHAT_TEMPLATE)
|
@if (this.CurrentChatTemplate != ChatTemplate.NO_CHAT_TEMPLATE)
|
||||||
{
|
{
|
||||||
<MudButton IconSize="Size.Large" StartIcon="@Icons.Material.Filled.RateReview" IconColor="Color.Default">
|
<MudButton IconSize="Size.Large" StartIcon="@this.ChatTemplateIcon(this.CurrentChatTemplate)" IconColor="Color.Default">
|
||||||
@this.CurrentChatTemplate.GetSafeName()
|
@this.CurrentChatTemplate.GetSafeName()
|
||||||
</MudButton>
|
</MudButton>
|
||||||
}
|
}
|
||||||
@ -22,7 +22,7 @@
|
|||||||
<MudDivider/>
|
<MudDivider/>
|
||||||
@foreach (var chatTemplate in this.SettingsManager.ConfigurationData.ChatTemplates.GetAllChatTemplates())
|
@foreach (var chatTemplate in this.SettingsManager.ConfigurationData.ChatTemplates.GetAllChatTemplates())
|
||||||
{
|
{
|
||||||
<MudMenuItem Icon="@Icons.Material.Filled.RateReview" OnClick="@(async () => await this.SelectionChanged(chatTemplate))">
|
<MudMenuItem Icon="@this.ChatTemplateIcon(chatTemplate)" OnClick="@(async () => await this.SelectionChanged(chatTemplate))">
|
||||||
@chatTemplate.GetSafeName()
|
@chatTemplate.GetSafeName()
|
||||||
</MudMenuItem>
|
</MudMenuItem>
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,6 +32,14 @@ public partial class ChatTemplateSelection : MSGComponentBase
|
|||||||
|
|
||||||
private string MarginClass => $"{this.MarginLeft} {this.MarginRight}";
|
private string MarginClass => $"{this.MarginLeft} {this.MarginRight}";
|
||||||
|
|
||||||
|
private string ChatTemplateIcon(ChatTemplate chatTemplate)
|
||||||
|
{
|
||||||
|
if (chatTemplate.IsEnterpriseConfiguration)
|
||||||
|
return Icons.Material.Filled.Business;
|
||||||
|
|
||||||
|
return Icons.Material.Filled.RateReview;
|
||||||
|
}
|
||||||
|
|
||||||
private async Task SelectionChanged(ChatTemplate chatTemplate)
|
private async Task SelectionChanged(ChatTemplate chatTemplate)
|
||||||
{
|
{
|
||||||
this.CurrentChatTemplate = chatTemplate;
|
this.CurrentChatTemplate = chatTemplate;
|
||||||
|
|||||||
@ -26,6 +26,7 @@
|
|||||||
AdornmentColor="Color.Info"
|
AdornmentColor="Color.Info"
|
||||||
Validation="@this.ValidateName"
|
Validation="@this.ValidateName"
|
||||||
Variant="Variant.Outlined"
|
Variant="Variant.Outlined"
|
||||||
|
ReadOnly="@this.IsReadOnly"
|
||||||
UserAttributes="@SPELLCHECK_ATTRIBUTES"
|
UserAttributes="@SPELLCHECK_ATTRIBUTES"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
@ -47,15 +48,16 @@
|
|||||||
Class="mb-3"
|
Class="mb-3"
|
||||||
UserAttributes="@SPELLCHECK_ATTRIBUTES"
|
UserAttributes="@SPELLCHECK_ATTRIBUTES"
|
||||||
HelperText="@T("Tell the AI your system prompt.")"
|
HelperText="@T("Tell the AI your system prompt.")"
|
||||||
|
ReadOnly="@this.IsReadOnly"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<MudJustifiedText Class="mb-3" Typo="Typo.body1">
|
<MudJustifiedText Class="mb-3" Typo="Typo.body1">
|
||||||
@T("Are you unsure which system prompt to use? You might start with the default system prompt that AI Studio uses for all chats.")
|
@T("Are you unsure which system prompt to use? You might start with the default system prompt that AI Studio uses for all chats.")
|
||||||
</MudJustifiedText>
|
</MudJustifiedText>
|
||||||
<MudButton Class="mb-3" Color="Color.Default" OnClick="@this.UseDefaultSystemPrompt" StartIcon="@Icons.Material.Filled.ListAlt" Variant="Variant.Filled">
|
<MudButton Class="mb-3" Color="Color.Default" OnClick="@this.UseDefaultSystemPrompt" StartIcon="@Icons.Material.Filled.ListAlt" Variant="Variant.Filled" Disabled="@this.IsReadOnly">
|
||||||
@T("Use the default system prompt")
|
@T("Use the default system prompt")
|
||||||
</MudButton>
|
</MudButton>
|
||||||
<ReadFileContent Text="@T("Load system prompt from file")" @bind-FileContent="@this.DataSystemPrompt"/>
|
<ReadFileContent Text="@T("Load system prompt from file")" @bind-FileContent="@this.DataSystemPrompt" Disabled="@this.IsReadOnly"/>
|
||||||
|
|
||||||
<MudText Typo="Typo.h6" Class="mb-3 mt-6">
|
<MudText Typo="Typo.h6" Class="mb-3 mt-6">
|
||||||
@T("Predefined User Input")
|
@T("Predefined User Input")
|
||||||
@ -77,6 +79,7 @@
|
|||||||
Class="mb-3"
|
Class="mb-3"
|
||||||
UserAttributes="@SPELLCHECK_ATTRIBUTES"
|
UserAttributes="@SPELLCHECK_ATTRIBUTES"
|
||||||
HelperText="@T("Tell the AI your predefined user input.")"
|
HelperText="@T("Tell the AI your predefined user input.")"
|
||||||
|
ReadOnly="@this.IsReadOnly"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<MudText Typo="Typo.h6" Class="mb-3 mt-6">
|
<MudText Typo="Typo.h6" Class="mb-3 mt-6">
|
||||||
@ -92,6 +95,7 @@
|
|||||||
UseSmallForm="false"
|
UseSmallForm="false"
|
||||||
CatchAllDocuments="true"
|
CatchAllDocuments="true"
|
||||||
ValidateMediaFileTypes="false"
|
ValidateMediaFileTypes="false"
|
||||||
|
Disabled="@this.IsReadOnly"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<MudText Typo="Typo.h6" Class="mb-3 mt-6">
|
<MudText Typo="Typo.h6" Class="mb-3 mt-6">
|
||||||
@ -100,7 +104,7 @@
|
|||||||
<MudJustifiedText Class="mb-3" Typo="Typo.body1">
|
<MudJustifiedText Class="mb-3" Typo="Typo.body1">
|
||||||
@T("Using some chat templates in tandem with profiles might cause issues. Therefore, you might prohibit the usage of profiles here.")
|
@T("Using some chat templates in tandem with profiles might cause issues. Therefore, you might prohibit the usage of profiles here.")
|
||||||
</MudJustifiedText>
|
</MudJustifiedText>
|
||||||
<MudTextSwitch @bind-Value="@this.AllowProfileUsage" Color="Color.Primary" Label="@T("Allow the use of profiles together with this chat template?")" LabelOn="@T("Yes, allow profiles when using this template")" LabelOff="@T("No, prohibit profile use for this template")" />
|
<MudTextSwitch @bind-Value="@this.AllowProfileUsage" Color="Color.Primary" Label="@T("Allow the use of profiles together with this chat template?")" LabelOn="@T("Yes, allow profiles when using this template")" LabelOff="@T("No, prohibit profile use for this template")" Disabled="@this.IsReadOnly" />
|
||||||
|
|
||||||
<MudText Typo="Typo.h6" Class="mb-3 mt-6">
|
<MudText Typo="Typo.h6" Class="mb-3 mt-6">
|
||||||
@T("Example Conversation")
|
@T("Example Conversation")
|
||||||
@ -140,7 +144,7 @@
|
|||||||
}
|
}
|
||||||
</MudTd>
|
</MudTd>
|
||||||
<MudTd>
|
<MudTd>
|
||||||
@if (!this.isInlineEditOnGoing)
|
@if (!this.isInlineEditOnGoing && !this.IsReadOnly)
|
||||||
{
|
{
|
||||||
<MudStack Row="true" Class="mb-2 mt-2" Wrap="Wrap.Wrap">
|
<MudStack Row="true" Class="mb-2 mt-2" Wrap="Wrap.Wrap">
|
||||||
<MudTooltip Text="@T("Add a new message below")">
|
<MudTooltip Text="@T("Add a new message below")">
|
||||||
@ -153,20 +157,27 @@
|
|||||||
</RowTemplate>
|
</RowTemplate>
|
||||||
<RowEditingTemplate>
|
<RowEditingTemplate>
|
||||||
<MudTd>
|
<MudTd>
|
||||||
<MudSelect Label="@T("Role")" @bind-Value="@context.Role" Required="true">
|
@if (this.IsReadOnly)
|
||||||
@foreach (var role in ChatRoles.ChatTemplateRoles())
|
{
|
||||||
{
|
@context.Role.ToChatTemplateName()
|
||||||
<MudSelectItem Value="@role">
|
}
|
||||||
@role.ToChatTemplateName()
|
else
|
||||||
</MudSelectItem>
|
{
|
||||||
}
|
<MudSelect Label="@T("Role")" @bind-Value="@context.Role" Required="true">
|
||||||
</MudSelect>
|
@foreach (var role in ChatRoles.ChatTemplateRoles())
|
||||||
|
{
|
||||||
|
<MudSelectItem Value="@role">
|
||||||
|
@role.ToChatTemplateName()
|
||||||
|
</MudSelectItem>
|
||||||
|
}
|
||||||
|
</MudSelect>
|
||||||
|
}
|
||||||
</MudTd>
|
</MudTd>
|
||||||
<MudTd>
|
<MudTd>
|
||||||
@switch(context.Content)
|
@switch(context.Content)
|
||||||
{
|
{
|
||||||
case ContentText textContent:
|
case ContentText textContent:
|
||||||
<MudTextField AutoGrow="true" @bind-Value="@textContent.Text" Label="@T("The message")" Required="true" Immediate="true" Placeholder="@T("Enter a message")"/>
|
<MudTextField AutoGrow="true" @bind-Value="@textContent.Text" Label="@T("The message")" Required="true" Immediate="true" Placeholder="@T("Enter a message")" ReadOnly="@this.IsReadOnly"/>
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -183,7 +194,7 @@
|
|||||||
</MudTable>
|
</MudTable>
|
||||||
</MudForm>
|
</MudForm>
|
||||||
|
|
||||||
@if (!this.isInlineEditOnGoing)
|
@if (!this.isInlineEditOnGoing && !this.IsReadOnly)
|
||||||
{
|
{
|
||||||
<MudButton Class="mb-6" Color="Color.Primary" OnClick="@this.AddMessageToEnd" StartIcon="@Icons.Material.Filled.Add" Variant="Variant.Filled">
|
<MudButton Class="mb-6" Color="Color.Primary" OnClick="@this.AddMessageToEnd" StartIcon="@Icons.Material.Filled.Add" Variant="Variant.Filled">
|
||||||
@T("Add a message")
|
@T("Add a message")
|
||||||
@ -193,22 +204,31 @@
|
|||||||
<Issues IssuesData="@this.dataIssues"/>
|
<Issues IssuesData="@this.dataIssues"/>
|
||||||
</DialogContent>
|
</DialogContent>
|
||||||
<DialogActions>
|
<DialogActions>
|
||||||
<MudButton OnClick="@this.Cancel" Variant="Variant.Filled">
|
@if (this.IsReadOnly)
|
||||||
@T("Cancel")
|
|
||||||
</MudButton>
|
|
||||||
|
|
||||||
@if (!this.isInlineEditOnGoing)
|
|
||||||
{
|
{
|
||||||
<MudButton OnClick="@this.Store" Variant="Variant.Filled" Color="Color.Primary">
|
<MudButton OnClick="@this.Cancel" Variant="Variant.Filled">
|
||||||
@if (this.IsEditing)
|
@T("Close")
|
||||||
{
|
|
||||||
@T("Update")
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
@T("Add")
|
|
||||||
}
|
|
||||||
</MudButton>
|
</MudButton>
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<MudButton OnClick="@this.Cancel" Variant="Variant.Filled">
|
||||||
|
@T("Cancel")
|
||||||
|
</MudButton>
|
||||||
|
|
||||||
|
@if (!this.isInlineEditOnGoing)
|
||||||
|
{
|
||||||
|
<MudButton OnClick="@this.Store" Variant="Variant.Filled" Color="Color.Primary">
|
||||||
|
@if (this.IsEditing)
|
||||||
|
{
|
||||||
|
@T("Update")
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
@T("Add")
|
||||||
|
}
|
||||||
|
</MudButton>
|
||||||
|
}
|
||||||
|
}
|
||||||
</DialogActions>
|
</DialogActions>
|
||||||
</MudDialog>
|
</MudDialog>
|
||||||
@ -47,6 +47,9 @@ public partial class ChatTemplateDialog : MSGComponentBase
|
|||||||
[Parameter]
|
[Parameter]
|
||||||
public bool IsEditing { get; init; }
|
public bool IsEditing { get; init; }
|
||||||
|
|
||||||
|
[Parameter]
|
||||||
|
public bool IsReadOnly { get; init; }
|
||||||
|
|
||||||
[Parameter]
|
[Parameter]
|
||||||
public IReadOnlyCollection<ContentBlock> ExampleConversation { get; init; } = [];
|
public IReadOnlyCollection<ContentBlock> ExampleConversation { get; init; } = [];
|
||||||
|
|
||||||
@ -142,11 +145,17 @@ public partial class ChatTemplateDialog : MSGComponentBase
|
|||||||
|
|
||||||
private void RemoveMessage(ContentBlock item)
|
private void RemoveMessage(ContentBlock item)
|
||||||
{
|
{
|
||||||
|
if (this.IsReadOnly)
|
||||||
|
return;
|
||||||
|
|
||||||
this.dataExampleConversation.Remove(item);
|
this.dataExampleConversation.Remove(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AddMessageToEnd()
|
private void AddMessageToEnd()
|
||||||
{
|
{
|
||||||
|
if (this.IsReadOnly)
|
||||||
|
return;
|
||||||
|
|
||||||
var newEntry = new ContentBlock
|
var newEntry = new ContentBlock
|
||||||
{
|
{
|
||||||
Role = this.dataExampleConversation.Count is 0 ? ChatRole.USER : this.dataExampleConversation.Last().Role.SelectNextRoleForTemplate(),
|
Role = this.dataExampleConversation.Count is 0 ? ChatRole.USER : this.dataExampleConversation.Last().Role.SelectNextRoleForTemplate(),
|
||||||
@ -161,6 +170,9 @@ public partial class ChatTemplateDialog : MSGComponentBase
|
|||||||
|
|
||||||
private void AddMessageBelow(ContentBlock currentItem)
|
private void AddMessageBelow(ContentBlock currentItem)
|
||||||
{
|
{
|
||||||
|
if (this.IsReadOnly)
|
||||||
|
return;
|
||||||
|
|
||||||
var insertedEntry = new ContentBlock
|
var insertedEntry = new ContentBlock
|
||||||
{
|
{
|
||||||
Role = this.dataExampleConversation.Count is 0 ? ChatRole.USER : this.dataExampleConversation.Last().Role.SelectNextRoleForTemplate(),
|
Role = this.dataExampleConversation.Count is 0 ? ChatRole.USER : this.dataExampleConversation.Last().Role.SelectNextRoleForTemplate(),
|
||||||
@ -180,6 +192,9 @@ public partial class ChatTemplateDialog : MSGComponentBase
|
|||||||
|
|
||||||
private void BackupItem(object? element)
|
private void BackupItem(object? element)
|
||||||
{
|
{
|
||||||
|
if (this.IsReadOnly)
|
||||||
|
return;
|
||||||
|
|
||||||
this.isInlineEditOnGoing = true;
|
this.isInlineEditOnGoing = true;
|
||||||
this.messageEntryBeforeEdit = element switch
|
this.messageEntryBeforeEdit = element switch
|
||||||
{
|
{
|
||||||
@ -192,6 +207,9 @@ public partial class ChatTemplateDialog : MSGComponentBase
|
|||||||
|
|
||||||
private void ResetItem(object? element)
|
private void ResetItem(object? element)
|
||||||
{
|
{
|
||||||
|
if (this.IsReadOnly)
|
||||||
|
return;
|
||||||
|
|
||||||
this.isInlineEditOnGoing = false;
|
this.isInlineEditOnGoing = false;
|
||||||
switch (element)
|
switch (element)
|
||||||
{
|
{
|
||||||
@ -209,12 +227,18 @@ public partial class ChatTemplateDialog : MSGComponentBase
|
|||||||
|
|
||||||
private void CommitInlineEdit(object? element)
|
private void CommitInlineEdit(object? element)
|
||||||
{
|
{
|
||||||
|
if (this.IsReadOnly)
|
||||||
|
return;
|
||||||
|
|
||||||
this.isInlineEditOnGoing = false;
|
this.isInlineEditOnGoing = false;
|
||||||
this.StateHasChanged();
|
this.StateHasChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task Store()
|
private async Task Store()
|
||||||
{
|
{
|
||||||
|
if (this.IsReadOnly)
|
||||||
|
return;
|
||||||
|
|
||||||
await this.form.Validate();
|
await this.form.Validate();
|
||||||
|
|
||||||
// When the data is not valid, we don't store it:
|
// When the data is not valid, we don't store it:
|
||||||
@ -263,6 +287,9 @@ public partial class ChatTemplateDialog : MSGComponentBase
|
|||||||
|
|
||||||
private void UseDefaultSystemPrompt()
|
private void UseDefaultSystemPrompt()
|
||||||
{
|
{
|
||||||
|
if (this.IsReadOnly)
|
||||||
|
return;
|
||||||
|
|
||||||
this.DataSystemPrompt = SystemPrompts.DEFAULT;
|
this.DataSystemPrompt = SystemPrompts.DEFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -27,6 +27,7 @@
|
|||||||
AdornmentColor="Color.Info"
|
AdornmentColor="Color.Info"
|
||||||
Validation="@this.ValidateName"
|
Validation="@this.ValidateName"
|
||||||
Variant="Variant.Outlined"
|
Variant="Variant.Outlined"
|
||||||
|
ReadOnly="@this.IsReadOnly"
|
||||||
UserAttributes="@SPELLCHECK_ATTRIBUTES"
|
UserAttributes="@SPELLCHECK_ATTRIBUTES"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
@ -44,8 +45,9 @@
|
|||||||
MaxLines="12"
|
MaxLines="12"
|
||||||
UserAttributes="@SPELLCHECK_ATTRIBUTES"
|
UserAttributes="@SPELLCHECK_ATTRIBUTES"
|
||||||
HelperText="@T("Tell the AI something about yourself. What is your profession? How experienced are you in this profession? Which technologies do you like?")"
|
HelperText="@T("Tell the AI something about yourself. What is your profession? How experienced are you in this profession? Which technologies do you like?")"
|
||||||
|
ReadOnly="@this.IsReadOnly"
|
||||||
/>
|
/>
|
||||||
<ReadFileContent @bind-FileContent="@this.DataNeedToKnow"/>
|
<ReadFileContent @bind-FileContent="@this.DataNeedToKnow" Disabled="@this.IsReadOnly"/>
|
||||||
|
|
||||||
<MudTextField
|
<MudTextField
|
||||||
T="string"
|
T="string"
|
||||||
@ -62,8 +64,9 @@
|
|||||||
Class="mt-10"
|
Class="mt-10"
|
||||||
UserAttributes="@SPELLCHECK_ATTRIBUTES"
|
UserAttributes="@SPELLCHECK_ATTRIBUTES"
|
||||||
HelperText="@T("Tell the AI what you want it to do for you. What are your goals or are you trying to achieve? Like having the AI address you informally.")"
|
HelperText="@T("Tell the AI what you want it to do for you. What are your goals or are you trying to achieve? Like having the AI address you informally.")"
|
||||||
|
ReadOnly="@this.IsReadOnly"
|
||||||
/>
|
/>
|
||||||
<ReadFileContent @bind-FileContent="@this.DataActions"/>
|
<ReadFileContent @bind-FileContent="@this.DataActions" Disabled="@this.IsReadOnly"/>
|
||||||
|
|
||||||
<MudJustifiedText Typo="Typo.body2" Class="mb-3 mt-3">
|
<MudJustifiedText Typo="Typo.body2" Class="mb-3 mt-3">
|
||||||
@T("Please be aware that your profile info becomes part of the system prompt. This means it uses up context space — the “memory” the LLM uses to understand and respond to your request. If your profile is extremely long, the LLM may struggle to focus on your actual task.")
|
@T("Please be aware that your profile info becomes part of the system prompt. This means it uses up context space — the “memory” the LLM uses to understand and respond to your request. If your profile is extremely long, the LLM may struggle to focus on your actual task.")
|
||||||
@ -73,18 +76,27 @@
|
|||||||
<Issues IssuesData="@this.dataIssues"/>
|
<Issues IssuesData="@this.dataIssues"/>
|
||||||
</DialogContent>
|
</DialogContent>
|
||||||
<DialogActions>
|
<DialogActions>
|
||||||
<MudButton OnClick="@this.Cancel" Variant="Variant.Filled">
|
@if (this.IsReadOnly)
|
||||||
@T("Cancel")
|
{
|
||||||
</MudButton>
|
<MudButton OnClick="@this.Cancel" Variant="Variant.Filled">
|
||||||
<MudButton OnClick="@this.Store" Variant="Variant.Filled" Color="Color.Primary">
|
@T("Close")
|
||||||
@if(this.IsEditing)
|
</MudButton>
|
||||||
{
|
}
|
||||||
@T("Update")
|
else
|
||||||
}
|
{
|
||||||
else
|
<MudButton OnClick="@this.Cancel" Variant="Variant.Filled">
|
||||||
{
|
@T("Cancel")
|
||||||
@T("Add")
|
</MudButton>
|
||||||
}
|
<MudButton OnClick="@this.Store" Variant="Variant.Filled" Color="Color.Primary">
|
||||||
</MudButton>
|
@if(this.IsEditing)
|
||||||
|
{
|
||||||
|
@T("Update")
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
@T("Add")
|
||||||
|
}
|
||||||
|
</MudButton>
|
||||||
|
}
|
||||||
</DialogActions>
|
</DialogActions>
|
||||||
</MudDialog>
|
</MudDialog>
|
||||||
@ -46,6 +46,9 @@ public partial class ProfileDialog : MSGComponentBase
|
|||||||
[Parameter]
|
[Parameter]
|
||||||
public bool IsEditing { get; init; }
|
public bool IsEditing { get; init; }
|
||||||
|
|
||||||
|
[Parameter]
|
||||||
|
public bool IsReadOnly { get; init; }
|
||||||
|
|
||||||
[Inject]
|
[Inject]
|
||||||
private ILogger<ProviderDialog> Logger { get; init; } = null!;
|
private ILogger<ProviderDialog> Logger { get; init; } = null!;
|
||||||
|
|
||||||
@ -108,6 +111,9 @@ public partial class ProfileDialog : MSGComponentBase
|
|||||||
|
|
||||||
private async Task Store()
|
private async Task Store()
|
||||||
{
|
{
|
||||||
|
if (this.IsReadOnly)
|
||||||
|
return;
|
||||||
|
|
||||||
await this.form.Validate();
|
await this.form.Validate();
|
||||||
|
|
||||||
// When the data is not valid, we don't store it:
|
// When the data is not valid, we don't store it:
|
||||||
|
|||||||
@ -33,9 +33,14 @@
|
|||||||
<MudTd>
|
<MudTd>
|
||||||
@if (context.IsEnterpriseConfiguration)
|
@if (context.IsEnterpriseConfiguration)
|
||||||
{
|
{
|
||||||
<MudTooltip Text="@T("This template is managed by your organization.")">
|
<MudStack Row="true" Class="mb-2 mt-2" Wrap="Wrap.Wrap">
|
||||||
<MudIconButton Color="Color.Info" Icon="@Icons.Material.Filled.Business" Disabled="true"/>
|
<MudTooltip Text="@T("This template is managed by your organization.")">
|
||||||
</MudTooltip>
|
<MudIconButton Color="Color.Info" Icon="@Icons.Material.Filled.Business" Disabled="true"/>
|
||||||
|
</MudTooltip>
|
||||||
|
<MudTooltip Text="@T("View")">
|
||||||
|
<MudIconButton Color="Color.Info" Icon="@Icons.Material.Filled.Visibility" OnClick="@(() => this.ViewChatTemplate(context))"/>
|
||||||
|
</MudTooltip>
|
||||||
|
</MudStack>
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -81,6 +81,25 @@ public partial class SettingsDialogChatTemplate : SettingsDialogBase
|
|||||||
await this.MessageBus.SendMessage<bool>(this, Event.CONFIGURATION_CHANGED);
|
await this.MessageBus.SendMessage<bool>(this, Event.CONFIGURATION_CHANGED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task ViewChatTemplate(ChatTemplate chatTemplate)
|
||||||
|
{
|
||||||
|
var dialogParameters = new DialogParameters<ChatTemplateDialog>
|
||||||
|
{
|
||||||
|
{ x => x.DataNum, chatTemplate.Num },
|
||||||
|
{ x => x.DataId, chatTemplate.Id },
|
||||||
|
{ x => x.DataName, chatTemplate.Name },
|
||||||
|
{ x => x.DataSystemPrompt, chatTemplate.SystemPrompt },
|
||||||
|
{ x => x.PredefinedUserPrompt, chatTemplate.PredefinedUserPrompt },
|
||||||
|
{ x => x.IsEditing, true },
|
||||||
|
{ x => x.IsReadOnly, true },
|
||||||
|
{ x => x.ExampleConversation, chatTemplate.ExampleConversation },
|
||||||
|
{ x => x.FileAttachments, chatTemplate.FileAttachments },
|
||||||
|
{ x => x.AllowProfileUsage, chatTemplate.AllowProfileUsage },
|
||||||
|
};
|
||||||
|
|
||||||
|
await this.DialogService.ShowAsync<ChatTemplateDialog>(T("View Chat Template"), dialogParameters, DialogOptions.FULLSCREEN);
|
||||||
|
}
|
||||||
|
|
||||||
private async Task DeleteChatTemplate(ChatTemplate chatTemplate)
|
private async Task DeleteChatTemplate(ChatTemplate chatTemplate)
|
||||||
{
|
{
|
||||||
var dialogParameters = new DialogParameters<ConfirmDialog>
|
var dialogParameters = new DialogParameters<ConfirmDialog>
|
||||||
|
|||||||
@ -32,9 +32,14 @@
|
|||||||
<MudTd>
|
<MudTd>
|
||||||
@if (context.IsEnterpriseConfiguration)
|
@if (context.IsEnterpriseConfiguration)
|
||||||
{
|
{
|
||||||
<MudTooltip Text="@T("This profile is managed by your organization.")">
|
<MudStack Row="true" Class="mb-2 mt-2" Wrap="Wrap.Wrap">
|
||||||
<MudIconButton Color="Color.Info" Icon="@Icons.Material.Filled.Business" Disabled="true"/>
|
<MudTooltip Text="@T("This profile is managed by your organization.")">
|
||||||
</MudTooltip>
|
<MudIconButton Color="Color.Info" Icon="@Icons.Material.Filled.Business" Disabled="true"/>
|
||||||
|
</MudTooltip>
|
||||||
|
<MudTooltip Text="@T("View")">
|
||||||
|
<MudIconButton Color="Color.Info" Icon="@Icons.Material.Filled.Visibility" OnClick="() => this.ViewProfile(context)"/>
|
||||||
|
</MudTooltip>
|
||||||
|
</MudStack>
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -49,6 +49,22 @@ public partial class SettingsDialogProfiles : SettingsDialogBase
|
|||||||
await this.MessageBus.SendMessage<bool>(this, Event.CONFIGURATION_CHANGED);
|
await this.MessageBus.SendMessage<bool>(this, Event.CONFIGURATION_CHANGED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task ViewProfile(Profile profile)
|
||||||
|
{
|
||||||
|
var dialogParameters = new DialogParameters<ProfileDialog>
|
||||||
|
{
|
||||||
|
{ x => x.DataNum, profile.Num },
|
||||||
|
{ x => x.DataId, profile.Id },
|
||||||
|
{ x => x.DataName, profile.Name },
|
||||||
|
{ x => x.DataNeedToKnow, profile.NeedToKnow },
|
||||||
|
{ x => x.DataActions, profile.Actions },
|
||||||
|
{ x => x.IsEditing, true },
|
||||||
|
{ x => x.IsReadOnly, true },
|
||||||
|
};
|
||||||
|
|
||||||
|
await this.DialogService.ShowAsync<ProfileDialog>(T("View Profile"), dialogParameters, DialogOptions.FULLSCREEN);
|
||||||
|
}
|
||||||
|
|
||||||
private async Task ExportProfile(Profile profile)
|
private async Task ExportProfile(Profile profile)
|
||||||
{
|
{
|
||||||
if (!this.SettingsManager.ConfigurationData.App.ShowAdminSettings)
|
if (!this.SettingsManager.ConfigurationData.App.ShowAdminSettings)
|
||||||
|
|||||||
@ -48,6 +48,15 @@ LANG_NAME = "Deutsch (Deutschland)"
|
|||||||
|
|
||||||
UI_TEXT_CONTENT = {}
|
UI_TEXT_CONTENT = {}
|
||||||
|
|
||||||
|
-- Self-hosted
|
||||||
|
UI_TEXT_CONTENT["::LLMPROVIDERSEXTENSIONS::T146444217"] = "Selbst gehostet"
|
||||||
|
|
||||||
|
-- No provider selected
|
||||||
|
UI_TEXT_CONTENT["::LLMPROVIDERSEXTENSIONS::T2897045472"] = "Kein Anbieter ausgewählt"
|
||||||
|
|
||||||
|
-- Unknown
|
||||||
|
UI_TEXT_CONTENT["::LLMPROVIDERSEXTENSIONS::T3424652889"] = "Unbekannt"
|
||||||
|
|
||||||
-- No audit provider is configured.
|
-- No audit provider is configured.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::AGENTS::ASSISTANTAUDIT::ASSISTANTAUDITAGENT::T2034826200"] = "Es ist kein Audit-Anbieter konfiguriert."
|
UI_TEXT_CONTENT["AISTUDIO::AGENTS::ASSISTANTAUDIT::ASSISTANTAUDITAGENT::T2034826200"] = "Es ist kein Audit-Anbieter konfiguriert."
|
||||||
|
|
||||||
@ -3516,6 +3525,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3227981830"] = "Die gle
|
|||||||
-- Add a message
|
-- Add a message
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3372872324"] = "Nachricht hinzufügen"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3372872324"] = "Nachricht hinzufügen"
|
||||||
|
|
||||||
|
-- Close
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3448155331"] = "Schließen"
|
||||||
|
|
||||||
-- Unsupported content type
|
-- Unsupported content type
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3570316759"] = "Nicht unterstützter Inhaltstyp"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3570316759"] = "Nicht unterstützter Inhaltstyp"
|
||||||
|
|
||||||
@ -4296,6 +4308,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::PROFILEDIALOG::T3243902394"] = "Der Profilna
|
|||||||
-- Profile Name
|
-- Profile Name
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::PROFILEDIALOG::T3392578705"] = "Profilname"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::PROFILEDIALOG::T3392578705"] = "Profilname"
|
||||||
|
|
||||||
|
-- Close
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::PROFILEDIALOG::T3448155331"] = "Schließen"
|
||||||
|
|
||||||
-- Please enter what the LLM should know about you and/or what actions it should take.
|
-- Please enter what the LLM should know about you and/or what actions it should take.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::PROFILEDIALOG::T3708405102"] = "Bitte geben Sie ein, was das LLM über Sie wissen sollte und/oder welche Aktionen es ausführen soll."
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::PROFILEDIALOG::T3708405102"] = "Bitte geben Sie ein, was das LLM über Sie wissen sollte und/oder welche Aktionen es ausführen soll."
|
||||||
|
|
||||||
@ -4815,6 +4830,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T14695
|
|||||||
-- Add Chat Template
|
-- Add Chat Template
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T1548314416"] = "Chat-Vorlage hinzufügen"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T1548314416"] = "Chat-Vorlage hinzufügen"
|
||||||
|
|
||||||
|
-- View
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T1582017048"] = "Anzeigen"
|
||||||
|
|
||||||
-- Note: This advanced feature is designed for users familiar with prompt engineering concepts. Furthermore, you have to make sure yourself that your chosen provider supports the use of assistant prompts.
|
-- Note: This advanced feature is designed for users familiar with prompt engineering concepts. Furthermore, you have to make sure yourself that your chosen provider supports the use of assistant prompts.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T1909110760"] = "Hinweis: Diese fortgeschrittene Funktion richtet sich an Nutzer, die mit den Grundlagen des Prompt Engineerings vertraut sind. Außerdem müssen Sie selbst sicherstellen, dass Ihr gewählter Anbieter die Verwendung von Assistenten-Prompts unterstützt."
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T1909110760"] = "Hinweis: Diese fortgeschrittene Funktion richtet sich an Nutzer, die mit den Grundlagen des Prompt Engineerings vertraut sind. Außerdem müssen Sie selbst sicherstellen, dass Ihr gewählter Anbieter die Verwendung von Assistenten-Prompts unterstützt."
|
||||||
|
|
||||||
@ -4854,6 +4872,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T38650
|
|||||||
-- Delete Chat Template
|
-- Delete Chat Template
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T4025180906"] = "Chat-Vorlage löschen"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T4025180906"] = "Chat-Vorlage löschen"
|
||||||
|
|
||||||
|
-- View Chat Template
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T4042112076"] = "Chat-Vorlage anzeigen"
|
||||||
|
|
||||||
-- Export Chat Template
|
-- Export Chat Template
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T491504763"] = "Chat-Vorlage exportieren"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T491504763"] = "Chat-Vorlage exportieren"
|
||||||
|
|
||||||
@ -5262,6 +5283,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T143353473
|
|||||||
-- Delete
|
-- Delete
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T1469573738"] = "Löschen"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T1469573738"] = "Löschen"
|
||||||
|
|
||||||
|
-- View
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T1582017048"] = "Anzeigen"
|
||||||
|
|
||||||
-- Your Profiles
|
-- Your Profiles
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T2378610256"] = "Ihre Profile"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T2378610256"] = "Ihre Profile"
|
||||||
|
|
||||||
@ -5286,6 +5310,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T405841465
|
|||||||
-- Store personal data about yourself in various profiles so that the AIs know your personal context. This saves you from having to explain your context each time, for example, in every chat. When you have different roles, you can create a profile for each role.
|
-- Store personal data about yourself in various profiles so that the AIs know your personal context. This saves you from having to explain your context each time, for example, in every chat. When you have different roles, you can create a profile for each role.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T4125557797"] = "Speichern Sie persönliche Daten über sich in verschiedenen Profilen, damit die KIs ihren persönlichen Kontext kennen. So müssen Sie den Kontext nicht jedes Mal erneut erklären, zum Beispiel in jedem Chat. Wenn Sie verschiedene Rollen haben, können Sie für jede Rolle ein eigenes Profil anlegen."
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T4125557797"] = "Speichern Sie persönliche Daten über sich in verschiedenen Profilen, damit die KIs ihren persönlichen Kontext kennen. So müssen Sie den Kontext nicht jedes Mal erneut erklären, zum Beispiel in jedem Chat. Wenn Sie verschiedene Rollen haben, können Sie für jede Rolle ein eigenes Profil anlegen."
|
||||||
|
|
||||||
|
-- View Profile
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T4219233997"] = "Profil anzeigen"
|
||||||
|
|
||||||
-- Add Profile
|
-- Add Profile
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T4248067241"] = "Profil hinzufügen"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T4248067241"] = "Profil hinzufügen"
|
||||||
|
|
||||||
@ -6723,15 +6750,6 @@ UI_TEXT_CONTENT["AISTUDIO::PROVIDER::CONFIDENCELEVELEXTENSIONS::T3188327965"] =
|
|||||||
-- Very Low
|
-- Very Low
|
||||||
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::CONFIDENCELEVELEXTENSIONS::T786675843"] = "Sehr niedrig"
|
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::CONFIDENCELEVELEXTENSIONS::T786675843"] = "Sehr niedrig"
|
||||||
|
|
||||||
-- Self-hosted
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::LLMPROVIDERSEXTENSIONS::T146444217"] = "Selbst gehostet"
|
|
||||||
|
|
||||||
-- No provider selected
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::LLMPROVIDERSEXTENSIONS::T2897045472"] = "Kein Anbieter ausgewählt"
|
|
||||||
|
|
||||||
-- Unknown
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::LLMPROVIDERSEXTENSIONS::T3424652889"] = "Unbekannt"
|
|
||||||
|
|
||||||
-- no model selected
|
-- no model selected
|
||||||
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::MODEL::T2234274832"] = "Kein Modell ausgewählt"
|
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::MODEL::T2234274832"] = "Kein Modell ausgewählt"
|
||||||
|
|
||||||
@ -7872,6 +7890,9 @@ UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::PANDOCAVAILABILITYSERVICE::T25964655
|
|||||||
-- Failed to store the secret data due to an API issue.
|
-- Failed to store the secret data due to an API issue.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T1110203516"] = "Fehler beim Speichern der geheimen Daten aufgrund eines API-Problems."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T1110203516"] = "Fehler beim Speichern der geheimen Daten aufgrund eines API-Problems."
|
||||||
|
|
||||||
|
-- Failed to store the API key due to an API issue.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T1704298921"] = "Fehler beim Speichern des API-Schlüssels aufgrund eines API-Problems."
|
||||||
|
|
||||||
-- Failed to delete the secret data due to an API issue.
|
-- Failed to delete the secret data due to an API issue.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T2303057928"] = "Das Löschen der geheimen Daten ist aufgrund eines API-Problems fehlgeschlagen."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T2303057928"] = "Das Löschen der geheimen Daten ist aufgrund eines API-Problems fehlgeschlagen."
|
||||||
|
|
||||||
|
|||||||
@ -48,6 +48,15 @@ LANG_NAME = "English (United States)"
|
|||||||
|
|
||||||
UI_TEXT_CONTENT = {}
|
UI_TEXT_CONTENT = {}
|
||||||
|
|
||||||
|
-- Self-hosted
|
||||||
|
UI_TEXT_CONTENT["::LLMPROVIDERSEXTENSIONS::T146444217"] = "Self-hosted"
|
||||||
|
|
||||||
|
-- No provider selected
|
||||||
|
UI_TEXT_CONTENT["::LLMPROVIDERSEXTENSIONS::T2897045472"] = "No provider selected"
|
||||||
|
|
||||||
|
-- Unknown
|
||||||
|
UI_TEXT_CONTENT["::LLMPROVIDERSEXTENSIONS::T3424652889"] = "Unknown"
|
||||||
|
|
||||||
-- No audit provider is configured.
|
-- No audit provider is configured.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::AGENTS::ASSISTANTAUDIT::ASSISTANTAUDITAGENT::T2034826200"] = "No audit provider is configured."
|
UI_TEXT_CONTENT["AISTUDIO::AGENTS::ASSISTANTAUDIT::ASSISTANTAUDITAGENT::T2034826200"] = "No audit provider is configured."
|
||||||
|
|
||||||
@ -3516,6 +3525,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3227981830"] = "Using s
|
|||||||
-- Add a message
|
-- Add a message
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3372872324"] = "Add a message"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3372872324"] = "Add a message"
|
||||||
|
|
||||||
|
-- Close
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3448155331"] = "Close"
|
||||||
|
|
||||||
-- Unsupported content type
|
-- Unsupported content type
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3570316759"] = "Unsupported content type"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::CHATTEMPLATEDIALOG::T3570316759"] = "Unsupported content type"
|
||||||
|
|
||||||
@ -4296,6 +4308,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::PROFILEDIALOG::T3243902394"] = "The profile
|
|||||||
-- Profile Name
|
-- Profile Name
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::PROFILEDIALOG::T3392578705"] = "Profile Name"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::PROFILEDIALOG::T3392578705"] = "Profile Name"
|
||||||
|
|
||||||
|
-- Close
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::PROFILEDIALOG::T3448155331"] = "Close"
|
||||||
|
|
||||||
-- Please enter what the LLM should know about you and/or what actions it should take.
|
-- Please enter what the LLM should know about you and/or what actions it should take.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::PROFILEDIALOG::T3708405102"] = "Please enter what the LLM should know about you and/or what actions it should take."
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::PROFILEDIALOG::T3708405102"] = "Please enter what the LLM should know about you and/or what actions it should take."
|
||||||
|
|
||||||
@ -4815,6 +4830,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T14695
|
|||||||
-- Add Chat Template
|
-- Add Chat Template
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T1548314416"] = "Add Chat Template"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T1548314416"] = "Add Chat Template"
|
||||||
|
|
||||||
|
-- View
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T1582017048"] = "View"
|
||||||
|
|
||||||
-- Note: This advanced feature is designed for users familiar with prompt engineering concepts. Furthermore, you have to make sure yourself that your chosen provider supports the use of assistant prompts.
|
-- Note: This advanced feature is designed for users familiar with prompt engineering concepts. Furthermore, you have to make sure yourself that your chosen provider supports the use of assistant prompts.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T1909110760"] = "Note: This advanced feature is designed for users familiar with prompt engineering concepts. Furthermore, you have to make sure yourself that your chosen provider supports the use of assistant prompts."
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T1909110760"] = "Note: This advanced feature is designed for users familiar with prompt engineering concepts. Furthermore, you have to make sure yourself that your chosen provider supports the use of assistant prompts."
|
||||||
|
|
||||||
@ -4854,6 +4872,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T38650
|
|||||||
-- Delete Chat Template
|
-- Delete Chat Template
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T4025180906"] = "Delete Chat Template"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T4025180906"] = "Delete Chat Template"
|
||||||
|
|
||||||
|
-- View Chat Template
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T4042112076"] = "View Chat Template"
|
||||||
|
|
||||||
-- Export Chat Template
|
-- Export Chat Template
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T491504763"] = "Export Chat Template"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGCHATTEMPLATE::T491504763"] = "Export Chat Template"
|
||||||
|
|
||||||
@ -5262,6 +5283,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T143353473
|
|||||||
-- Delete
|
-- Delete
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T1469573738"] = "Delete"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T1469573738"] = "Delete"
|
||||||
|
|
||||||
|
-- View
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T1582017048"] = "View"
|
||||||
|
|
||||||
-- Your Profiles
|
-- Your Profiles
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T2378610256"] = "Your Profiles"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T2378610256"] = "Your Profiles"
|
||||||
|
|
||||||
@ -5286,6 +5310,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T405841465
|
|||||||
-- Store personal data about yourself in various profiles so that the AIs know your personal context. This saves you from having to explain your context each time, for example, in every chat. When you have different roles, you can create a profile for each role.
|
-- Store personal data about yourself in various profiles so that the AIs know your personal context. This saves you from having to explain your context each time, for example, in every chat. When you have different roles, you can create a profile for each role.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T4125557797"] = "Store personal data about yourself in various profiles so that the AIs know your personal context. This saves you from having to explain your context each time, for example, in every chat. When you have different roles, you can create a profile for each role."
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T4125557797"] = "Store personal data about yourself in various profiles so that the AIs know your personal context. This saves you from having to explain your context each time, for example, in every chat. When you have different roles, you can create a profile for each role."
|
||||||
|
|
||||||
|
-- View Profile
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T4219233997"] = "View Profile"
|
||||||
|
|
||||||
-- Add Profile
|
-- Add Profile
|
||||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T4248067241"] = "Add Profile"
|
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::SETTINGS::SETTINGSDIALOGPROFILES::T4248067241"] = "Add Profile"
|
||||||
|
|
||||||
@ -6723,15 +6750,6 @@ UI_TEXT_CONTENT["AISTUDIO::PROVIDER::CONFIDENCELEVELEXTENSIONS::T3188327965"] =
|
|||||||
-- Very Low
|
-- Very Low
|
||||||
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::CONFIDENCELEVELEXTENSIONS::T786675843"] = "Very Low"
|
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::CONFIDENCELEVELEXTENSIONS::T786675843"] = "Very Low"
|
||||||
|
|
||||||
-- Self-hosted
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::LLMPROVIDERSEXTENSIONS::T146444217"] = "Self-hosted"
|
|
||||||
|
|
||||||
-- No provider selected
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::LLMPROVIDERSEXTENSIONS::T2897045472"] = "No provider selected"
|
|
||||||
|
|
||||||
-- Unknown
|
|
||||||
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::LLMPROVIDERSEXTENSIONS::T3424652889"] = "Unknown"
|
|
||||||
|
|
||||||
-- no model selected
|
-- no model selected
|
||||||
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::MODEL::T2234274832"] = "no model selected"
|
UI_TEXT_CONTENT["AISTUDIO::PROVIDER::MODEL::T2234274832"] = "no model selected"
|
||||||
|
|
||||||
@ -7872,6 +7890,9 @@ UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::PANDOCAVAILABILITYSERVICE::T25964655
|
|||||||
-- Failed to store the secret data due to an API issue.
|
-- Failed to store the secret data due to an API issue.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T1110203516"] = "Failed to store the secret data due to an API issue."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T1110203516"] = "Failed to store the secret data due to an API issue."
|
||||||
|
|
||||||
|
-- Failed to store the API key due to an API issue.
|
||||||
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T1704298921"] = "Failed to store the API key due to an API issue."
|
||||||
|
|
||||||
-- Failed to delete the secret data due to an API issue.
|
-- Failed to delete the secret data due to an API issue.
|
||||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T2303057928"] = "Failed to delete the secret data due to an API issue."
|
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::RUSTSERVICE::T2303057928"] = "Failed to delete the secret data due to an API issue."
|
||||||
|
|
||||||
|
|||||||
@ -1,2 +1,4 @@
|
|||||||
# v26.6.2, build 242 (2026-06-xx xx:xx UTC)
|
# v26.6.2, build 242 (2026-06-xx xx:xx UTC)
|
||||||
|
- Added a read-only view for organization-managed profiles and chat templates, so users can inspect the content while the organization remains in control of changes.
|
||||||
|
- Fixed organization-managed chat templates not showing the correct icon in the chat template selection menu.
|
||||||
- Fixed self-hosted provider API keys sometimes being stored under a localized name. AI Studio now uses a stable key name, keeps correct entries working, and automatically migrates known localized entries for LLM, transcription, and embedding providers. Organizations using configuration plugins do not need to change their plugins; affected users who still see an invalid API key warning should open the provider, transcription, or embedding settings and update the API key once.
|
- Fixed self-hosted provider API keys sometimes being stored under a localized name. AI Studio now uses a stable key name, keeps correct entries working, and automatically migrates known localized entries for LLM, transcription, and embedding providers. Organizations using configuration plugins do not need to change their plugins; affected users who still see an invalid API key warning should open the provider, transcription, or embedding settings and update the API key once.
|
||||||
Loading…
Reference in New Issue
Block a user