summaryrefslogtreecommitdiffstats
path: root/src/config/mod.rs
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2024-05-14 11:16:55 +0800
committerGitHub <noreply@github.com>2024-05-14 11:16:55 +0800
commit5284a18248bb8e48eaa4a1e6ddcf73d944d23783 (patch)
treefe60e7b0be7c4ea40051f40f88362e0487da6355 /src/config/mod.rs
parent154c1e0b4b7fad08094c601893b081581d2ee0c8 (diff)
downloadaichat-5284a18248bb8e48eaa4a1e6ddcf73d944d23783.tar.gz
refactor: config::Input (#503)
Diffstat (limited to 'src/config/mod.rs')
-rw-r--r--src/config/mod.rs68
1 files changed, 4 insertions, 64 deletions
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<Vec<Message>> {
- 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<SendData> {
- 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());