Skip to content

Commit d3f2a12

Browse files
committed
Update tool embedding fixes
1 parent 660604d commit d3f2a12

File tree

1 file changed

+24
-12
lines changed

1 file changed

+24
-12
lines changed

shinkai-libs/shinkai-sqlite/src/shinkai_tool_manager.rs

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,31 +16,37 @@ impl SqliteManager {
1616
let model_type = self.get_default_embedding_model()
1717
.unwrap_or_else(|_| EmbeddingModelType::default());
1818

19-
let embedding = match tool.get_embedding() {
19+
let (updated_tool, embedding) = match tool.get_embedding() {
2020
Some(existing_embedding) => {
2121
// Check if existing embedding has correct dimensions (skip check for custom models)
2222
match model_type.vector_dimensions() {
2323
Ok(expected_dimensions) => {
2424
if existing_embedding.len() == expected_dimensions {
25-
existing_embedding
25+
(tool, existing_embedding)
2626
} else {
2727
// Dimension mismatch - regenerate with current model
28-
self.generate_embeddings(&tool.format_embedding_string()).await?
28+
let new_embedding = self.generate_embeddings(&tool.format_embedding_string()).await?;
29+
let mut updated_tool = tool;
30+
updated_tool.set_embedding(new_embedding.clone());
31+
(updated_tool, new_embedding)
2932
}
3033
}
3134
Err(_) => {
3235
// Unknown dimensions for custom models - use existing embedding
33-
existing_embedding
36+
(tool, existing_embedding)
3437
}
3538
}
3639
}
3740
None => {
3841
// No embedding - generate one
39-
self.generate_embeddings(&tool.format_embedding_string()).await?
42+
let new_embedding = self.generate_embeddings(&tool.format_embedding_string()).await?;
43+
let mut updated_tool = tool;
44+
updated_tool.set_embedding(new_embedding.clone());
45+
(updated_tool, new_embedding)
4046
}
4147
};
4248

43-
self.add_tool_with_vector(tool, embedding)
49+
self.add_tool_with_vector(updated_tool, embedding)
4450
}
4551

4652
pub fn add_tool_with_vector(
@@ -596,31 +602,37 @@ impl SqliteManager {
596602
let model_type = self.get_default_embedding_model()
597603
.unwrap_or_else(|_| EmbeddingModelType::default());
598604

599-
let embedding = match tool.get_embedding() {
605+
let (updated_tool, embedding) = match tool.get_embedding() {
600606
Some(existing_embedding) => {
601607
// Check if existing embedding has correct dimensions (skip check for custom models)
602608
match model_type.vector_dimensions() {
603609
Ok(expected_dimensions) => {
604610
if existing_embedding.len() == expected_dimensions {
605-
existing_embedding
611+
(tool, existing_embedding)
606612
} else {
607613
// Dimension mismatch - regenerate with current model
608-
self.generate_embeddings(&tool.format_embedding_string()).await?
614+
let new_embedding = self.generate_embeddings(&tool.format_embedding_string()).await?;
615+
let mut updated_tool = tool;
616+
updated_tool.set_embedding(new_embedding.clone());
617+
(updated_tool, new_embedding)
609618
}
610619
}
611620
Err(_) => {
612621
// Unknown dimensions for custom models - use existing embedding
613-
existing_embedding
622+
(tool, existing_embedding)
614623
}
615624
}
616625
}
617626
None => {
618627
// No embedding - generate one
619-
self.generate_embeddings(&tool.format_embedding_string()).await?
628+
let new_embedding = self.generate_embeddings(&tool.format_embedding_string()).await?;
629+
let mut updated_tool = tool;
630+
updated_tool.set_embedding(new_embedding.clone());
631+
(updated_tool, new_embedding)
620632
}
621633
};
622634

623-
self.update_tool_with_vector(tool, embedding)
635+
self.update_tool_with_vector(updated_tool, embedding)
624636
}
625637

626638
/// Retrieves all ShinkaiToolHeader entries from the shinkai_tools table

0 commit comments

Comments
 (0)