mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-11-05 04:27:21 +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,107 @@
|
||||
using AIStudio.Assistants.SWOTAnalysis;
|
||||
using AIStudio.Chat;
|
||||
using AIStudio.Provider;
|
||||
|
||||
namespace AIStudio.Tests.Assistants.SWOTAnalysis;
|
||||
|
||||
[TestFixture]
|
||||
public sealed class SwotAnalysisSendToChatTests
|
||||
{
|
||||
private const string ADDRESS_A_MODEL_CHOSE = "https://research.example.org/report";
|
||||
|
||||
[Test]
|
||||
public void TheChatGetsTheVisibleRequestAndTheVisibleResultOnly()
|
||||
{
|
||||
var assistantThread = CreateAssistantThread();
|
||||
var result = assistantThread.Blocks.Last();
|
||||
var visiblePrompt = VisiblePrompt(result.Time.AddTicks(-1));
|
||||
|
||||
var chatThread = AssistantSWOTAnalysis.CreateChatThreadForResult(assistantThread, visiblePrompt, result);
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(chatThread.Blocks, Has.Count.EqualTo(2));
|
||||
Assert.That(chatThread.Blocks[0], Is.SameAs(visiblePrompt));
|
||||
Assert.That(chatThread.Blocks[1].Role, Is.EqualTo(ChatRole.AI));
|
||||
Assert.That(chatThread.Blocks[1].HideFromUser, Is.False);
|
||||
Assert.That(((ContentText)chatThread.Blocks[1].Content!).Text, Is.EqualTo("## SWOT Matrix"));
|
||||
Assert.That(chatThread.Blocks[1].Content, Is.Not.SameAs(result.Content));
|
||||
Assert.That(chatThread.SystemPrompt, Is.EqualTo(SystemPrompts.DEFAULT));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AnAddressAModelWroteIsNotGivenInTheChat()
|
||||
{
|
||||
var assistantThread = CreateAssistantThread();
|
||||
var result = assistantThread.Blocks.Last();
|
||||
|
||||
var chatThread = AssistantSWOTAnalysis.CreateChatThreadForResult(assistantThread, VisiblePrompt(result.Time.AddTicks(-1)), result);
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(assistantThread.IsWebAddressGivenToTheModel(new Uri(ADDRESS_A_MODEL_CHOSE)), Is.True, "The hidden request counts as a message of the user.");
|
||||
Assert.That(chatThread.IsWebAddressGivenToTheModel(new Uri(ADDRESS_A_MODEL_CHOSE)), Is.False);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TheChatKeepsTheIdAndTheRestrictionsOfTheAssistant()
|
||||
{
|
||||
var assistantThread = CreateAssistantThread();
|
||||
assistantThread.RequireProviderConfidence(ConfidenceLevel.HIGH);
|
||||
var result = assistantThread.Blocks.Last();
|
||||
|
||||
var chatThread = AssistantSWOTAnalysis.CreateChatThreadForResult(assistantThread, VisiblePrompt(result.Time.AddTicks(-1)), result);
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(chatThread.ChatId, Is.EqualTo(assistantThread.ChatId));
|
||||
Assert.That(chatThread.RequiredProviderConfidence, Is.EqualTo(ConfidenceLevel.HIGH));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void WithoutAResultTheChatStartsEmpty()
|
||||
{
|
||||
var chatThread = AssistantSWOTAnalysis.CreateChatThreadForResult(CreateAssistantThread(), null, null);
|
||||
|
||||
Assert.That(chatThread.Blocks, Is.Empty);
|
||||
}
|
||||
|
||||
private static ChatThread CreateAssistantThread()
|
||||
{
|
||||
var time = DateTimeOffset.Now;
|
||||
return new ChatThread
|
||||
{
|
||||
ChatId = Guid.NewGuid(),
|
||||
Blocks =
|
||||
[
|
||||
new ContentBlock
|
||||
{
|
||||
Time = time,
|
||||
Role = ChatRole.USER,
|
||||
ContentType = ContentType.TEXT,
|
||||
HideFromUser = true,
|
||||
Content = new ContentText { Text = $"The opportunities rest on {ADDRESS_A_MODEL_CHOSE}." },
|
||||
},
|
||||
new ContentBlock
|
||||
{
|
||||
Time = time.AddSeconds(1),
|
||||
Role = ChatRole.AI,
|
||||
ContentType = ContentType.TEXT,
|
||||
HideFromUser = true,
|
||||
Content = new ContentText { Text = "## SWOT Matrix" },
|
||||
},
|
||||
],
|
||||
};
|
||||
}
|
||||
|
||||
private static ContentBlock VisiblePrompt(DateTimeOffset time) => new()
|
||||
{
|
||||
Time = time,
|
||||
Role = ChatRole.USER,
|
||||
ContentType = ContentType.TEXT,
|
||||
Content = new ContentText { Text = "Create a SWOT analysis of my content" },
|
||||
};
|
||||
}
|
||||
Reference in new issue
Block a user