File size: 4,407 Bytes
01d5a5d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
"""
Advanced prompt strategies for multi-phase chat processing
"""
import logging
from typing import Optional

from lpm_kernel.api.domains.kernel2.dto.chat_dto import ChatRequest
from lpm_kernel.api.domains.kernel2.services.prompt_builder import SystemPromptStrategy
from lpm_kernel.api.domains.kernel2.services.knowledge_service import (
    default_retriever,
    default_l1_retriever,
)

logger = logging.getLogger(__name__)

class RequirementEnhancementStrategy(SystemPromptStrategy):
    """Strategy for enhancing requirements with context"""
    def __init__(self, base_strategy: SystemPromptStrategy):
        self.base_strategy = base_strategy

    def build_prompt(self, request: ChatRequest) -> str:
        prompt = """
        You are a requirement analyst. Your task is to enhance and complete the given rough requirement.
        Consider the following:
        1. Clarify any ambiguous points
        2. Add necessary technical details
        3. Ensure the requirement is specific and actionable
        4. Incorporate the provided context and knowledge
        """
        
        # Add knowledge retrieval results if enabled
        knowledge_sections = []
        
        if request.enable_l0_retrieval:
            l0_knowledge = default_retriever.retrieve(request.message)
            if l0_knowledge:
                knowledge_sections.append(f"Reference knowledge:\n{l0_knowledge}")
                
        if request.enable_l1_retrieval:
            l1_knowledge = default_l1_retriever.retrieve(request.message)
            if l1_knowledge:
                knowledge_sections.append(f"Reference shades:\n{l1_knowledge}")
                
        if knowledge_sections:
            prompt += "\n\nKnowledge context:\n" + "\n\n".join(knowledge_sections)
            
        base_prompt = self.base_strategy.build_prompt(request)
        if base_prompt:
            prompt = f"{base_prompt}\n\n{prompt}"
            
        logger.info(f"RequirementEnhancementStrategy prompt: {prompt}")
        return prompt


class ExpertSolutionStrategy(SystemPromptStrategy):
    """Strategy for generating expert solutions"""
    def __init__(self, base_strategy: SystemPromptStrategy):
        self.base_strategy = base_strategy

    def build_prompt(self, request: ChatRequest) -> str:
        prompt = """
        You are an expert system designed to generate solutions based on specific requirements.
        Generate a detailed solution that meets all aspects of the requirement.
        Be specific and include implementation details where necessary.
        """
        
        base_prompt = self.base_strategy.build_prompt(request)
        if base_prompt:
            prompt = f"{base_prompt}\n\n{prompt}"
            
        logger.info(f"ExpertSolutionStrategy prompt: {prompt}")
        return prompt


class SolutionValidatorStrategy(SystemPromptStrategy):
    """Strategy for validating solutions"""
    def __init__(self, base_strategy: SystemPromptStrategy):
        self.base_strategy = base_strategy

    def build_prompt(self, request: ChatRequest) -> str:
        prompt = """
        You are a solution validator. Your task is to validate if the given solution meets all requirements.
        You must return a JSON response in the following format:
        {
            "is_valid": boolean,
            "feedback": string  // Reason and improvement suggestions if invalid
        }
        """
        
        base_prompt = self.base_strategy.build_prompt(request)
        if base_prompt:
            prompt = f"{base_prompt}\n\n{prompt}"
            
        logger.info(f"SolutionValidatorStrategy prompt: {prompt}")
        return prompt


class SolutionFormatterStrategy(SystemPromptStrategy):
    """Strategy for formatting solutions"""
    def __init__(self, base_strategy: SystemPromptStrategy):
        self.base_strategy = base_strategy

    def build_prompt(self, request: ChatRequest) -> str:
        prompt = """
        You are a solution formatter. Your task is to format the given solution to be clear and well-structured.
        Improve readability while maintaining all technical details.
        """
        
        base_prompt = self.base_strategy.build_prompt(request)
        if base_prompt:
            prompt = f"{base_prompt}\n\n{prompt}"
            
        logger.info(f"SolutionFormatterStrategy prompt: {prompt}")
        return prompt