feat: optimize suggestions and LLM server configuration

- Added duplicate filtering for suggestions in both backend (Rust) and frontend (JavaScript)
- Changed announcement summary schedule from every 15 minutes to hourly at :37
- Simplified LLM prompt for document summarization
- Updated LLM server configuration with reduced GPU layers and increased context size
- Removed memory mapping and lock settings for LLM server
- Improved HTML formatting and added missing newline at EOF
This commit is contained in:
Rodrigo Rodriguez (Pragmatismo) 2025-11-03 13:38:55 -03:00
parent 78543b5223
commit 4c279d2a19
4 changed files with 19 additions and 10 deletions

View file

@ -676,9 +676,12 @@ impl BotOrchestrator {
.query_async(&mut conn)
.await?;
// Filter out duplicate suggestions
let mut seen = std::collections::HashSet::new();
suggestions
.into_iter()
.filter_map(|s| serde_json::from_str::<Suggestion>(&s).ok())
.filter(|s| seen.insert((s.text.clone(), s.context.clone())))
.collect()
} else {
Vec::new()

View file

@ -1,7 +1,7 @@
SET_SCHEDULE "*/15 * * * *"
SET_SCHEDULE "37 * * * *"
let text = GET "announcements.gbkb/news/news.pdf"
let resume = LLM "Resume this document: " + text
let resume = LLM "In a short phrase, resume this: " + text
SET_BOT_MEMORY "resume", resume

View file

@ -15,13 +15,14 @@ llm-server,false
llm-server-path,botserver-stack/bin/llm/build/bin
llm-server-host,0.0.0.0
llm-server-port,8081
llm-server-gpu-layers,35
llm-server-n-moe,23
llm-server-ctx-size,512
llm-server-parallel,8
llm-server-gpu-layers,0
llm-server-n-moe,0
llm-server-ctx-size,2048
llm-server-parallel,2
llm-server-cont-batching,true
llm-server-mlock,true
llm-server-no-mmap,true
llm-server-mlock,false
llm-server-no-mmap,false
email-from,from@domain.com
email-server,mail.domain.com

Can't render this file because it has a wrong number of fields in line 25.

View file

@ -1734,7 +1734,12 @@
// Clear existing suggestions before adding new ones
container.innerHTML = '';
suggestions.forEach(s => {
// Filter out duplicate suggestions
const uniqueSuggestions = suggestions.filter((s, index, self) =>
index === self.findIndex(t => t.text === s.text && t.context === s.context)
);
uniqueSuggestions.forEach(s => {
const btn = document.createElement('button');
btn.textContent = s.text;
btn.className = 'suggestion-button';