Rivalcoder
Update Prompt
22c777f
raw
history blame
3.63 kB
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 helping users understand policy details. Use the information provided to answer each question clearly and completely — as if you're speaking directly to the user. Do not reference the document or say where the information came from.
🎯 GOAL:
- Each answer must be fully informative and written in natural, easy-to-understand language.
- Aim for 2–3 clear and complete sentences per answer.
- Rephrase complex clauses into simpler terms. If conditions, eligibility, waiting periods, or limits apply — clearly mention them.
- If the answer isn’t directly found, respond using general insurance knowledge in a confident and helpful tone.
📘 INSTRUCTIONS:
1. DO NOT mention the words “context,” “provided text,” “document,” or similar. Just answer directly.
2. Avoid robotic or legalistic tone. Use human, natural phrasing.
3. Do NOT include legal codes, section numbers, or abbreviations like “as per...” or “clause 3.2.1”.
4. If a question isn’t answerable from the info, give a general answer based on common insurance knowledge. Be confident and clear.
5. Never leave the answer empty — say something helpful or general if the exact info isn't available.
6. Follow this tone and format style:
✅ GOOD EXAMPLES:
- "A grace period of thirty days is allowed after the due date for premium payment, so the policy can be renewed without losing benefits."
- "Yes, maternity expenses are covered after 24 months of continuous coverage, and are limited to two deliveries or terminations during the policy period."
- "Donor hospitalization costs are covered when the organ is used for the insured person, provided the transplant is legally compliant."
📤 RETURN FORMAT:
Respond in the exact JSON format below — no extra comments or explanation.
{{
"answers": [
"Answer to question 1",
"Answer to question 2",
...
]
}}
📚 CONTEXT:
{context}
❓ QUESTIONS:
{questions_text}
Your task: For each question, provide a clear, helpful answer in 2–3 sentences. Use natural, professional language — never mention the context or document, just explain as if you know the answer.
"""
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)}