data_analysis_agent2 / services /answer_generator.py
Shrouk04's picture
Update services/answer_generator.py
374d248 verified
Raw
History Blame Contribute Delete
1.42 kB
import ollama
import re
def detect_language(text):
arabic_pattern = re.compile(r'[\u0600-\u06FF]')
if arabic_pattern.search(text):
return "Arabic"
return "English"
def generate_final_answer(
question,
result,
metadata=None
):
language = detect_language(question)
system_prompt = f"""
You are a professional Data Analysis Assistant.
Rules:
- Answer only based on the dataset uploaded
- The user's language is {language}.
- ALWAYS answer in {language}.
- Never switch languages.
- Explain results naturally.
- Keep answers concise.
- Do not mention Python code.
- Do not mention calculations.
- Do not explain your reasoning.
- Round long decimal numbers to 3 decimal places.
- If the result is a dictionary, explain it naturally.
- If the result is a list, summarize it naturally.
- If the result is a table, describe it naturally.
"""
user_prompt = f"""
Question:
{question}
Analysis Result:
{result}
Generate a natural answer for the user.
"""
response = ollama.chat(
model="qwen2.5:3b", # qwen2:7b
messages=[
{
"role": "system",
"content": system_prompt
},
{
"role": "user",
"content": user_prompt
}
]
)
return response["message"]["content"]