summaryrefslogtreecommitdiffstats
path: root/src/config
diff options
context:
space:
mode:
Diffstat (limited to 'src/config')
-rw-r--r--src/config/conversation.rs7
-rw-r--r--src/config/mod.rs8
2 files changed, 15 insertions, 0 deletions
diff --git a/src/config/conversation.rs b/src/config/conversation.rs
index 7fe843d..93382a3 100644
--- a/src/config/conversation.rs
+++ b/src/config/conversation.rs
@@ -33,6 +33,13 @@ impl Conversation {
Ok(())
}
+ pub fn can_clear_role(&self) -> Result<()> {
+ if self.messages.is_empty() {
+ return Ok(());
+ }
+ bail!("Error: Cannot perform this action in the middle of conversation")
+ }
+
pub fn update_tokens(&mut self) {
self.tokens = num_tokens_from_messages(&self.build_emssages(""));
}
diff --git a/src/config/mod.rs b/src/config/mod.rs
index ebbd909..ff7acae 100644
--- a/src/config/mod.rs
+++ b/src/config/mod.rs
@@ -186,6 +186,14 @@ impl Config {
}
}
+ pub fn clear_role(&mut self) -> Result<()> {
+ if let Some(conversation) = self.conversation.as_ref() {
+ conversation.can_clear_role()?;
+ }
+ self.role = None;
+ Ok(())
+ }
+
pub fn create_temp_role(&mut self, prompt: &str) -> Result<()> {
let role = Role::new(prompt, self.temperature);
if let Some(conversation) = self.conversation.as_mut() {