aboutsummaryrefslogtreecommitdiff
path: root/src/app
diff options
context:
space:
mode:
Diffstat (limited to 'src/app')
-rw-r--r--src/app/init.rs20
-rw-r--r--src/app/llm.rs16
2 files changed, 22 insertions, 14 deletions
diff --git a/src/app/init.rs b/src/app/init.rs
index f1f917a..dd8d3b7 100644
--- a/src/app/init.rs
+++ b/src/app/init.rs
@@ -12,7 +12,8 @@ pub struct App {
impl App {
pub fn new() -> App {
- let chat_llm: LLM = LLM::new("config/chat-LLM.json".to_string()).unwrap();
+ let chat_llm: LLM = LLM::new("config/chat-LLM.json".to_string());
+
App {
messages: vec![Message::new(
MessageType::SYSTEM,
@@ -20,13 +21,16 @@ impl App {
)],
conv_id: Uuid::new_v4(),
chat_llm,
- resume_llm: LLM::new("config/resume-LLM.json".to_string()).unwrap(),
+ resume_llm: LLM::new("config/resume-LLM.json".to_string()),
}
}
fn append_message(&mut self, msg: String, role: MessageType) {
let message = Message::new(role, msg);
- message.save_message(self.conv_id.to_string());
+
+ let err = message.save_message(self.conv_id.to_string());
+ warn(err.is_err().to_string());
+
self.messages.push(message);
}
@@ -38,9 +42,13 @@ impl App {
self.chat_llm.ask_format(&self.messages).await
});
- let categorie = result.unwrap()[0]["function"]["arguments"]["category"].clone();
-
- self.ask(categorie.to_string().as_str());
+ match result {
+ Ok(msg) => {
+ let categorie = msg[0]["function"]["arguments"]["category"].clone();
+ self.ask(categorie.to_string().as_str());
+ },
+ Err(e) => self.append_message(e.to_string(), MessageType::ASSISTANT),
+ }
}
fn ask(&mut self, mode: &str) {
diff --git a/src/app/llm.rs b/src/app/llm.rs
index a172855..9c6d222 100644
--- a/src/app/llm.rs
+++ b/src/app/llm.rs
@@ -15,11 +15,9 @@ pub struct LLM {
}
impl LLM {
- pub fn new(config_file: String) -> Result<LLM, Box<dyn std::error::Error>> {
- let contents = fs::read_to_string(config_file)?;
- let llm: LLM = serde_json::from_str(&contents)?;
-
- Ok(llm)
+ pub fn new(config_file: String) -> LLM {
+ let contents = fs::read_to_string(config_file).unwrap();
+ serde_json::from_str(&contents).unwrap()
}
pub async fn ask(&self, messages: &Vec<Message>) -> Result<String, Box<dyn std::error::Error>> {
@@ -116,9 +114,9 @@ impl Message {
Message { role, content }
}
- pub fn save_message(&self, conv_id: String) {
+ pub fn save_message(&self, conv_id: String) -> Result<(), Box<dyn std::error::Error>> {
// Create conv directory if doesn't exist
- create_dir_all("conv").unwrap();
+ create_dir_all("conv")?;
// Save message
let mut file = OpenOptions::new()
@@ -128,7 +126,9 @@ impl Message {
.open("conv/".to_string() + &conv_id)
.unwrap();
- writeln!(file, "{}", serde_json::to_string(self).unwrap()).unwrap();
+ writeln!(file, "{}", serde_json::to_string(self)?)?;
+
+ Ok(())
}
}
ArKa projects. All rights to me, and your next child right arm.