mirror of
https://github.com/kolbytn/mindcraft.git
synced 2025-08-26 17:03:45 +02:00
fix dumb skill docs that were never working in the first place
This commit is contained in:
parent
47a8b9e95c
commit
e5e900c75d
1 changed files with 35 additions and 11 deletions
|
@ -8,6 +8,7 @@ export class SkillLibrary {
|
||||||
this.embedding_model = embedding_model;
|
this.embedding_model = embedding_model;
|
||||||
this.skill_docs_embeddings = {};
|
this.skill_docs_embeddings = {};
|
||||||
this.skill_docs = null;
|
this.skill_docs = null;
|
||||||
|
this.always_show_skills = ['skills.placeBlock', 'skills.wait']
|
||||||
}
|
}
|
||||||
async initSkillLibrary() {
|
async initSkillLibrary() {
|
||||||
const skillDocs = getSkillDocs();
|
const skillDocs = getSkillDocs();
|
||||||
|
@ -26,6 +27,10 @@ export class SkillLibrary {
|
||||||
this.embedding_model = null;
|
this.embedding_model = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
this.always_show_skills_docs = {};
|
||||||
|
for (const skillName of this.always_show_skills) {
|
||||||
|
this.always_show_skills_docs[skillName] = this.skill_docs.find(doc => doc.includes(skillName));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async getAllSkillDocs() {
|
async getAllSkillDocs() {
|
||||||
|
@ -36,16 +41,24 @@ export class SkillLibrary {
|
||||||
if(!message) // use filler message if none is provided
|
if(!message) // use filler message if none is provided
|
||||||
message = '(no message)';
|
message = '(no message)';
|
||||||
let skill_doc_similarities = [];
|
let skill_doc_similarities = [];
|
||||||
if (!this.embedding_model) {
|
|
||||||
skill_doc_similarities = Object.keys(this.skill_docs)
|
if (select_num === -1) {
|
||||||
|
skill_doc_similarities = Object.keys(this.skill_docs_embeddings)
|
||||||
|
.map(doc_key => ({
|
||||||
|
doc_key,
|
||||||
|
similarity_score: 0
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
else if (!this.embedding_model) {
|
||||||
|
skill_doc_similarities = Object.keys(this.skill_docs_embeddings)
|
||||||
.map(doc_key => ({
|
.map(doc_key => ({
|
||||||
doc_key,
|
doc_key,
|
||||||
similarity_score: wordOverlapScore(message, this.skill_docs[doc_key])
|
similarity_score: wordOverlapScore(message, this.skill_docs_embeddings[doc_key])
|
||||||
}))
|
}))
|
||||||
.sort((a, b) => b.similarity_score - a.similarity_score);
|
.sort((a, b) => b.similarity_score - a.similarity_score);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
let latest_message_embedding = '';
|
let latest_message_embedding = await this.embedding_model.embed(message);
|
||||||
skill_doc_similarities = Object.keys(this.skill_docs_embeddings)
|
skill_doc_similarities = Object.keys(this.skill_docs_embeddings)
|
||||||
.map(doc_key => ({
|
.map(doc_key => ({
|
||||||
doc_key,
|
doc_key,
|
||||||
|
@ -55,15 +68,26 @@ export class SkillLibrary {
|
||||||
}
|
}
|
||||||
|
|
||||||
let length = skill_doc_similarities.length;
|
let length = skill_doc_similarities.length;
|
||||||
if (typeof select_num !== 'number' || isNaN(select_num) || select_num < 0) {
|
if (select_num === -1 || select_num > length) {
|
||||||
select_num = length;
|
select_num = length;
|
||||||
} else {
|
|
||||||
select_num = Math.min(Math.floor(select_num), length);
|
|
||||||
}
|
}
|
||||||
let selected_docs = skill_doc_similarities.slice(0, select_num);
|
// Get initial docs from similarity scores
|
||||||
let relevant_skill_docs = '#### RELEVENT DOCS INFO ###\nThe following functions are listed in descending order of relevance.\n';
|
let selected_docs = new Set(skill_doc_similarities.slice(0, select_num).map(doc => doc.doc_key));
|
||||||
relevant_skill_docs += 'SkillDocs:\n'
|
|
||||||
relevant_skill_docs += selected_docs.map(doc => `${doc.doc_key}`).join('\n### ');
|
// Add always show docs
|
||||||
|
Object.values(this.always_show_skills_docs).forEach(doc => {
|
||||||
|
if (doc) {
|
||||||
|
selected_docs.add(doc);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let relevant_skill_docs = '#### RELEVANT CODE DOCS ###\nThe following functions are available to use:\n';
|
||||||
|
relevant_skill_docs += Array.from(selected_docs).join('\n### ');
|
||||||
|
|
||||||
|
console.log('Selected skill docs:', Array.from(selected_docs).map(doc => {
|
||||||
|
const first_line_break = doc.indexOf('\n');
|
||||||
|
return first_line_break > 0 ? doc.substring(0, first_line_break) : doc;
|
||||||
|
}));
|
||||||
return relevant_skill_docs;
|
return relevant_skill_docs;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue