diff options
| author | sigoden <sigoden@gmail.com> | 2024-06-05 09:02:23 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-05 09:02:23 +0800 |
| commit | 1ec6abfaee2fdc189b348b7e3a8145bd9a84da74 (patch) | |
| tree | 6f68a860a39b0fbe87784de925b5a31e00e74e33 /src/render | |
| parent | 71f2e94579511d7524f5534377001ab3f02a9597 (diff) | |
| download | aichat-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.rs | 15 |
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(()) } |
