Spaces:
Running
Running
import os | |
import ollama | |
import logging | |
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 |