diff options
| author | sigoden <sigoden@gmail.com> | 2024-11-13 09:16:33 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-11-13 09:16:33 +0800 |
| commit | 0aa93fa86da428b08bdc5dba77ca76d213322524 (patch) | |
| tree | 54769a4da0789d6bedb2aa37229960beac8c4547 /src | |
| parent | 777fc02e0f4e534705c3a0decffd3eebc26ff597 (diff) | |
| download | aichat-0aa93fa86da428b08bdc5dba77ca76d213322524.tar.gz | |
refactor: don't init agent RAG/variables when using `--info` (#989)
Diffstat (limited to 'src')
| -rw-r--r-- | src/config/agent.rs | 6 | ||||
| -rw-r--r-- | src/config/mod.rs | 16 | ||||
| -rw-r--r-- | src/main.rs | 4 |
3 files changed, 22 insertions, 4 deletions
diff --git a/src/config/agent.rs b/src/config/agent.rs index e16e7a7..49d5835 100644 --- a/src/config/agent.rs +++ b/src/config/agent.rs @@ -66,7 +66,7 @@ impl Agent { let rag = if rag_path.exists() { Some(Arc::new(Rag::load(config, DEFAULT_AGENT_NAME, &rag_path)?)) - } else if !definition.documents.is_empty() { + } else if !definition.documents.is_empty() && !config.read().print_info_only { let mut ans = false; if *IS_STDOUT_TERMINAL { ans = Confirm::new("The agent has the documents, init RAG?") @@ -109,6 +109,7 @@ impl Agent { pub fn init_agent_variables( agent_variables: &[AgentVariable], variables: &IndexMap<String, String>, + no_interaction: bool, ) -> Result<IndexMap<String, String>> { let mut output = IndexMap::new(); if agent_variables.is_empty() { @@ -127,6 +128,9 @@ impl Agent { output.insert(key, value); continue; } + if no_interaction { + continue; + } if *IS_STDOUT_TERMINAL { if !printed { println!("⚙ Init agent variables..."); diff --git a/src/config/mod.rs b/src/config/mod.rs index aa0fe00..7c523c5 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -153,6 +153,8 @@ pub struct Config { #[serde(skip)] pub working_mode: WorkingMode, #[serde(skip)] + pub print_info_only: bool, + #[serde(skip)] pub last_message: Option<(Input, String)>, } @@ -212,6 +214,7 @@ impl Default for Config { model: Default::default(), functions: Default::default(), working_mode: WorkingMode::Cmd, + print_info_only: false, last_message: None, } } @@ -1860,8 +1863,11 @@ impl Config { Some(v) => v, None => return Ok(()), }; - let new_variables = - Agent::init_agent_variables(agent.defined_variables(), agent.config_variables())?; + let new_variables = Agent::init_agent_variables( + agent.defined_variables(), + agent.config_variables(), + self.print_info_only, + )?; agent.set_shared_variables(new_variables); Ok(()) } @@ -1878,7 +1884,11 @@ impl Config { shared_variables.clone() }; all_variables.extend(session.agent_variables().clone()); - let new_variables = Agent::init_agent_variables(agent.defined_variables(), &all_variables)?; + let new_variables = Agent::init_agent_variables( + agent.defined_variables(), + &all_variables, + self.print_info_only, + )?; if shared_variables.is_empty() { agent.set_shared_variables(new_variables.clone()); } diff --git a/src/main.rs b/src/main.rs index 23aa7bc..413301c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -65,6 +65,10 @@ async fn run(config: GlobalConfig, cli: Cli, text: Option<String>) -> Result<()> if let Some(addr) = cli.serve { return serve::run(config, addr).await; } + if cli.info { + config.write().print_info_only = true; + } + if cli.list_models { for model in list_chat_models(&config.read()) { println!("{}", model.id()); |
