feat: adjust the way of returning data to LLM (#69)

This commit is contained in:
sigoden
2024-07-10 18:53:32 +08:00
committed by GitHub
parent 01e07c0cc0
commit 732eae532c
37 changed files with 218 additions and 142 deletions
+19 -7
View File
@@ -49,11 +49,19 @@ function parseRawData(data) {
}
function setupEnv(rootDir, agentName) {
process.env["LLM_ROOT_DIR"] = rootDir;
loadEnv(path.resolve(rootDir, ".env"));
process.env["LLM_ROOT_DIR"] = rootDir;
process.env["LLM_AGENT_NAME"] = agentName;
process.env["LLM_AGENT_ROOT_DIR"] = path.resolve(rootDir, "agents", agentName);
process.env["LLM_AGENT_CACHE_DIR"] = path.resolve(rootDir, "cache", agentName);
process.env["LLM_AGENT_ROOT_DIR"] = path.resolve(
rootDir,
"agents",
agentName,
);
process.env["LLM_AGENT_CACHE_DIR"] = path.resolve(
rootDir,
"cache",
agentName,
);
}
function loadEnv(filePath) {
@@ -84,22 +92,26 @@ async function run(agentPath, agentFunc, agentData) {
throw new Error(`Not module function '${agentFunc}' at '${agentPath}'`);
}
const value = await mod[agentFunc](agentData);
dumpValue(value);
returnToLLM(value);
}
function dumpValue(value) {
function returnToLLM(value) {
if (value === null || value === undefined) {
return;
}
let writer = process.stdout;
if (process.env["LLM_OUTPUT"]) {
writer = fs.createWriteStream(process.env["LLM_OUTPUT"]);
}
const type = typeof value;
if (type === "string" || type === "number" || type === "boolean") {
console.log(value);
writer.write(value);
} else if (type === "object") {
const proto = Object.prototype.toString.call(value);
if (proto === "[object Object]" || proto === "[object Array]") {
const valueStr = JSON.stringify(value, null, 2);
require("assert").deepStrictEqual(value, JSON.parse(valueStr));
console.log(valueStr);
writer.write(value);
}
}
}