Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b814ea8b28 | |||
| 06dda88dbc | |||
| 5d34652d46 |
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ztimson/ai-utils",
|
"name": "@ztimson/ai-utils",
|
||||||
"version": "0.8.6",
|
"version": "0.8.9",
|
||||||
"description": "AI Utility library",
|
"description": "AI Utility library",
|
||||||
"author": "Zak Timson",
|
"author": "Zak Timson",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
@@ -117,12 +117,13 @@ class LLM {
|
|||||||
const score = (o ? this.cosineSimilarity(m.embeddings[0], o[0].embedding) : 0)
|
const score = (o ? this.cosineSimilarity(m.embeddings[0], o[0].embedding) : 0)
|
||||||
+ (q ? this.cosineSimilarity(m.embeddings[1], q[0].embedding) : 0);
|
+ (q ? this.cosineSimilarity(m.embeddings[1], q[0].embedding) : 0);
|
||||||
return {...m, score};
|
return {...m, score};
|
||||||
}).toSorted((a: any, b: any) => a.score - b.score).slice(0, limit);
|
}).toSorted((a: any, b: any) => a.score - b.score).slice(0, limit)
|
||||||
|
.map(m => `- ${m.owner}: ${m.fact}`).join('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
options.system += '\nYou have RAG memory and will be given the top_k closest memories regarding the users query. Save anything new you have learned worth remembering from the user message using the remember tool and feel free to recall memories manually.\n';
|
options.system += '\nYou have RAG memory and will be given the top_k closest memories regarding the users query. Save anything new you have learned worth remembering from the user message using the remember tool and feel free to recall memories manually.\n';
|
||||||
const relevant = await search(message);
|
const relevant = await search(message);
|
||||||
if(relevant.length) options.history.push({role: 'tool', name: 'recall', id: 'auto_recall_' + Math.random().toString(), args: {}, content: 'Things I remembered:\n' + relevant.map(m => `${m.owner}: ${m.fact}`).join('\n')});
|
if(relevant.length) options.history.push({role: 'tool', name: 'recall', id: 'auto_recall_' + Math.random().toString(), args: {}, content: `Things I remembered:\n${relevant}`});
|
||||||
options.tools = [{
|
options.tools = [{
|
||||||
name: 'recall',
|
name: 'recall',
|
||||||
description: 'Recall the closest memories you have regarding a query using RAG',
|
description: 'Recall the closest memories you have regarding a query using RAG',
|
||||||
|
|||||||
13
src/tools.ts
13
src/tools.ts
@@ -65,14 +65,15 @@ export const ExecTool: AiTool = {
|
|||||||
},
|
},
|
||||||
fn: async (args, stream, ai) => {
|
fn: async (args, stream, ai) => {
|
||||||
try {
|
try {
|
||||||
switch(args.type) {
|
switch(args.language) {
|
||||||
case 'cli':
|
case 'cli':
|
||||||
return await CliTool.fn({command: args.code}, stream, ai);
|
return await CliTool.fn({command: args.code}, stream, ai);
|
||||||
case 'node':
|
case 'node':
|
||||||
return await JSTool.fn({code: args.code}, stream, ai);
|
return await JSTool.fn({code: args.code}, stream, ai);
|
||||||
case 'python': {
|
case 'python':
|
||||||
return await PythonTool.fn({code: args.code}, stream, ai);
|
return await PythonTool.fn({code: args.code}, stream, ai);
|
||||||
}
|
default:
|
||||||
|
throw new Error(`Unsupported language: ${args.language}`);
|
||||||
}
|
}
|
||||||
} catch(err: any) {
|
} catch(err: any) {
|
||||||
return {error: err?.message || err.toString()};
|
return {error: err?.message || err.toString()};
|
||||||
@@ -104,9 +105,9 @@ export const JSTool: AiTool = {
|
|||||||
code: {type: 'string', description: 'CommonJS javascript', required: true}
|
code: {type: 'string', description: 'CommonJS javascript', required: true}
|
||||||
},
|
},
|
||||||
fn: async (args: {code: string}) => {
|
fn: async (args: {code: string}) => {
|
||||||
const console = consoleInterceptor(null);
|
const c = consoleInterceptor(null);
|
||||||
const resp = await Fn<any>({console}, args.code, true).catch((err: any) => console.output.error.push(err));
|
const resp = await Fn<any>({console: c}, args.code, true).catch((err: any) => c.output.error.push(err));
|
||||||
return {...console.output, return: resp, stdout: undefined, stderr: undefined};
|
return {...c.output, return: resp, stdout: undefined, stderr: undefined};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user