diff options
author | Oxbian <oxbian@mailbox.org> | 2025-03-04 21:15:42 -0500 |
---|---|---|
committer | Oxbian <oxbian@mailbox.org> | 2025-03-04 21:15:42 -0500 |
commit | 43f26405e818aec791b28c50373843851fe1320e (patch) | |
tree | 81fe0cb2180afaebedc0edf65bd1c077ab267893 /src/app/init.rs | |
parent | b9061a3e652cb7594397c38cd0078a47ddab960a (diff) | |
download | NAI-43f26405e818aec791b28c50373843851fe1320e.tar.gz NAI-43f26405e818aec791b28c50373843851fe1320e.zip |
feat: routing request
Diffstat (limited to 'src/app/init.rs')
-rw-r--r-- | src/app/init.rs | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/app/init.rs b/src/app/init.rs index 201e79e..f1f917a 100644 --- a/src/app/init.rs +++ b/src/app/init.rs @@ -30,10 +30,24 @@ impl App { self.messages.push(message); } + fn categorize_ask(&mut self) { + let runtime = Builder::new_current_thread().enable_all().build().unwrap(); + + let result = runtime.block_on(async { + // Ask the LLM to categorise the request between (chat, code, wikipedia) + self.chat_llm.ask_format(&self.messages).await + }); + + let categorie = result.unwrap()[0]["function"]["arguments"]["category"].clone(); + + self.ask(categorie.to_string().as_str()); + } + fn ask(&mut self, mode: &str) { let runtime = Builder::new_current_thread() .enable_all() .build().unwrap(); + let result = runtime.block_on(async { if mode == "resume" { self.resume_llm.ask(&self.messages).await @@ -43,14 +57,14 @@ impl App { }); match result { - Ok(msg) => self.append_message(msg, MessageType::ASSISTANT), + Ok(msg) => self.append_message(msg.to_string(), MessageType::ASSISTANT), Err(e) => self.append_message(e.to_string(), MessageType::ASSISTANT), } } pub fn send_message(&mut self, content: String) { self.append_message(content, MessageType::USER); - self.ask("chat"); + self.categorize_ask(); } pub fn resume_conv(&mut self) { |