Skip to content

Commit e44dc82

Browse files
[release/9.5] Display help text for GenAI sensitive data when no messages (#11668)
* Display help text for enabling GenAI sensitive data when there are no messages * Update * Handle error spans --------- Co-authored-by: James Newton-King <[email protected]>
1 parent 457a727 commit e44dc82

File tree

2 files changed

+47
-2
lines changed

2 files changed

+47
-2
lines changed

src/Aspire.Dashboard/Model/GenAI/GenAIVisualizerDialogViewModel.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public static GenAIVisualizerDialogViewModel Create(
9191
viewModel.InputMessages = viewModel.Items.Where(e => e.Type is GenAIItemType.SystemMessage or GenAIItemType.UserMessage or GenAIItemType.AssistantMessage or GenAIItemType.ToolMessage).ToList();
9292
viewModel.OutputMessages = viewModel.Items.Where(e => e.Type == GenAIItemType.OutputMessage).ToList();
9393

94-
viewModel.NoMessageContent = AllMessagesHaveNoContent(viewModel.InputMessages) && AllMessagesHaveNoContent(viewModel.OutputMessages);
94+
viewModel.NoMessageContent = AllMessagesHaveNoContent(viewModel.InputMessages) && AllMessagesHaveNoContent(viewModel.OutputMessages) && viewModel.ErrorItem == null;
9595

9696
return viewModel;
9797
}
@@ -100,7 +100,8 @@ private static bool AllMessagesHaveNoContent(List<GenAIItemViewModel> messageVie
100100
{
101101
if (messageViewModels.Count == 0)
102102
{
103-
return false;
103+
// Microsoft.Extensions.AI doesn't output any message telemetry when sensitive data isn't enabled.
104+
return true;
104105
}
105106

106107
foreach (var messageViewModel in messageViewModels)

tests/Aspire.Dashboard.Tests/Model/GenAIVisualizerDialogViewModelTests.cs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,50 @@ public void Create_GenAISpanAttributesWithoutContent_HasNoMessageContent()
542542
Assert.True(vm.NoMessageContent);
543543
}
544544

545+
[Fact]
546+
public void Create_NoMessages_HasNoMessageContent()
547+
{
548+
// Arrange
549+
var repository = CreateRepository();
550+
551+
var attributes = new KeyValuePair<string, string>[]
552+
{
553+
KeyValuePair.Create(GenAIHelpers.GenAISystem, "System!"),
554+
KeyValuePair.Create("server.address", "ai-server.address"),
555+
};
556+
557+
var addContext = new AddContext();
558+
repository.AddTraces(addContext, new RepeatedField<ResourceSpans>()
559+
{
560+
new ResourceSpans
561+
{
562+
Resource = CreateResource(),
563+
ScopeSpans =
564+
{
565+
new ScopeSpans
566+
{
567+
Scope = CreateScope(),
568+
Spans =
569+
{
570+
CreateSpan(traceId: "1", spanId: "1-1", startTime: s_testTime.AddMinutes(1), endTime: s_testTime.AddMinutes(10), attributes: attributes)
571+
}
572+
}
573+
}
574+
}
575+
});
576+
Assert.Equal(0, addContext.FailureCount);
577+
578+
var span = repository.GetSpan(GetHexId("1"), GetHexId("1-1"))!;
579+
var spanDetailsViewModel = SpanDetailsViewModel.Create(span, repository, repository.GetResources());
580+
581+
// Act
582+
var vm = Create(repository, spanDetailsViewModel);
583+
584+
// Assert
585+
Assert.Empty(vm.Items);
586+
Assert.True(vm.NoMessageContent);
587+
}
588+
545589
private static GenAIVisualizerDialogViewModel Create(
546590
TelemetryRepository repository,
547591
SpanDetailsViewModel spanDetailsViewModel)

0 commit comments

Comments
 (0)