summaryrefslogtreecommitdiffstats
path: root/src/render
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2024-06-05 09:02:23 +0800
committerGitHub <noreply@github.com>2024-06-05 09:02:23 +0800
commit1ec6abfaee2fdc189b348b7e3a8145bd9a84da74 (patch)
tree6f68a860a39b0fbe87784de925b5a31e00e74e33 /src/render
parent71f2e94579511d7524f5534377001ab3f02a9597 (diff)
downloadaichat-1ec6abfaee2fdc189b348b7e3a8145bd9a84da74.tar.gz
feat: support RAG (#560)
* feat: support RAG * support more embeddings models and implement concurrent embedding api * show the progress of addings paths * ignore embedding context when saving message * embedding model max_chunk_size => default_chunk_size * support pdf and pandoc formats (docx, epub, ipynb)
Diffstat (limited to 'src/render')
-rw-r--r--src/render/stream.rs15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/render/stream.rs b/src/render/stream.rs
index f35831c..0c70bce 100644
--- a/src/render/stream.rs
+++ b/src/render/stream.rs
@@ -14,7 +14,7 @@ use std::{
time::Duration,
};
use textwrap::core::display_width;
-use tokio::sync::{mpsc::UnboundedReceiver, oneshot};
+use tokio::sync::mpsc::UnboundedReceiver;
pub async fn markdown_stream(
rx: UnboundedReceiver<SseEvent>,
@@ -62,17 +62,16 @@ async fn markdown_stream_inner(
let columns = terminal::size()?.0;
- let (spinner_tx, spinner_rx) = oneshot::channel();
- let mut spinner_tx = Some(spinner_tx);
- tokio::spawn(run_spinner(" Generating", spinner_rx));
+ let (stop_spinner_tx, _) = run_spinner("Generating").await;
+ let mut stop_spinner_tx = Some(stop_spinner_tx);
'outer: loop {
if abort.aborted() {
return Ok(());
}
for reply_event in gather_events(&mut rx).await {
- if let Some(spinner_tx) = spinner_tx.take() {
- let _ = spinner_tx.send(());
+ if let Some(stop_spinner_tx) = stop_spinner_tx.take() {
+ let _ = stop_spinner_tx.send(());
}
match reply_event {
@@ -150,8 +149,8 @@ async fn markdown_stream_inner(
}
}
- if let Some(spinner_tx) = spinner_tx.take() {
- let _ = spinner_tx.send(());
+ if let Some(stop_spinner_tx) = stop_spinner_tx.take() {
+ let _ = stop_spinner_tx.send(());
}
Ok(())
}