Skip to content

Commit cbf4483

Browse files
author
Piotr Stachaczynski
committed
finalize FE adjustments
1 parent bef2ba8 commit cbf4483

25 files changed

Lines changed: 734 additions & 398 deletions

File tree

.models

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
gemma:2b
1+
gemma2:2b
22
llama3.1:8b
33
phi3:mini
44

Docs/Images/temp/test.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
{
1+
[
2+
{
23
"id": "d2f191c7-f08b-4285-b0d6-bb99a045ebde",
34
"name": "agent_one",
45
"description": "This is the first RAG agent",
5-
"model": "llama3:8b",
6+
"model": "llama3.1:8b",
67
"context":
78
{
89
"instruction": "You are shop assistant in a GeekITStuff store. You have to help the customer in finding the right product",
@@ -24,17 +25,16 @@
2425
"b29211e9-9ee8-45f4-bdbb-054cb835d0d6"
2526
]
2627
}
27-
}
28-
29-
28+
},
3029
{
3130
"id": "b29211e9-9ee8-45f4-bdbb-054cb835d0d6",
3231
"name": "agent_three",
3332
"description": "This is the third RAG agent",
34-
"model": "llama3:8b",
33+
"model": "llama3.1:8b",
3534
"context":
3635
{
3736
"instruction": "Adjust previous response to be better for marketting purposes. Dont include any introduction, just pure content",
3837
"steps": ["ANSWER"]
3938
}
40-
}
39+
}
40+
]

Frontend/MainFE/Components/Elements/ChatComponent.razor

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,19 +43,28 @@
4343
[Parameter] public string SelectedModel { get; set; }
4444
[Parameter] public bool IsLoading { get; set; }
4545
[Parameter] public string? CustomName { get; set; }
46+
[Parameter] public bool IsRagChat { get; set; }
47+
[Parameter] public string? AgentId { get; set; }
48+
[Parameter] public bool Translate { get; set; }
4649

4750
private string _ask = string.Empty;
4851
private string _displayName => CustomName ?? SelectedModel;
4952

5053
private async Task SendAsync(string message)
5154
{
55+
if (IsRagChat)
56+
{
57+
await RaGSendAsync(message);
58+
return;
59+
}
60+
5261
IsLoading = true;
5362
if (!string.IsNullOrWhiteSpace(message))
5463
{
5564
Chat.Messages.Add(new Message { Role = Role.User.ToString(), Content = message });
5665
Chat.Model = SelectedModel;
5766

58-
var apiResponse = await Http.PostAsJsonAsync($"{ExtensionMethods.GetApiUrl()}/api/chats/complete", Chat);
67+
var apiResponse = await Http.PostAsJsonAsync($"{ExtensionMethods.GetApiUrl()}/api/chats/complete?translate={Translate}", Chat);
5968

6069
if (apiResponse.IsSuccessStatusCode)
6170
{
@@ -70,6 +79,29 @@
7079
}
7180
}
7281

82+
private async Task RaGSendAsync(string message)
83+
{
84+
IsLoading = true;
85+
if (!string.IsNullOrWhiteSpace(message))
86+
{
87+
Chat.Messages.Add(new Message { Role = Role.User.ToString(), Content = message });
88+
Chat.Model = SelectedModel;
89+
90+
var apiResponse = await Http.PostAsJsonAsync($"{ExtensionMethods.GetApiUrl()}/api/agents/{AgentId}/process", Chat);
91+
92+
if (apiResponse.IsSuccessStatusCode)
93+
{
94+
var response = await apiResponse.Content.ReadFromJsonAsync<ChatDto>();
95+
if (response != null)
96+
{
97+
Chat = response;
98+
}
99+
}
100+
IsLoading = false;
101+
_ask = string.Empty;
102+
}
103+
}
104+
73105
private async Task CheckEnterKey(KeyboardEventArgs e)
74106
{
75107
if (e.Key == "Enter")

Frontend/MainFE/Components/Layout/NavMenu.razor

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,17 @@
44
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);
55
background-color: #1e1e1e !important;
66
}
7+
8+
.disabledNav{
9+
cursor: not-allowed !important;
10+
pointer-events: none;
11+
color: #6c757d;
12+
}
13+
14+
.enabled{
15+
color: #ffffff !important;
16+
}
17+
718
</style>
819

