LLM ASR
This commit is contained in:
24
src/llm.ts
24
src/llm.ts
@@ -145,7 +145,7 @@ class LLM {
|
||||
|
||||
// Handle compression and memory extraction
|
||||
if(options.compress || options.memory) {
|
||||
let compressed = null;
|
||||
let compressed: any = null;
|
||||
if(options.compress) {
|
||||
compressed = await this.ai.language.compressHistory(options.history, options.compress.max, options.compress.min, options);
|
||||
options.history.splice(0, options.history.length, ...compressed.history);
|
||||
@@ -164,6 +164,15 @@ class LLM {
|
||||
}), {abort});
|
||||
}
|
||||
|
||||
async code(message: string, options?: LLMRequest): Promise<any> {
|
||||
const resp = await this.ask(message, {...options, system: [
|
||||
options?.system,
|
||||
'Return your response in a code block'
|
||||
].filter(t => !!t).join(('\n'))});
|
||||
const codeBlock = /```(?:.+)?\s*([\s\S]*?)```/.exec(resp);
|
||||
return codeBlock ? codeBlock[1].trim() : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Compress chat history to reduce context size
|
||||
* @param {LLMMessage[]} history Chatlog that will be compressed
|
||||
@@ -343,14 +352,11 @@ class LLM {
|
||||
* @returns {Promise<{} | {} | RegExpExecArray | null>}
|
||||
*/
|
||||
async json(text: string, schema: string, options?: LLMRequest): Promise<any> {
|
||||
let resp = await this.ask(text, {...options, system: (options?.system ? `${options.system}\n` : '') + `Only respond using a JSON code block matching this schema:
|
||||
\`\`\`json
|
||||
${schema}
|
||||
\`\`\``});
|
||||
if(!resp) return {};
|
||||
const codeBlock = /```(?:.+)?\s*([\s\S]*?)```/.exec(resp);
|
||||
const jsonStr = codeBlock ? codeBlock[1].trim() : resp;
|
||||
return JSONAttemptParse(jsonStr, {});
|
||||
const code = await this.code(text, {...options, system: [
|
||||
options?.system,
|
||||
`Only respond using JSON matching this schema:\n\`\`\`json\n${schema}\n\`\`\``
|
||||
].filter(t => !!t).join('\n')});
|
||||
return code ? JSONAttemptParse(code, {}) : null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user