diff options
| author | sigoden <sigoden@gmail.com> | 2024-03-17 08:23:47 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-17 08:23:47 +0800 |
| commit | f3210d622ab362e621169d92510702c1a1d53847 (patch) | |
| tree | de9331b5d53719948c7e7b7e6044ce4f5466b6f6 /src/config/session.rs | |
| parent | 992d5700416cb0e78c898392747e81919dbccac5 (diff) | |
| download | aichat-f3210d622ab362e621169d92510702c1a1d53847.tar.gz | |
refactor: remove role field from session struct (#356)
Diffstat (limited to 'src/config/session.rs')
| -rw-r--r-- | src/config/session.rs | 22 |
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; } |
