@kangthink/q-engine
Version:
A question-answer generation engine that stimulates thinking
42 lines • 1.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ScientificTransform = void 0;
const types_1 = require("../types");
const BaseTransform_1 = require("./BaseTransform");
class ScientificTransform extends BaseTransform_1.BaseTransform {
constructor() {
super(...arguments);
this.mode = types_1.TransformMode.SCIENTIFIC;
}
async transform(context) {
const { sourceNode, options } = context;
// Scientific method typically generates questions to systematically investigate a topic
const targetNodeType = options?.targetNodeType || this.defaultTargetType;
// Get or create prompt template
const promptTemplate = this.promptManager.getPrompt(this.mode) ||
this.promptManager.getDefaultPrompt(this.mode);
// Build prompt with variables
const targetTypeKorean = targetNodeType === types_1.NodeType.QUESTION ? '질문' : '답변';
const count = options?.count ? ` ${options.count}` : '';
const prompt = this.buildPrompt(promptTemplate.template, {
content: sourceNode.content,
targetType: targetTypeKorean,
count: count,
});
// Generate content using LLM
const generatedContent = await this.generateContent(prompt);
// Parse content to extract single result (first item if multiple)
const parsedContent = this.extractSingleResult(generatedContent);
// Create and return transform result
return this.createTransformResult(sourceNode, parsedContent, targetNodeType);
}
/**
* 다중 결과에서 첫 번째 결과만 추출
*/
extractSingleResult(content) {
const parsedResults = this.parseMultipleResults(content);
return parsedResults.length > 0 ? parsedResults[0] : content.trim();
}
}
exports.ScientificTransform = ScientificTransform;
//# sourceMappingURL=ScientificTransform.js.map