diff options
| author | sigoden <sigoden@gmail.com> | 2024-06-17 13:19:00 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-17 13:19:00 +0800 |
| commit | ba884c9fc65d820f8603859acafd055b98897b56 (patch) | |
| tree | 3b319a01322ed7a74822634f775c0e0cadfe3753 /src/config/session.rs | |
| parent | bbdd866eb325fde60241f33eeb8770b1180abd96 (diff) | |
| download | aichat-ba884c9fc65d820f8603859acafd055b98897b56.tar.gz | |
feat: add `.continue` repl command (#608)
Diffstat (limited to 'src/config/session.rs')
| -rw-r--r-- | src/config/session.rs | 40 |
1 files changed, 27 insertions, 13 deletions
diff --git a/src/config/session.rs b/src/config/session.rs index b95fcc5..df9b082 100644 --- a/src/config/session.rs +++ b/src/config/session.rs @@ -353,20 +353,31 @@ impl Session { } pub fn add_message(&mut self, input: &Input, output: &str) -> Result<()> { - let mut need_add_msg = true; - if self.messages.is_empty() { - self.messages.extend(input.role().build_messages(input)); - need_add_msg = false; - } - if need_add_msg { - self.messages - .push(Message::new(MessageRole::User, input.message_content())); + match input.continue_output() { + Some(_) => { + if let Some(message) = self.messages.last_mut() { + if let MessageContent::Text(text) = &mut message.content { + *text = format!("{text}{output}"); + } + } + } + None => { + let mut need_add_msg = true; + if self.messages.is_empty() { + self.messages.extend(input.role().build_messages(input)); + need_add_msg = false; + } + if need_add_msg { + self.messages + .push(Message::new(MessageRole::User, input.message_content())); + } + self.data_urls.extend(input.data_urls()); + self.messages.push(Message::new( + MessageRole::Assistant, + MessageContent::Text(output.to_string()), + )); + } } - self.data_urls.extend(input.data_urls()); - self.messages.push(Message::new( - MessageRole::Assistant, - MessageContent::Text(output.to_string()), - )); self.dirty = true; Ok(()) } @@ -385,6 +396,9 @@ impl Session { pub fn build_messages(&self, input: &Input) -> Vec<Message> { let mut messages = self.messages.clone(); + if input.continue_output().is_some() { + return messages; + } let mut need_add_msg = true; let len = messages.len(); if len == 0 { |
