summaryrefslogtreecommitdiffstats
path: root/src/config/session.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/config/session.rs')
-rw-r--r--src/config/session.rs22
1 files changed, 4 insertions, 18 deletions
diff --git a/src/config/session.rs b/src/config/session.rs
index dd610a5..2e0d69f 100644
--- a/src/config/session.rs
+++ b/src/config/session.rs
@@ -1,5 +1,4 @@
use super::input::resolve_data_url;
-use super::role::Role;
use super::{Input, Model};
use crate::client::{Message, MessageContent, MessageRole};
@@ -34,14 +33,11 @@ pub struct Session {
#[serde(skip)]
pub compressing: bool,
#[serde(skip)]
- pub role: Option<Role>,
- #[serde(skip)]
pub model: Model,
}
impl Session {
- pub fn new(name: &str, model: Model, role: Option<Role>) -> Self {
- let temperature = role.as_ref().and_then(|v| v.temperature);
+ pub fn new(name: &str, model: Model, temperature: Option<f64>) -> Self {
Self {
model_id: model.id(),
temperature,
@@ -53,7 +49,6 @@ impl Session {
path: None,
dirty: false,
compressing: false,
- role,
model,
}
}
@@ -189,13 +184,6 @@ impl Session {
(tokens, percent)
}
- pub fn update_role(&mut self, role: Option<Role>) -> Result<()> {
- self.guard_empty()?;
- self.temperature = role.as_ref().and_then(|v| v.temperature);
- self.role = role;
- Ok(())
- }
-
pub fn set_temperature(&mut self, value: Option<f64>) {
self.temperature = value;
}
@@ -216,7 +204,6 @@ impl Session {
role: MessageRole::System,
content: MessageContent::Text(prompt),
});
- self.role = None;
self.dirty = true;
}
@@ -260,13 +247,13 @@ impl Session {
}
pub fn is_empty(&self) -> bool {
- self.messages.is_empty()
+ self.messages.is_empty() && self.compressed_messages.is_empty()
}
pub fn add_message(&mut self, input: &Input, output: &str) -> Result<()> {
let mut need_add_msg = true;
if self.messages.is_empty() {
- if let Some(role) = self.role.as_ref() {
+ if let Some(role) = input.role() {
self.messages.extend(role.build_messages(input));
need_add_msg = false;
}
@@ -282,7 +269,6 @@ impl Session {
role: MessageRole::Assistant,
content: MessageContent::Text(output.to_string()),
});
- self.role = None;
self.dirty = true;
Ok(())
}
@@ -304,7 +290,7 @@ impl Session {
let mut need_add_msg = true;
let len = messages.len();
if len == 0 {
- if let Some(role) = self.role.as_ref() {
+ if let Some(role) = input.role() {
messages = role.build_messages(input);
need_add_msg = false;
}