920
<nav class="navbar navbar-expand-md navbar-dark bg-dark mb-4 gradient">
@@ -15,18 +26,29 @@
1526
<div class="collapse navbar-collapse" id="navbarSupportedContent">
1627
<ul class="navbar-nav mb-2 mb-md-0 w-100">
1728
<li class="nav-item">
18-
<NavLink class="nav-link" href="chat">
29+
<NavLink class="nav-link enabled" href="chat">
1930
<span class="oi oi-plus" aria-hidden="true"></span> 💬 Chat
2031
</NavLink>
2132
</li>
2233
<li class="nav-item">
23-
<NavLink class="nav-link" href="agents">
34+
<NavLink class="nav-link enabled" href="agents">
2435
<span class="oi oi-plus" aria-hidden="true"></span> 👥 Agents
2536
</NavLink>
2637
</li>
38+
<li class="nav-item">
39+
<NavLink class="nav-link disabledNav" href="agents" id="disabledNav">
40+
<span class="oi oi-plus" aria-hidden="true"></span> 👁 Vision
41+
</NavLink>
42+
</li>
43+
<li class="nav-item">
44+
<NavLink class="nav-link disabledNav" href="agents" id="disabledNav">
45+
<span class="oi oi-plus" aria-hidden="true"></span> 🎨 Images
46+
</NavLink>
47+
</li>
2748
</ul>
2849
</div>
2950
</div>
51+
<FluentTooltip Anchor="disabledNav" HideTooltipOnCursorLeave="true" Position=TooltipPosition.Bottom Delay=5>Feature in development</FluentTooltip>
3052
</nav>
3153

3254
@code {

Frontend/MainFE/Components/Models/AgentContextDto.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ namespace MaIN.Models.Rag;
33
public class AgentContextDto
44
{
55
public string Instruction { get; set; }
6+
public object? Source { get; set; }
67
public List<string> Steps { get; set; }
78
public List<string>? Relations { get; set; }
89

Frontend/MainFE/Components/Models/ChatDto.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,7 @@ public class ChatDto
1010
[JsonPropertyName("model")] public string Model { get; set; }
1111
[JsonPropertyName("messages")] public List<Message> Messages { get; set; }
1212
[JsonPropertyName("stream")] public bool Stream { get; set; } = false;
13+
[JsonPropertyName("properties")]
14+
public Dictionary<string, string> Properties { get; set; }
1315
[JsonIgnore] public bool IsSelected { get; set; }
1416
}

Frontend/MainFE/Components/Pages/Agents.razor

Lines changed: 39 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
@using Microsoft.FluentUI.AspNetCore.Components
55
@using MainFE.Components.Elements
66
@inject HttpClient Http
7+
@inject NavigationManager Nav
78
@rendermode InteractiveServer
89

910
<PageTitle>👥 Agents</PageTitle>
@@ -19,26 +20,43 @@
1920
<FluentGridItem lg="6" md="4" sm="6" xs="12" Style="margin-left: 5rem;">
2021
<h2>Predefined Agents</h2>
2122
</FluentGridItem>
23+
<FluentGridItem lg="1">
24+
<button @onclick="NavigateToDemo" class="cleanup-button" style="font-size: 13px !important; background-color: #4CAF50 !important; margin-left: 3rem">
25+
<i class="fas fa-flask"></i> Demo
26+
</button>
27+
</FluentGridItem>
2228
@foreach (var agent in agents.Where(x => _predefinedAgents.Contains(x.Id)))
2329
{
24-
<FluentGridItem lg="3" md="4" sm="6" xs="12" Class="agent-tile" @onclick="() => ViewAgentDetails(agent.Id)">
25-
<div class="agent-content">
26-
<div class="badge-agent-model">@agent.Model</div>
27-
@if (agent.Id == "b29211e9-9ee8-45f4-bdbb-054cb835d0d6")
28-
{
30+
@if (agent.Id == "b29211e9-9ee8-45f4-bdbb-054cb835d0d6")
31+
{
32+
<FluentGridItem lg="3" md="4" sm="6" xs="12" Class="agent-tile" @onclick="() => ViewAgentDetails(agent.Id)">
33+
<div class="agent-content">
34+
<div class="badge-agent-model">@agent.Model</div>
2935
<span class="agent-emoji">👑</span>
30-
}
31-
@if (agent.Id == "c39211w9-9ee8-4xf4-edbb-b54cb835d2d6")
32-
{
36+
<p>@agent.Description</p>
37+
</div>
38+
</FluentGridItem>
39+
}
40+
@if (agent.Id == "c39211w9-9ee8-4xf4-edbb-b54cb835d2d6")
41+
{
42+
<FluentGridItem lg="3" md="4" sm="6" xs="12" Class="agent-tile" @onclick="() => ViewAgentDetails(agent.Id)">
43+
<div class="agent-content">
44+
<div class="badge-agent-model">@agent.Model</div>
3345
<span class="agent-emoji">🎮</span>
34-
}
35-
@if (agent.Id == "vd9d11w9-9ee8-4xf4-edbb-b54cb335d25b")
36-
{
46+
<p>@agent.Description</p>
47+
</div>
48+
</FluentGridItem>
49+
}
50+
@if (agent.Id == "vd9d11w9-9ee8-4xf4-edbb-b54cb335d25b")
51+
{
52+
<FluentGridItem lg="3" md="4" sm="6" xs="12" Class="agent-tile" @onclick="() => ViewAgentDetails(agent.Id)">
53+
<div class="agent-content">
54+
<div class="badge-agent-model">@agent.Model</div>
3755
<span class="agent-emoji">👨‍⚕️</span>
38-
}
39-
<p>@agent.Description</p>
40-
</div>
41-
</FluentGridItem>
56+
<p>@agent.Description</p>
57+
</div>
58+
</FluentGridItem>
59+
}
4260
}
4361
@if (agents.Any(x => !_predefinedAgents.Contains(x.Id)))
4462
{
@@ -159,7 +177,7 @@
159177

160178
@code {
161179

162-
private List<string> _predefinedAgents = ["b29211e9-9ee8-45f4-bdbb-054cb835d0d6", "c39211w9-9ee8-4xf4-edbb-b54cb835d2d6", "vd9d11w9-9ee8-4xf4-edbb-b54cb335d25b"];
180+
private List<string> _predefinedAgents = ["d2f191c7-f08b-4285-b0d6-bb99a045ebde","f29211e9-9xe8-45f4-bdbb-054cb835d0d6","b29211e9-9ee8-45f4-bdbb-054cb835d0d6", "c39211w9-9ee8-4xf4-edbb-b54cb835d2d6", "vd9d11w9-9ee8-4xf4-edbb-b54cb335d25b"];
163181

164182
// Models
165183
AgentDto newAgent;
@@ -245,5 +263,10 @@
245263
_mode = AgentsPageMode.Create;
246264
}
247265

266+
private void NavigateToDemo()
267+
{
268+
Nav.NavigateTo("/rag");
269+
}
270+
248271
}
249272

Frontend/MainFE/Components/Pages/Chat.razor

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,10 @@
66
@using Message = MainFE.Components.Models.Message
77
@using MainFE.Components.Elements
88
@inject HttpClient Http
9-
@rendermode InteractiveServer
9+
@rendermode @(new InteractiveServerRenderMode(prerender: false))
1010

1111
<PageTitle>💬 Chat</PageTitle>
1212
<link rel="stylesheet" href="css/chat.css">
13-
1413
<FluentGrid Class="containerbox" Spacing="1" Justify="JustifyContent.FlexStart">
1514
<FluentGridItem lg="3" sm="12" xs="12" Class="sidebar">
1615
<FluentButton OnClick="@NewChatAsync"
@@ -33,32 +32,44 @@
3332
}
3433
</FluentGridItem>
3534
<FluentGridItem lg="6" xs="12" Class="chat-container">
36-
<ChatComponent Chat="@_selectedChat" SelectedModel="@selectedModel" IsLoading="@_loading" />
35+
<ChatComponent Chat="@_selectedChat" Translate="@_translate" SelectedModel="@_selectedModel" IsLoading="@_loading"/>
3736
</FluentGridItem>
3837
<FluentGridItem lg="2" xs="12" Style="padding: 10px">
3938
<h3 style="color: #3dd5f3">Select a Model</h3>
40-
<TileSelect TItem="string" Items="models" SelectedItem="selectedModel" SelectedItemChanged="OnModelSelected"/>
39+
<TileSelect TItem="string" Items="_models" SelectedItem="_selectedModel" SelectedItemChanged="OnModelSelected"/>
40+
41+
<br/>
42+
<h3 style="color: #3dd5f3">Multilingual</h3>
43+
<div class="containerToggle">
44+
<span class="text">Improve translations</span>
45+
<input type="checkbox" @bind="_translate" id="checkboxInput">
46+
<label for="checkboxInput" class="toggleSwitch"></label>
47+
</div>
48+
4149
</FluentGridItem>
4250
</FluentGrid>
4351

