async function KapaQuery(args, ctx) {
try {
const response = await fetch(
`https://api.kapa.ai/query/v1/${args.thread ? `thread/${args.thread}/`: ''}stream?query=${args.query}`,
{
method: "GET",
headers: {
"X-API-TOKEN": "<API TOKEN>",
},
}
);
if (response.status === 200) {
const reader = response.body
.pipeThrough(new TextDecoderStream())
.getReader();
const delimiter = "\u241E";
let buffer = "";
while (true) {
const result = await reader.read();
buffer += result.value;
const chunks = buffer.split(delimiter);
for (let i in chunks) {
if (i < chunks.length - 1) {
ctx.triggerActionEvent("chunk", JSON.parse(chunks[i]))
} else {
buffer = chunks[i];
}
}
if (result.done) {
ctx.triggerActionEvent("end")
break;
}
}
} else {
const message = await response.text();
ctx.triggerActionEvent("error". message)
console.error("Error fetching data:", message);
}
} catch (error) {
ctx.triggerActionEvent("error". error)
console.error("Error fetching thread data:", error);
console.error(`Thread request failed: ${error.message}`);
}
}
This is specific for calling kapa.ai, so it will be slightly different for OpenAI.