File size: 1,931 Bytes
507c938
dbd33b2
507c938
ae8d0fc
507c938
5de591d
 
 
 
 
 
507c938
dbd33b2
 
 
507c938
 
 
 
 
 
 
 
 
 
 
 
 
dbd33b2
 
 
 
 
 
 
 
507c938
 
 
 
 
dbd33b2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
507c938
 
 
 
 
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
import os
import ollama
import logging
import sys

# Configure logging for stdout only
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    stream=sys.stdout
)
logger = logging.getLogger(__name__)

class QueryRewriter:
    def __init__(self):
        self.model = os.getenv('OLLAMA_MODEL', "phi3")
        self.ollama_host = os.getenv('OLLAMA_HOST', 'http://ollama:11434')

    def generate(self, prompt):
        try:
            response = ollama.chat(
                model=self.model,
                messages=[{"role": "user", "content": prompt}]
            )
            return response['message']['content']
        except Exception as e:
            logger.error(f"Error generating response: {e}")
            return f"Error: {str(e)}"

    def rewrite_cot(self, query):
        prompt = f"""
        Rewrite the following query using Chain-of-Thought reasoning:
        Query: {query}
        
        Rewritten query:
        """
        rewritten_query = self.generate(prompt)
        if rewritten_query.startswith("Error:"):
            logger.error(f"Error in CoT rewriting: {rewritten_query}")
            return query, prompt  # Return original query if rewriting fails
        return rewritten_query, prompt

    def rewrite_react(self, query):
        prompt = f"""
        Rewrite the following query using the ReAct framework (Reasoning and Acting):
        Query: {query}
        
        Thought 1:
        Action 1:
        Observation 1:
        
        Thought 2:
        Action 2:
        Observation 2:
        
        Final rewritten query:
        """
        rewritten_query = self.generate(prompt)
        if rewritten_query.startswith("Error:"):
            logger.error(f"Error in ReAct rewriting: {rewritten_query}")
            return query, prompt  # Return original query if rewriting fails
        return rewritten_query, prompt