From 5284a18248bb8e48eaa4a1e6ddcf73d944d23783 Mon Sep 17 00:00:00 2001 From: sigoden Date: Tue, 14 May 2024 11:16:55 +0800 Subject: refactor: config::Input (#503) --- src/config/mod.rs | 68 ++++--------------------------------------------------- 1 file changed, 4 insertions(+), 64 deletions(-) (limited to 'src/config/mod.rs') diff --git a/src/config/mod.rs b/src/config/mod.rs index 4a1867f..cd74e31 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -7,7 +7,7 @@ pub use self::role::{Role, CODE_ROLE, EXPLAIN_SHELL_ROLE, SHELL_ROLE}; use self::session::{Session, TEMP_SESSION_NAME}; use crate::client::{ - create_client_config, list_client_types, list_models, ClientConfig, Message, Model, SendData, + create_client_config, list_client_types, list_models, ClientConfig, Model, OPENAI_COMPATIBLE_PLATFORMS, }; use crate::render::{MarkdownRender, RenderOptions}; @@ -305,7 +305,7 @@ impl Config { Ok(()) } - pub fn get_state(&self) -> State { + pub fn state(&self) -> State { if let Some(session) = &self.session { if session.is_empty() { if self.role.is_some() { @@ -359,28 +359,6 @@ impl Config { } } - pub fn echo_messages(&self, input: &Input) -> String { - if let Some(session) = input.session(&self.session) { - session.echo_messages(input) - } else if let Some(role) = input.role() { - role.echo_messages(input) - } else { - input.render() - } - } - - pub fn build_messages(&self, input: &Input) -> Result> { - let messages = if let Some(session) = input.session(&self.session) { - session.build_messages(input) - } else if let Some(role) = input.role() { - role.build_messages(input) - } else { - let message = Message::new(input); - vec![message] - }; - Ok(messages) - } - pub fn set_wrap(&mut self, value: &str) -> Result<()> { if value == "no" { self.wrap = None; @@ -402,7 +380,7 @@ impl Config { None => bail!("No model '{}'", value), Some(model) => { if let Some(session) = self.session.as_mut() { - session.set_model(model.clone())?; + session.set_model(&model); } self.model = model; Ok(()) @@ -625,7 +603,7 @@ impl Config { self.session = Some(Session::new(self, name)); } else { let session = Session::load(name, &session_path)?; - let model_id = session.model().to_string(); + let model_id = session.model_id().to_string(); self.session = Some(session); self.set_model(&model_id)?; } @@ -787,44 +765,6 @@ impl Config { render_prompt(right_prompt, &variables) } - pub fn prepare_send_data(&self, input: &Input, stream: bool) -> Result { - let messages = self.build_messages(input)?; - let temperature = if let Some(session) = input.session(&self.session) { - session.temperature() - } else if let Some(role) = input.role() { - role.temperature - } else { - self.temperature - }; - let top_p = if let Some(session) = input.session(&self.session) { - session.top_p() - } else if let Some(role) = input.role() { - role.top_p - } else { - self.top_p - }; - self.model.max_input_tokens_limit(&messages)?; - Ok(SendData { - messages, - temperature, - top_p, - stream, - }) - } - - pub fn input_context(&self) -> InputContext { - InputContext::new(self.role.clone(), self.session.is_some()) - } - - pub fn maybe_print_send_tokens(&self, input: &Input) { - if self.dry_run { - if let Ok(messages) = self.build_messages(input) { - let tokens = self.model.total_tokens(&messages); - println!(">>> This message consumes {tokens} tokens. <<<"); - } - } - } - fn generate_prompt_context(&self) -> HashMap<&str, String> { let mut output = HashMap::new(); output.insert("model", self.model.id()); -- cgit v1.2.3