File size: 3,113 Bytes
ec96972
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
eb87b3b
9fc012d
ec96972
9fc012d
 
 
 
 
 
 
 
ec96972
9fc012d
 
 
 
 
22c777f
9fc012d
 
 
 
eb87b3b
9fc012d
 
eb87b3b
 
22c777f
eb87b3b
 
 
22c777f
eb87b3b
 
 
ec96972
 
eb87b3b
ec96972
 
9fc012d
eb87b3b
22c777f
 
9fc012d
22c777f
8a36630
ec96972
 
 
 
 
 
 
 
 
 
 
 
 
6bc8549
 
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
import google.generativeai as genai
import os
import json
from dotenv import load_dotenv
load_dotenv()

api_key = os.getenv("GOOGLE_API_KEY")
if not api_key:
    raise ValueError("GOOGLE_API_KEY environment variable is not set. Please add it to your .env file")

print(f"Google API Key loaded: {api_key[:10]}..." if api_key else "No API key found")
genai.configure(api_key=api_key)

def query_gemini(questions, contexts):
    try:
        context = "\n\n".join(contexts)
        questions_text = "\n".join([f"{i+1}. {q}" for i, q in enumerate(questions)])
        prompt = f"""
You are an expert insurance assistant generating formal yet user-facing answers to policy questions. Your goal is to write professional, structured answers that reflect the language of policy documents β€” but are still human-readable and easy to understand.

🧠 FORMAT & TONE GUIDELINES:
- Write in **professional third-person language** (no "you", no "we").
- Use **clear sentence structure** with proper punctuation and spacing.
- Do NOT write in legalese or robotic passive constructions.
- Include eligibility, limits, and waiting periods explicitly where relevant.
- Keep it factual, neutral, and easy to follow.
- Dont be Too Long or  Repeats Unnecessary Information In the response.
- Answer Question Based On The Context and If Not Context Matches Then Answer Based On General Knowledge.

πŸ›‘ DO NOT:
- Use words like "context", "document", or "text".
- Output markdown, bullets, emojis, or markdown code blocks.
- Say "helpful", "available", "allowed", "indemnified", "excluded", etc.
- Use overly robotic passive constructions like "shall be indemnified".

βœ… DO:
- Write in clean, informative language.
- Give complete answers in 2–3 sentences maximum.
- Provide fallback answers if exact info is not available.

πŸ“€ OUTPUT FORMAT (strict):
Respond with **only** the following JSON β€” no explanations, no comments, no markdown:

{{
  "answers": [
    "Answer to question 1",
    "Answer to question 2",
    ...
  ]
}}

πŸ“š CONTEXT:
{context}

❓ QUESTIONS:
{questions_text}

Your task: For each question, provide a complete, professional, and clearly written answer in 2–3 sentences using a formal but readable tone.
"""


        

        model = genai.GenerativeModel('gemini-2.5-flash-lite')
        response = model.generate_content(prompt)
        response_text = response.text.strip()
        try:
            if response_text.startswith("```json"):
                response_text = response_text.replace("```json", "").replace("```", "").strip()
            elif response_text.startswith("```"):
                response_text = response_text.replace("```", "").strip()
            parsed_response = json.loads(response_text)
            return parsed_response
        except json.JSONDecodeError:
            print(f"Failed to parse JSON response: {response_text}")
            return {"answers": ["Error parsing response"] * len(questions)}
    except Exception as e:
        print(f"Error in query_gemini: {str(e)}")
        return {"answers": [f"Error generating response: {str(e)}"] * len(questions)}