From bc5c4b32b69c16f0e4004268bd62a93e1e81b996 Mon Sep 17 00:00:00 2001 From: Per Stark Date: Sun, 16 Mar 2025 21:24:24 +0100 Subject: [PATCH] chat history added to context and patching text content --- assets/fonts/Satoshi-Regular.ttf | Bin 0 -> 73476 bytes assets/fonts/Satoshi-Regular.woff | Bin 0 -> 33024 bytes assets/fonts/Satoshi-Regular.woff2 | Bin 0 -> 25516 bytes crates/common/src/storage/types/message.rs | 25 ++++ .../common/src/storage/types/text_content.rs | 23 ++- .../src/answer_retrieval.rs | 34 ++++- crates/html-router/src/error.rs | 139 ------------------ crates/html-router/src/lib.rs | 1 - .../routes/chat/message_response_stream.rs | 36 ++++- crates/html-router/src/routes/content/mod.rs | 33 +++-- crates/html-router/src/template_response.rs | 1 - .../content/edit_text_content_modal.html | 8 +- todo.md | 7 +- 13 files changed, 141 insertions(+), 166 deletions(-) create mode 100644 assets/fonts/Satoshi-Regular.ttf create mode 100644 assets/fonts/Satoshi-Regular.woff create mode 100644 assets/fonts/Satoshi-Regular.woff2 delete mode 100644 crates/html-router/src/error.rs diff --git a/assets/fonts/Satoshi-Regular.ttf b/assets/fonts/Satoshi-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..fe85cd6c9e7fdb748c63ba7e85d069adee2e178d GIT binary patch literal 73476 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

