mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-11-04 19:08:45 +00:00
Added a SWOT analysis assistant (#1122)
Co-authored-by: hart_s3 <sabrina.hartmann@dlr.de>
This commit is contained in:
1 parent
6cb20fd75a
commit
060a2a5734
87 files changed
+4601
-45
No files matched your search
@@ -0,0 +1,72 @@
|
||||
using AIStudio.Chat;
|
||||
using AIStudio.Provider;
|
||||
using AIStudio.Settings.DataModel;
|
||||
|
||||
namespace AIStudio.Tests.Chat;
|
||||
|
||||
/// <summary>
|
||||
/// Checks how a thread takes over the restrictions of another thread whose result it shows.
|
||||
/// </summary>
|
||||
[TestFixture]
|
||||
public sealed class ChatThreadRestrictionsOfTests
|
||||
{
|
||||
private const string DATA_SOURCE_ID = "3e8b1d6f-9a2c-4f7e-b5d1-6c4a9e2f8b17";
|
||||
private const string WIKI_HOST = "wiki.example.org";
|
||||
|
||||
[Test]
|
||||
public void AllThreeRestrictionsComeAlong()
|
||||
{
|
||||
var researchThread = new ChatThread();
|
||||
researchThread.RequireProviderConfidence(ConfidenceLevel.HIGH);
|
||||
researchThread.RequireDataSecurity(DataSourceSecurity.SELF_HOSTED);
|
||||
researchThread.RequireOutboundDataRestriction(new(OutboundDataRestriction.ONLY_LINKS_FROM_CHAT, OutboundDataOrigin.DATA_SOURCE, DATA_SOURCE_ID));
|
||||
var assistantThread = new ChatThread();
|
||||
|
||||
assistantThread.RequireRestrictionsOf(researchThread);
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(assistantThread.RequiredProviderConfidence, Is.EqualTo(ConfidenceLevel.HIGH));
|
||||
Assert.That(assistantThread.DataSecurity, Is.EqualTo(DataSourceSecurity.SELF_HOSTED));
|
||||
Assert.That(assistantThread.RequiredOutboundDataRestriction.Restriction, Is.EqualTo(OutboundDataRestriction.ONLY_LINKS_FROM_CHAT));
|
||||
Assert.That(assistantThread.RequiredOutboundDataRestriction.Reference, Is.EqualTo(DATA_SOURCE_ID));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ALooserThreadLoosensNothing()
|
||||
{
|
||||
var assistantThread = new ChatThread();
|
||||
assistantThread.RequireProviderConfidence(ConfidenceLevel.HIGH);
|
||||
assistantThread.RequireDataSecurity(DataSourceSecurity.SELF_HOSTED);
|
||||
assistantThread.RequireOutboundDataRestriction(new(OutboundDataRestriction.ONLY_CONFIGURED_SERVICES, OutboundDataOrigin.CONFLUENCE_WIKI, WIKI_HOST));
|
||||
var researchThread = new ChatThread();
|
||||
researchThread.RequireProviderConfidence(ConfidenceLevel.LOW);
|
||||
researchThread.RequireDataSecurity(DataSourceSecurity.ALLOW_ANY);
|
||||
researchThread.RequireOutboundDataRestriction(new(OutboundDataRestriction.ONLY_LINKS_FROM_CHAT, OutboundDataOrigin.DATA_SOURCE, DATA_SOURCE_ID));
|
||||
|
||||
assistantThread.RequireRestrictionsOf(researchThread);
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(assistantThread.RequiredProviderConfidence, Is.EqualTo(ConfidenceLevel.HIGH));
|
||||
Assert.That(assistantThread.DataSecurity, Is.EqualTo(DataSourceSecurity.SELF_HOSTED));
|
||||
Assert.That(assistantThread.RequiredOutboundDataRestriction.Restriction, Is.EqualTo(OutboundDataRestriction.ONLY_CONFIGURED_SERVICES));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AThreadWhichReadNothingDemandsNothing()
|
||||
{
|
||||
var assistantThread = new ChatThread();
|
||||
|
||||
assistantThread.RequireRestrictionsOf(new ChatThread());
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(assistantThread.RequiredProviderConfidence, Is.EqualTo(ConfidenceLevel.NONE));
|
||||
Assert.That(assistantThread.DataSecurity, Is.EqualTo(DataSourceSecurity.NOT_SPECIFIED));
|
||||
Assert.That(assistantThread.RequiredOutboundDataRestriction, Is.EqualTo(OutboundDataRequirement.NONE));
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
using System.Text.Json;
|
||||
|
||||
using AIStudio.Chat;
|
||||
|
||||
namespace AIStudio.Tests.Chat;
|
||||
|
||||
[TestFixture]
|
||||
public sealed class ContentPresentationTests
|
||||
{
|
||||
[Test]
|
||||
public void TheDataHashCodeFollowsNewData()
|
||||
{
|
||||
var presentation = ContentPresentation.Create(ContentPresentationKind.SWOT_ANALYSIS, new { heading = "First" });
|
||||
var firstHashCode = presentation.GetDataHashCode();
|
||||
|
||||
presentation.Data = JsonSerializer.SerializeToElement(new { heading = "Second" });
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(firstHashCode, Is.Not.Zero);
|
||||
Assert.That(presentation.GetDataHashCode(), Is.Not.EqualTo(firstHashCode));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void APresentationWithoutDataHasTheHashCodeZero()
|
||||
{
|
||||
var presentation = new ContentPresentation { Kind = ContentPresentationKind.SWOT_ANALYSIS };
|
||||
|
||||
Assert.That(presentation.GetDataHashCode(), Is.Zero);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ACloneHasTheSameDataHashCode()
|
||||
{
|
||||
var presentation = ContentPresentation.Create(ContentPresentationKind.SWOT_ANALYSIS, new { heading = "First" });
|
||||
|
||||
Assert.That(presentation.DeepClone().GetDataHashCode(), Is.EqualTo(presentation.GetDataHashCode()));
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user