4452
@code {
53+
4554
// Models
46-
List<string> models = [];
47-
string selectedModel = string.Empty;
55+
bool _translate = false;
56+
List<string> _models = [];
57+
string _selectedModel = string.Empty;
58+
bool _loading = false;
4859

4960
// Data
5061
List<ChatDto> _chats = new();
62+
5163
ChatDto _selectedChat = new()
5264
{
5365
Messages = []
5466
};
55-
bool _loading = false;
5667

5768
private void OnModelSelected(string model)
5869
{
59-
selectedModel = model;
70+
_selectedModel = model;
6071
}
61-
72+
6273
protected override async Task OnInitializedAsync()
6374
{
6475
await LoadChatsAsync();
@@ -79,8 +90,8 @@
7990
var response = await Http.GetAsync($"{ExtensionMethods.GetApiUrl()}/api/chats/models");
8091
if (response.IsSuccessStatusCode)
8192
{
82-
models = await response.Content.ReadFromJsonAsync<List<string>>() ?? [];
83-
selectedModel = models!.First();
93+
_models = await response.Content.ReadFromJsonAsync<List<string>>() ?? [];
94+
_selectedModel = _models!.First();
8495
}
8596
}
8697

@@ -111,7 +122,7 @@
111122
{
112123
var newChatRequest = new ChatRequest
113124
{
114-
Model = selectedModel,
125+
Model = _selectedModel,
115126
Messages = new List<Message>(),
116127
Name = $"{AssetName.NewName()} | {DateTime.Now.ToShortDateString()}",
117128
Stream = false,

0 commit comments

Comments
 (0)