ps=96V0po|g2xL^7Mv-}ESy%jsqosu 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 if1J$nghK+h3Hwj~ZwTV|*#HL$rwjt}(;74y2 literal 0 HcmV?d00001 diff --git a/assets/fonts/Satoshi-Regular.woff2 b/assets/fonts/Satoshi-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..81c40ab08a87d975b0e61e0d8497fe4dd3c11da4 GIT binary patch literal 25516 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 literal 0 HcmV?d00001 diff --git a/crates/common/src/storage/types/message.rs b/crates/common/src/storage/types/message.rs index ca8afbf..f3a2160 100644 --- a/crates/common/src/storage/types/message.rs +++ b/crates/common/src/storage/types/message.rs @@ -35,3 +35,28 @@ impl Message { } } } + +impl fmt::Display for MessageRole { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + MessageRole::User => write!(f, "User"), + MessageRole::AI => write!(f, "AI"), + MessageRole::System => write!(f, "System"), + } + } +} + +impl fmt::Display for Message { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{}: {}", self.role, self.content) + } +} + +// helper function to format a vector of messages +pub fn format_history(history: &[Message]) -> String { + history + .iter() + .map(|msg| format!("{}", msg)) + .collect::>() + .join("\n") +} diff --git a/crates/common/src/storage/types/text_content.rs b/crates/common/src/storage/types/text_content.rs index e640255..cd0eaae 100644 --- a/crates/common/src/storage/types/text_content.rs +++ b/crates/common/src/storage/types/text_content.rs @@ -1,6 +1,7 @@ +use surrealdb::opt::PatchOp; use uuid::Uuid; -use crate::stored_object; +use crate::{error::AppError, storage::db::SurrealDbClient, stored_object}; use super::file_info::FileInfo; @@ -35,4 +36,24 @@ impl TextContent { user_id, } } + + pub async fn patch( + id: &str, + instructions: &str, + category: &str, + text: &str, + db: &SurrealDbClient, + ) -> Result<(), AppError> { + let now = Utc::now(); + + let _res: Option = db + .update((Self::table_name(), id)) + .patch(PatchOp::replace("/instructions", instructions)) + .patch(PatchOp::replace("/category", category)) + .patch(PatchOp::replace("/text", text)) + .patch(PatchOp::replace("/updated_at", now)) + .await?; + + Ok(()) + } } diff --git a/crates/composite-retrieval/src/answer_retrieval.rs b/crates/composite-retrieval/src/answer_retrieval.rs index 671defa..b5aca58 100644 --- a/crates/composite-retrieval/src/answer_retrieval.rs +++ b/crates/composite-retrieval/src/answer_retrieval.rs @@ -5,6 +5,7 @@ use async_openai::{ CreateChatCompletionRequest, CreateChatCompletionRequestArgs, CreateChatCompletionResponse, ResponseFormat, ResponseFormatJsonSchema, }, + MessageFiles, }; use serde::Deserialize; use serde_json::{json, Value}; @@ -12,7 +13,13 @@ use tracing::debug; use common::{ error::AppError, - storage::{db::SurrealDbClient, types::knowledge_entity::KnowledgeEntity}, + storage::{ + db::SurrealDbClient, + types::{ + knowledge_entity::KnowledgeEntity, + message::{format_history, Message}, + }, + }, }; use crate::retrieve_entities; @@ -109,6 +116,31 @@ pub fn create_user_message(entities_json: &Value, query: &str) -> String { ) } +pub fn create_user_message_with_history( + entities_json: &Value, + history: &[Message], + query: &str, +) -> String { + format!( + r#" + Chat history: + ================== + {} + + Context Information: + ================== + {} + + User Question: + ================== + {} + "#, + format_history(history), + entities_json, + query + ) +} + pub fn create_chat_request( user_message: String, ) -> Result { diff --git a/crates/html-router/src/error.rs b/crates/html-router/src/error.rs deleted file mode 100644 index f0d08f3..0000000 --- a/crates/html-router/src/error.rs +++ /dev/null @@ -1,139 +0,0 @@ -// use axum::{ -// http::StatusCode, -// response::{Html, IntoResponse, Response}, -// }; -// use common::error::AppError; -// use minijinja::context; -// use minijinja_autoreload::AutoReloader; -// use std::sync::Arc; - -// pub type TemplateResult = Result; - -// // Helper trait for converting to HtmlError with templates -// pub trait IntoHtmlError { -// fn with_template(self, templates: Arc) -> HtmlError; -// } -// // // Implement for AppError -// impl IntoHtmlError for AppError { -// fn with_template(self, templates: Arc) -> HtmlError { -// HtmlError::new(self, templates) -// } -// } -// // // Implement for minijinja::Error directly -// impl IntoHtmlError for minijinja::Error { -// fn with_template(self, templates: Arc) -> HtmlError { -// HtmlError::from_template_error(self, templates) -// } -// } - -// pub enum HtmlError { -// ServerError(Arc), -// NotFound(Arc), -// Unauthorized(Arc), -// BadRequest(String, Arc), -// Template(String, Arc), -// } - -// impl HtmlError { -// pub fn new(error: AppError, templates: Arc) -> Self { -// match error { -// AppError::NotFound(_msg) => HtmlError::NotFound(templates), -// AppError::Auth(_msg) => HtmlError::Unauthorized(templates), -// AppError::Validation(msg) => HtmlError::BadRequest(msg, templates), -// _ => { -// tracing::error!("Internal error: {:?}", error); -// HtmlError::ServerError(templates) -// } -// } -// } - -// pub fn from_template_error(error: minijinja::Error, templates: Arc) -> Self { -// tracing::error!("Template error: {:?}", error); -// HtmlError::Template(error.to_string(), templates) -// } -// } - -// impl IntoResponse for HtmlError { -// fn into_response(self) -> Response { -// let (status, context, templates) = match self { -// HtmlError::ServerError(templates) | HtmlError::Template(_, templates) => ( -// StatusCode::INTERNAL_SERVER_ERROR, -// context! { -// status_code => 500, -// title => "Internal Server Error", -// error => "Internal Server Error", -// description => "Something went wrong on our end." -// }, -// templates, -// ), -// HtmlError::NotFound(templates) => ( -// StatusCode::NOT_FOUND, -// context! { -// status_code => 404, -// title => "Page Not Found", -// error => "Not Found", -// description => "The page you're looking for doesn't exist or was removed." -// }, -// templates, -// ), -// HtmlError::Unauthorized(templates) => ( -// StatusCode::UNAUTHORIZED, -// context! { -// status_code => 401, -// title => "Unauthorized", -// error => "Access Denied", -// description => "You need to be logged in to access this page." -// }, -// templates, -// ), -// HtmlError::BadRequest(msg, templates) => ( -// StatusCode::BAD_REQUEST, -// context! { -// status_code => 400, -// title => "Bad Request", -// error => "Bad Request", -// description => msg -// }, -// templates, -// ), -// }; - -// let html = match templates.acquire_env() { -// Ok(env) => match env.get_template("errors/error.html") { -// Ok(tmpl) => match tmpl.render(context) { -// Ok(output) => output, -// Err(e) => { -// tracing::error!("Template render error: {:?}", e); -// Self::fallback_html() -// } -// }, -// Err(e) => { -// tracing::error!("Template get error: {:?}", e); -// Self::fallback_html() -// } -// }, -// Err(e) => { -// tracing::error!("Environment acquire error: {:?}", e); -// Self::fallback_html() -// } -// }; - -// (status, Html(html)).into_response() -// } -// } - -// impl HtmlError { -// fn fallback_html() -> String { -// r#" -// -// -//
-//

