feat: adjust the way of returning data to LLM (#69)
This commit is contained in:
+19
-7
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user