@just-every/ensemble
Version:
LLM provider abstraction layer with unified streaming interface
59 lines (57 loc) • 1.9 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.verifyOutput = verifyOutput;
const ensemble_request_js_1 = require("../core/ensemble_request.cjs");
async function verifyOutput(verifier, output, originalMessages) {
const verificationPrompt = `Please verify if the following output is correct and complete:
${output}
Respond with JSON: {"status": "pass"} or {"status": "fail", "reason": "explanation of what is wrong"}`;
const verificationMessages = [
...originalMessages,
{
type: 'message',
role: 'assistant',
content: output,
status: 'completed',
},
{
type: 'message',
role: 'user',
content: verificationPrompt,
},
];
const verifierWithSchema = {
...verifier,
jsonSchema: {
type: 'json_schema',
name: 'verification_result',
schema: {
type: 'object',
properties: {
status: { type: 'string', enum: ['pass', 'fail'] },
reason: { type: 'string' },
},
required: ['status'],
},
},
};
try {
const stream = (0, ensemble_request_js_1.ensembleRequest)(verificationMessages, verifierWithSchema);
let fullResponse = '';
for await (const event of stream) {
if (event.type === 'message_complete' && 'content' in event) {
fullResponse = event.content;
}
}
const jsonResponse = JSON.parse(fullResponse);
return jsonResponse;
}
catch (error) {
console.error('Verification failed:', error);
return {
status: 'fail',
reason: 'Invalid verification response',
};
}
}
//# sourceMappingURL=verification.js.map
;