Error

-//

Sorry, something went wrong displaying this page.

-//
-// -// -// "# -// .to_string() -// } -// } diff --git a/crates/html-router/src/lib.rs b/crates/html-router/src/lib.rs index c3ccc4c..4a09e7a 100644 --- a/crates/html-router/src/lib.rs +++ b/crates/html-router/src/lib.rs @@ -1,4 +1,3 @@ -pub mod error; pub mod html_state; mod middleware_analytics; mod middleware_auth; diff --git a/crates/html-router/src/routes/chat/message_response_stream.rs b/crates/html-router/src/routes/chat/message_response_stream.rs index 1551e03..f948e5f 100644 --- a/crates/html-router/src/routes/chat/message_response_stream.rs +++ b/crates/html-router/src/routes/chat/message_response_stream.rs @@ -12,7 +12,8 @@ use axum_session_auth::AuthSession; use axum_session_surreal::SessionSurrealPool; use composite_retrieval::{ answer_retrieval::{ - create_chat_request, create_user_message, format_entities_json, LLMResponseFormat, + create_chat_request, create_user_message_with_history, format_entities_json, + LLMResponseFormat, }, retrieve_entities, }; @@ -30,6 +31,7 @@ use tracing::{error, info}; use common::storage::{ db::SurrealDbClient, types::{ + conversation::Conversation, message::{Message, MessageRole}, user::User, }, @@ -50,7 +52,10 @@ async fn get_message_and_user( db: &SurrealDbClient, current_user: Option, message_id: &str, -) -> Result<(Message, User), Sse> + Send>>>> { +) -> Result< + (Message, User, Conversation, Vec), + Sse> + Send>>>, +> { // Check authentication let user = match current_user { Some(user) => user, @@ -77,7 +82,23 @@ async fn get_message_and_user( } }; - Ok((message, user)) + // Get conversation history + let (conversation, mut history) = + match Conversation::get_complete_conversation(&message.conversation_id, &user.id, db).await + { + Err(e) => { + error!("Database error retrieving message {}: {:?}", message_id, e); + return Err(Sse::new(create_error_stream( + "Failed to retrieve message: database error", + ))); + } + Ok((conversation, history)) => (conversation, history), + }; + + // Remove the last message, its the same as the message + history.pop(); + + Ok((message, user, conversation, history)) } #[derive(Deserialize)] @@ -91,9 +112,11 @@ pub async fn get_response_stream( Query(params): Query, ) -> Sse> + Send>>> { // 1. Authentication and initial data validation - let (user_message, user) = + let (user_message, user, _conversation, history) = match get_message_and_user(&state.db, auth.current_user, ¶ms.message_id).await { - Ok((user_message, user)) => (user_message, user), + Ok((user_message, user, conversation, history)) => { + (user_message, user, conversation, history) + } Err(error_stream) => return error_stream, }; @@ -114,7 +137,8 @@ pub async fn get_response_stream( // 3. Create the OpenAI request let entities_json = format_entities_json(&entities); - let formatted_user_message = create_user_message(&entities_json, &user_message.content); + let formatted_user_message = + create_user_message_with_history(&entities_json, &history, &user_message.content); let request = match create_chat_request(formatted_user_message) { Ok(req) => req, Err(..) => { diff --git a/crates/html-router/src/routes/content/mod.rs b/crates/html-router/src/routes/content/mod.rs index cced34e..1bd6082 100644 --- a/crates/html-router/src/routes/content/mod.rs +++ b/crates/html-router/src/routes/content/mod.rs @@ -1,8 +1,9 @@ use axum::{ extract::{Path, State}, response::IntoResponse, + Form, }; -use serde::Serialize; +use serde::{Deserialize, Serialize}; use common::storage::types::{text_content::TextContent, user::User}; @@ -33,12 +34,6 @@ pub async fn show_content_page( )) } -#[derive(Serialize)] -pub struct TextContentEditModal { - pub user: User, - pub text_content: TextContent, -} - pub async fn show_text_content_edit_form( State(state): State, RequireUser(user): RequireUser, @@ -46,20 +41,40 @@ pub async fn show_text_content_edit_form( ) -> Result { let text_content = User::get_and_validate_text_content(&id, &user.id, &state.db).await?; + #[derive(Serialize)] + pub struct TextContentEditModal { + pub user: User, + pub text_content: TextContent, + } + Ok(TemplateResponse::new_template( "content/edit_text_content_modal.html", TextContentEditModal { user, text_content }, )) } +#[derive(Deserialize)] +pub struct PatchTextContentParams { + instructions: String, + category: String, + text: String, +} pub async fn patch_text_content( State(state): State, RequireUser(user): RequireUser, Path(id): Path, + Form(form): Form, ) -> Result { - let text_content = User::get_and_validate_text_content(&id, &user.id, &state.db).await?; + User::get_and_validate_text_content(&id, &user.id, &state.db).await?; - // ADD FUNCTION TO PATCH CONTENT + TextContent::patch( + &id, + &form.instructions, + &form.category, + &form.text, + &state.db, + ) + .await?; let text_contents = User::get_text_contents(&user.id, &state.db).await?; diff --git a/crates/html-router/src/template_response.rs b/crates/html-router/src/template_response.rs index e226552..b26f03a 100644 --- a/crates/html-router/src/template_response.rs +++ b/crates/html-router/src/template_response.rs @@ -261,7 +261,6 @@ impl From for HtmlError { } } -// Now implement IntoResponse for HtmlError impl IntoResponse for HtmlError { fn into_response(self) -> Response { match self { diff --git a/templates/content/edit_text_content_modal.html b/templates/content/edit_text_content_modal.html index e6df340..9b3a387 100644 --- a/templates/content/edit_text_content_modal.html +++ b/templates/content/edit_text_content_modal.html @@ -11,23 +11,21 @@ hx-swap="outerHTML"
- -
{% endblock %} diff --git a/todo.md b/todo.md index 071dde9..f576345 100644 --- a/todo.md +++ b/todo.md @@ -1,19 +1,20 @@ -\[\] fix patch_text_conent \[\] archive ingressed webpage -\[x\] chat styling overhaul \[\] configs primarily get envs \[\] filtering on categories -\[x\] link to ingressed urls or archives \[\] three js graph explorer \[\] three js vector explorer \[x\] add user_id to ingress objects \[x\] admin controls re registration \[x\] chat functionality +\[x\] chat history +\[x\] chat styling overhaul +\[x\] fix patch_text_content \[x\] gdpr \[x\] html ingression \[x\] hx-redirect \[x\] ios shortcut generation \[x\] job queue +\[x\] link to ingressed urls or archives \[x\] macro for pagedata? \[x\] on updates of knowledgeentity create new embeddings \[x\] redirects