mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-05-13 09:14:12 +00:00
included the BuildPrompt method into the Audit dialog
This commit is contained in:
parent
c4f65a4bba
commit
6933a19df7
@ -110,8 +110,19 @@ public sealed class AssistantAuditAgent(ILogger<AssistantAuditAgent> logger, ILo
|
||||
logger.LogInformation($"The assistant plugin audit agent uses the provider '{provider.InstanceName}' ({provider.UsedLLMProvider.ToName()}, confidence={provider.UsedLLMProvider.GetConfidence(this.SettingsManager).Level.GetName()}).");
|
||||
|
||||
var promptPreview = await plugin.BuildAuditPromptPreviewAsync(token);
|
||||
var promptFallbackPreview = plugin.BuildAuditPromptFallbackPreview();
|
||||
var luaManifest = FormatLuaManifest(plugin.ReadAllLuaFiles());
|
||||
var componentOverview = plugin.CreateAuditComponentSummary();
|
||||
var promptMechanism = plugin.HasCustomPromptBuilder ? "BuildPrompt (active) with UserPrompt fallback also shown for reference" : "UserPrompt fallback";
|
||||
var promptFallbackSection = plugin.HasCustomPromptBuilder
|
||||
? $$"""
|
||||
UserPrompt fallback preview (reference only, not the active prompt path):
|
||||
```
|
||||
{{promptFallbackPreview}}
|
||||
```
|
||||
|
||||
"""
|
||||
: string.Empty;
|
||||
var userPrompt = $$"""
|
||||
Audit this assistant plugin for concrete security risks.
|
||||
Only report findings that are supported by the provided material.
|
||||
@ -128,11 +139,16 @@ public sealed class AssistantAuditAgent(ILogger<AssistantAuditAgent> logger, ILo
|
||||
{{plugin.RawSystemPrompt}}
|
||||
```
|
||||
|
||||
Simulated user prompt preview:
|
||||
Active prompt construction method:
|
||||
{{promptMechanism}}
|
||||
|
||||
Effective user prompt preview:
|
||||
```
|
||||
{{promptPreview}}
|
||||
```
|
||||
|
||||
{{promptFallbackSection}}
|
||||
|
||||
Component overview (compact structure summary):
|
||||
```
|
||||
{{componentOverview}}
|
||||
|
||||
@ -2938,6 +2938,9 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::WORKSPACES::T701874671"] = "Delete Worksp
|
||||
-- Entries: {0}
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T1098127509"] = "Entries: {0}"
|
||||
|
||||
-- User Prompt Preview
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T1184162672"] = "User Prompt Preview"
|
||||
|
||||
-- {0:0.##} GB
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T1224874808"] = "{0:0.##} GB"
|
||||
|
||||
@ -2983,6 +2986,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T165738710"] = "
|
||||
-- Enable Assistant Plugin
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T1676241565"] = "Enable Assistant Plugin"
|
||||
|
||||
-- User Prompt
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T1700917692"] = "User Prompt"
|
||||
|
||||
-- Unknown plugin
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T1834795216"] = "Unknown plugin"
|
||||
|
||||
@ -3019,8 +3025,8 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T3156437951"] =
|
||||
-- Findings
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T3224848879"] = "Findings"
|
||||
|
||||
-- {0} | Last modified {1}
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T3350447013"] = "{0} | Last modified {1}"
|
||||
-- Advanced Prompt Building
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T3399544173"] = "Advanced Prompt Building"
|
||||
|
||||
-- The assistant plugin \"{0}\" was audited with the level \"{1}\", which is below the required safety level \"{2}\". Your current settings still allow activation, but this may be unsafe. Do you really want to enable this plugin?
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T3418077666"] = "The assistant plugin \\\"{0}\\\" was audited with the level \\\"{1}\\\", which is below the required safety level \\\"{2}\\\". Your current settings still allow activation, but this may be unsafe. Do you really want to enable this plugin?"
|
||||
@ -3055,8 +3061,8 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T3844960449"] =
|
||||
-- empty
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T413646574"] = "empty"
|
||||
|
||||
-- Prompt Preview
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T576347259"] = "Prompt Preview"
|
||||
-- Fallback Prompt
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T4229995215"] = "Fallback Prompt"
|
||||
|
||||
-- System Prompt
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T628396066"] = "System Prompt"
|
||||
|
||||
@ -14,8 +14,8 @@
|
||||
{
|
||||
<MudStack Spacing="2">
|
||||
<MudAlert Severity="Severity.Info" Dense="true">
|
||||
@T("This security check uses a sample prompt preview. Empty or placeholder values in the preview are expected.")
|
||||
</MudAlert>
|
||||
@T("This security check uses a sample prompt preview. Empty or placeholder values in the preview are expected.")
|
||||
</MudAlert>
|
||||
|
||||
<MudPaper Class="pa-3 border-dashed border rounded-lg">
|
||||
<MudText Typo="Typo.h6">@this.plugin.Name</MudText>
|
||||
@ -44,11 +44,28 @@
|
||||
<TitleContent>
|
||||
<div class="d-flex">
|
||||
<MudIcon Icon="@Icons.Material.Filled.Preview" class="mr-3" Color="Color.Primary"></MudIcon>
|
||||
<MudText>@T("Prompt Preview")</MudText>
|
||||
<MudText>@T("User Prompt Preview")</MudText>
|
||||
</div>
|
||||
</TitleContent>
|
||||
<ChildContent>
|
||||
<MudTextField T="string" Text="@this.promptPreview" ReadOnly="true" Variant="Variant.Outlined" Lines="8" Class="mt-2"/>
|
||||
<MudAlert Severity="Severity.Info"></MudAlert>
|
||||
@{
|
||||
var promptBuilder = this.plugin.HasCustomPromptBuilder;
|
||||
var sortDirection = promptBuilder ? SortDirection.Ascending : SortDirection.Descending;
|
||||
var badgeColor = promptBuilder ? Color.Success : Color.Error;
|
||||
var fallbackBadgeColor = !promptBuilder ? Color.Success : Color.Error;
|
||||
|
||||
var fallbackText = promptBuilder ? T("Fallback Prompt") : T("User Prompt");
|
||||
|
||||
<MudTabs Centered="true" SortDirection="@sortDirection" Rounded="true" ApplyEffectsToContainer="true">
|
||||
<MudTabPanel SortKey="A" Text="@T("Advanced Prompt Building")" Icon="@Icons.Material.Filled.Build" BadgeDot="@true" BadgeColor="@badgeColor" Disabled="@(!promptBuilder)">
|
||||
<MudTextField T="string" Text="@this.promptPreview" ReadOnly="true" Variant="Variant.Outlined" Lines="10"/>
|
||||
</MudTabPanel>
|
||||
<MudTabPanel SortKey="B" Text="@fallbackText" Icon="@Icons.Material.Filled.EditNote" BadgeDot="@true" BadgeColor="@fallbackBadgeColor">
|
||||
<MudTextField T="string" Text="@this.promptFallbackPreview" ReadOnly="true" Variant="Variant.Outlined" Lines="10"/>
|
||||
</MudTabPanel>
|
||||
</MudTabs>
|
||||
}
|
||||
</ChildContent>
|
||||
</MudExpansionPanel>
|
||||
<MudExpansionPanel KeepContentAlive="false">
|
||||
|
||||
@ -32,6 +32,7 @@ public partial class AssistantPluginAuditDialog : MSGComponentBase
|
||||
private PluginAssistants? plugin;
|
||||
private PluginAssistantAudit? audit;
|
||||
private string promptPreview = string.Empty;
|
||||
private string promptFallbackPreview = string.Empty;
|
||||
private string componentSummary = string.Empty;
|
||||
private ImmutableDictionary<string, string> luaFiles = ImmutableDictionary.Create<string, string>();
|
||||
private IReadOnlyCollection<TreeItemData<ITreeItem>> componentTreeItems = [];
|
||||
@ -76,6 +77,7 @@ public partial class AssistantPluginAuditDialog : MSGComponentBase
|
||||
if (this.plugin is not null)
|
||||
{
|
||||
this.promptPreview = await this.plugin.BuildAuditPromptPreviewAsync();
|
||||
this.promptFallbackPreview = this.plugin.BuildAuditPromptFallbackPreview();
|
||||
this.componentSummary = this.plugin.CreateAuditComponentSummary();
|
||||
this.componentTreeItems = this.CreateAuditTreeItems(this.plugin.RootComponent);
|
||||
this.fileSystemTreeItems = this.CreatePluginFileSystemTreeItems(this.plugin.PluginPath);
|
||||
@ -376,8 +378,7 @@ public partial class AssistantPluginAuditDialog : MSGComponentBase
|
||||
Value = new AssistantAuditTreeItem
|
||||
{
|
||||
Text = Path.GetFileName(filePath),
|
||||
Caption = string.Format(TB("{0} | Last modified {1}"), this.FormatFileSize(fileInfo.Length),
|
||||
this.FormatFileTimestamp(fileInfo.LastWriteTime)),
|
||||
Caption = string.Empty,
|
||||
Icon = this.GetFileIcon(filePath),
|
||||
Expandable = false,
|
||||
IsComponent = false,
|
||||
|
||||
@ -2940,6 +2940,9 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::WORKSPACES::T701874671"] = "Arbeitsbereic
|
||||
-- Entries: {0}
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T1098127509"] = "Einträge: {0}"
|
||||
|
||||
-- User Prompt Preview
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T1184162672"] = "Vorschau der Benutzereingabe"
|
||||
|
||||
-- {0:0.##} GB
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T1224874808"] = "{0:0.##} GB"
|
||||
|
||||
@ -2985,6 +2988,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T165738710"] = "
|
||||
-- Enable Assistant Plugin
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T1676241565"] = "Assistant-Plugin aktivieren"
|
||||
|
||||
-- User Prompt
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T1700917692"] = "Benutzereingabe"
|
||||
|
||||
-- Unknown plugin
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T1834795216"] = "Unbekanntes Plugin"
|
||||
|
||||
@ -3021,8 +3027,8 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T3156437951"] =
|
||||
-- Findings
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T3224848879"] = "Ergebnisse"
|
||||
|
||||
-- {0} | Last modified {1}
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T3350447013"] = "{0} | Zuletzt geändert {1}"
|
||||
-- Advanced Prompt Building
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T3399544173"] = "Erweiterte Prompt-Erstellung"
|
||||
|
||||
-- The assistant plugin \"{0}\" was audited with the level \"{1}\", which is below the required safety level \"{2}\". Your current settings still allow activation, but this may be unsafe. Do you really want to enable this plugin?
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T3418077666"] = "Das Assistenten-Plugin „{0}“ wurde mit der Stufe „{1}“ geprüft, die unter der erforderlichen Sicherheitsstufe „{2}“ liegt. Ihre aktuellen Einstellungen erlauben die Aktivierung dennoch, aber dies kann unsicher sein. Möchten Sie dieses Plugin wirklich aktivieren?"
|
||||
@ -3057,8 +3063,8 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T3844960449"] =
|
||||
-- empty
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T413646574"] = "leer"
|
||||
|
||||
-- Prompt Preview
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T576347259"] = "Prompt-Vorschau"
|
||||
-- Fallback Prompt
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T4229995215"] = "Ersatz-Prompt"
|
||||
|
||||
-- System Prompt
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T628396066"] = "System-Prompt"
|
||||
|
||||
@ -2940,6 +2940,9 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::WORKSPACES::T701874671"] = "Delete Worksp
|
||||
-- Entries: {0}
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T1098127509"] = "Entries: {0}"
|
||||
|
||||
-- User Prompt Preview
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T1184162672"] = "User Prompt Preview"
|
||||
|
||||
-- {0:0.##} GB
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T1224874808"] = "{0:0.##} GB"
|
||||
|
||||
@ -2985,6 +2988,9 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T165738710"] = "
|
||||
-- Enable Assistant Plugin
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T1676241565"] = "Enable Assistant Plugin"
|
||||
|
||||
-- User Prompt
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T1700917692"] = "User Prompt"
|
||||
|
||||
-- Unknown plugin
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T1834795216"] = "Unknown plugin"
|
||||
|
||||
@ -3021,8 +3027,8 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T3156437951"] =
|
||||
-- Findings
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T3224848879"] = "Findings"
|
||||
|
||||
-- {0} | Last modified {1}
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T3350447013"] = "{0} | Last modified {1}"
|
||||
-- Advanced Prompt Building
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T3399544173"] = "Advanced Prompt Building"
|
||||
|
||||
-- The assistant plugin \"{0}\" was audited with the level \"{1}\", which is below the required safety level \"{2}\". Your current settings still allow activation, but this may be unsafe. Do you really want to enable this plugin?
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T3418077666"] = "The assistant plugin \\\"{0}\\\" was audited with the level \\\"{1}\\\", which is below the required safety level \\\"{2}\\\". Your current settings still allow activation, but this may be unsafe. Do you really want to enable this plugin?"
|
||||
@ -3057,8 +3063,8 @@ UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T3844960449"] =
|
||||
-- empty
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T413646574"] = "empty"
|
||||
|
||||
-- Prompt Preview
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T576347259"] = "Prompt Preview"
|
||||
-- Fallback Prompt
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T4229995215"] = "Fallback Prompt"
|
||||
|
||||
-- System Prompt
|
||||
UI_TEXT_CONTENT["AISTUDIO::DIALOGS::ASSISTANTPLUGINAUDITDIALOG::T628396066"] = "System Prompt"
|
||||
|
||||
@ -184,6 +184,15 @@ public sealed class PluginAssistants(bool isInternal, LuaState state, PluginType
|
||||
return !string.IsNullOrWhiteSpace(prompt) ? prompt : CollectPromptFallback(this.RootComponent?.Children ?? [], assistantState);
|
||||
}
|
||||
|
||||
public string BuildAuditPromptFallbackPreview()
|
||||
{
|
||||
var assistantState = new AssistantState();
|
||||
if (this.RootComponent is not null)
|
||||
InitializeState(this.RootComponent.Children, assistantState);
|
||||
|
||||
return CollectPromptFallback(this.RootComponent?.Children ?? [], assistantState);
|
||||
}
|
||||
|
||||
public string CreateAuditComponentSummary()
|
||||
{
|
||||
if (this.RootComponent is null)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user