Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add message-id to messages list in API response #86

Open
wants to merge 26 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
62a7012
feat: Updated src/memory.rs
sweep-ai[bot] Oct 9, 2023
4455113
feat: Updated src/reducer.rs
sweep-ai[bot] Oct 9, 2023
ae4e0ba
Merge main into sweep/add-message-id-to-messages
sweep-ai[bot] Oct 18, 2023
8eb7025
Merge main into sweep/add-message-id-to-messages
sweep-ai[bot] Oct 18, 2023
001f0b1
Merge main into sweep/add-message-id-to-messages
sweep-ai[bot] Oct 23, 2023
02cdb7c
Merge main into sweep/add-message-id-to-messages
sweep-ai[bot] Oct 23, 2023
e7c888b
Merge main into sweep/add-message-id-to-messages
sweep-ai[bot] Oct 23, 2023
72e4895
Merge main into sweep/add-message-id-to-messages
sweep-ai[bot] Oct 24, 2023
531c4c4
Merge main into sweep/add-message-id-to-messages
sweep-ai[bot] Nov 1, 2023
d5389ef
Merge main into sweep/add-message-id-to-messages
sweep-ai[bot] Nov 11, 2023
465a71c
Merge main into sweep/add-message-id-to-messages
sweep-ai[bot] Nov 11, 2023
2bc2dcf
Merge main into sweep/add-message-id-to-messages
sweep-ai[bot] Nov 11, 2023
ea6f6f4
Merge main into sweep/add-message-id-to-messages
sweep-ai[bot] Nov 14, 2023
1785b12
Merge main into sweep/add-message-id-to-messages
sweep-ai[bot] Nov 14, 2023
2d5f0a8
Merge main into sweep/add-message-id-to-messages
sweep-ai[bot] Nov 14, 2023
a5ee3cf
Merge main into sweep/add-message-id-to-messages
sweep-ai[bot] Nov 16, 2023
29273d2
Merge main into sweep/add-message-id-to-messages
sweep-ai[bot] Nov 16, 2023
988d7b7
Merge main into sweep/add-message-id-to-messages
sweep-ai[bot] Nov 28, 2023
faf0601
Merge main into sweep/add-message-id-to-messages
sweep-ai[bot] Dec 19, 2023
3515380
Merge main into sweep/add-message-id-to-messages
sweep-ai[bot] Jan 22, 2024
3b83c78
Merge main into sweep/add-message-id-to-messages
sweep-ai[bot] Feb 21, 2024
4db4a85
Merge main into sweep/add-message-id-to-messages
sweep-ai[bot] Mar 4, 2024
e4ff5a5
Merge main into sweep/add-message-id-to-messages
sweep-ai[bot] Mar 6, 2024
697e336
Merge main into sweep/add-message-id-to-messages
sweep-ai[bot] Apr 18, 2024
2b29f97
Merge main into sweep/add-message-id-to-messages
sweep-ai[bot] Apr 19, 2024
f459577
Merge main into sweep/add-message-id-to-messages
sweep-ai[bot] Apr 25, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 22 additions & 16 deletions src/memory.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use crate::long_term_memory::index_messages;
use uuid::Uuid;
use crate::models::{
AckResponse, AppState, GetSessionsQuery, MemoryMessage, MemoryMessagesAndContext,
MemoryResponse, NamespaceQuery,
Expand Down Expand Up @@ -88,18 +89,19 @@ pub async fn get_memory(
.unwrap_or(0);

let messages: Vec<MemoryMessage> = messages
.into_iter()
.filter_map(|message| {
let mut parts = message.splitn(2, ": ");
match (parts.next(), parts.next()) {
(Some(role), Some(content)) => Some(MemoryMessage {
role: role.to_string(),
content: content.to_string(),
}),
_ => None,
}
})
.collect();
.into_iter()
.filter_map(|message| {
let mut parts = message.splitn(2, ": ");
match (parts.next(), parts.next()) {
(Some(role), Some(content)) => Some(MemoryMessage {
role: role.to_string(),
content: content.to_string(),
message_id: Uuid::new_v4().to_string(),
}),
_ => None,
}
})
.collect();

let response = MemoryResponse {
messages,
Expand Down Expand Up @@ -130,7 +132,10 @@ pub async fn post_memory(
let messages: Vec<String> = memory_messages
.messages
.into_iter()
.map(|memory_message| format!("{}: {}", memory_message.role, memory_message.content))
.map(|memory_message| {
let message_id = Uuid::new_v4().to_string();
format!("{}: {}", memory_message.role, memory_message.content, message_id)
})
.collect();

// If new context is passed in we overwrite the existing one
Expand Down Expand Up @@ -237,9 +242,10 @@ pub async fn delete_memory(
.map_err(error::ErrorInternalServerError)?;

redis::Cmd::del(keys)
.query_async(&mut conn)
.await
.map_err(error::ErrorInternalServerError)?;
.arg(&message_id)
.query_async(&mut conn)
.await
.map_err(error::ErrorInternalServerError)?;

let response = AckResponse { status: "Ok" };
Ok(HttpResponse::Ok()
Expand Down
9 changes: 5 additions & 4 deletions src/reducer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ pub async fn handle_compaction(
let half = window_size / 2;
let session_key = format!("session:{}", &*session_id);
let context_key = format!("context:{}", &*session_id);
let (messages, mut context): (Vec<String>, Option<String>) = redis::pipe()
let (messages, mut context): (Vec<(String, String)>, Option<String>) = redis::pipe()
.cmd("LRANGE")
.arg(session_key.clone())
.arg(half)
Expand All @@ -71,6 +71,7 @@ pub async fn handle_compaction(
.arg(context_key.clone())
.query_async(&mut redis_conn)
.await?;
}

let max_tokens = 4096usize;
let summary_max_tokens = 512usize;
Expand All @@ -81,13 +82,13 @@ pub async fn handle_compaction(
let mut temp_messages = Vec::new();
let mut total_tokens_temp = 0;

for message in messages {
for (message_id, message) in messages {
let bpe = p50k_base().unwrap();
let message_tokens = bpe.encode_with_special_tokens(&message);
let message_tokens_used = message_tokens.len();

if total_tokens_temp + message_tokens_used <= max_message_tokens {
temp_messages.push(message);
temp_messages.push((message_id, message));
total_tokens_temp += message_tokens_used;
} else {
let (summary, summary_tokens_used) = incremental_summarization(
Expand All @@ -101,7 +102,7 @@ pub async fn handle_compaction(
total_tokens += summary_tokens_used;

context = Some(summary);
temp_messages = vec![message];
temp_messages = vec![(message_id, message)];
total_tokens_temp = message_tokens_used;
}
}
Expand Down
Loading