summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2024-11-13 09:16:33 +0800
committerGitHub <noreply@github.com>2024-11-13 09:16:33 +0800
commit0aa93fa86da428b08bdc5dba77ca76d213322524 (patch)
tree54769a4da0789d6bedb2aa37229960beac8c4547 /src
parent777fc02e0f4e534705c3a0decffd3eebc26ff597 (diff)
downloadaichat-0aa93fa86da428b08bdc5dba77ca76d213322524.tar.gz
refactor: don't init agent RAG/variables when using `--info` (#989)
Diffstat (limited to 'src')
-rw-r--r--src/config/agent.rs6
-rw-r--r--src/config/mod.rs16
-rw-r--r--src/main.rs4
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());