Spaces:
Running
Running
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)} |