File size: 2,665 Bytes
ec96972
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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)
        
        # Create a numbered list of questions
        questions_text = "\n".join([f"{i+1}. {q}" for i, q in enumerate(questions)])
        
        prompt = f"""You are an insurance policy assistant. Based on the below document snippets, answer the following questions precisely.

IMPORTANT INSTRUCTIONS:
1. Only respond based on the context provided. If information is not found in the context, respond with "Not Found".
2. Provide clear, concise answers that directly address each question.
3. Return your response in the exact JSON format shown below.
4. Give complete, informative responses based on the provided context.
5. Answer each question in the order provided.

Context:
{context}

Questions:
{questions_text}

Return your response in this exact JSON format:
{{
    "answers": [
        "Answer to question 1",
        "Answer to question 2",
        "Answer to question 3",
        ...
    ]
}}

Ensure each answer is comprehensive and directly addresses the corresponding question. If information is not found in the context for any question, respond with "Not Found" for that question."""

        model = genai.GenerativeModel('gemini-2.0-flash-exp')
        response = model.generate_content(prompt)
        response_text = response.text.strip()
        
        # Try to parse the response as JSON
        try:
            # Remove any markdown code blocks if present
            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:
            # If JSON parsing fails, return a structured response
            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)}