UNPKG

@kangthink/q-engine

Version:

A question-answer generation engine that stimulates thinking

129 lines 6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MockLLMProvider = void 0; class MockLLMProvider { constructor() { this.responses = new Map(); this.defaultResponse = 'Generated response based on the prompt.'; } async generateResponse(prompt) { // Check if we have a predefined response for this prompt const response = this.responses.get(prompt); if (response) { return response; } // Simple mock response generation based on prompt content if (prompt.includes('5W1H') || prompt.includes('육하원칙')) { return this.generate5W1HResponse(prompt); } else if (prompt.includes('Socratic') || prompt.includes('소크라테스')) { return this.generateSocraticResponse(prompt); } else if (prompt.includes('Matrix') || prompt.includes('방법')) { return this.generateMatrixResponse(prompt); } else if (prompt.includes('답변을') || prompt.includes('answer')) { return this.generateAnswerResponse(prompt); } return this.defaultResponse; } setResponse(prompt, response) { this.responses.set(prompt, response); } generate5W1HResponse(prompt) { const content = this.extractContent(prompt); const count = this.extractCount(prompt); if (count > 1) { const questions = [ `누가 "${content}"와 관련이 있나요?`, `"${content}"의 핵심은 무엇인가요?`, `"${content}"는 언제 일어나나요?`, `"${content}"는 어디서 발생하나요?`, `"${content}"는 왜 중요한가요?`, `"${content}"는 어떻게 작동하나요?` ]; return questions.slice(0, count).join('\n'); } return `"${content}"에 대한 육하원칙(5W1H) 분석: - 누가(Who): 관련된 주요 이해관계자들 - 무엇을(What): 핵심 주제나 내용 - 언제(When): 관련 시간적 맥락 - 어디서(Where): 상황이나 위치적 맥락 - 왜(Why): 근본적인 이유나 동기 - 어떻게(How): 방법이나 과정`; } generateSocraticResponse(prompt) { const content = this.extractContent(prompt); const count = this.extractCount(prompt); if (count > 1) { const questions = [ `"${content}"에 대해 어떤 가정을 하고 계신가요?`, `다른 관점에서 "${content}"를 어떻게 볼 수 있을까요?`, `"${content}"의 정의가 명확한가요?`, `"${content}"에 대한 증거는 무엇인가요?`, `"${content}"의 한계는 무엇일까요?` ]; return questions.slice(0, count).join('\n'); } return `"${content}"에 대해 어떤 가정을 하고 계신가요? 다른 관점들도 고려해보셨나요? 당신의 이해를 뒷받침하는 증거는 무엇인가요? 이 개념의 정의가 명확한가요?`; } generateMatrixResponse(prompt) { const content = this.extractContent(prompt); const level = this.extractLevel(prompt); const direction = this.extractDirection(prompt); const count = this.extractCount(prompt); if (count > 1) { const questions = [ `"${content}"의 핵심 요소는 무엇인가요?`, `"${content}"와 관련된 다른 개념들은 무엇인가요?`, `"${content}"를 다른 분야에 어떻게 적용할 수 있나요?`, `"${content}"의 한계와 대안은 무엇인가요?`, `"${content}"에 대한 비판적 관점은 무엇인가요?` ]; return questions.slice(0, count).join('\n'); } return `"${content}"에 대한 Matrix 분석 (레벨: ${level}, 방향: ${direction}): 이 주제를 다각도에서 더 깊이 탐구해보세요. - 현재 레벨에서 어떤 새로운 관점을 발견할 수 있나요? - 이 방향으로 사고를 확장하면 어떤 통찰을 얻을 수 있을까요?`; } extractContent(prompt) { const match = prompt.match(/"([^"]+)"/); return match ? match[1] : 'the given content'; } extractLevel(prompt) { const match = prompt.match(/Level:\s*(\d+)/); return match ? match[1] : '2'; } extractDirection(prompt) { const match = prompt.match(/Direction:\s*(\w+)/); return match ? match[1] : 'FOCUSED'; } generateAnswerResponse(prompt) { const content = this.extractContent(prompt); const count = this.extractCount(prompt); if (count > 1) { const answers = [ `"${content}"에 대한 첫 번째 답변입니다. Mock 답변으로 실제 내용과 다를 수 있습니다.`, `"${content}"에 대한 두 번째 관점의 답변입니다. 다른 접근 방식을 제시합니다.`, `"${content}"에 대한 세 번째 답변으로, 추가적인 시각을 제공합니다.`, `"${content}"에 대한 네 번째 답변이며, 보완적인 설명을 포함합니다.`, `"${content}"에 대한 다섯 번째 답변으로, 종합적인 관점을 제시합니다.` ]; return answers.slice(0, count).join('\n'); } return `"${content}"에 대한 Mock 답변입니다. 실제 AI 서비스를 사용하면 더 정확하고 유용한 답변을 받을 수 있습니다. 이는 테스트를 위한 가상의 응답입니다.`; } extractCount(prompt) { const match = prompt.match(/질문\s*(\d+)개|답변\s*(\d+)개|\s(\d+)개의/); if (match) { return parseInt(match[1] || match[2] || match[3]); } return 1; } } exports.MockLLMProvider = MockLLMProvider; //# sourceMappingURL=MockLLMProvider.js.map