Spaces:
Runtime error
Runtime error
File size: 3,304 Bytes
a896b15 6a9f8ac a896b15 | 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 os
import pandas as pd
from neo4j import GraphDatabase
import sys
from datetime import datetime
import re
#neo4j credentials
NEO4J_URI = os.environ.get("NEO4J_URI")
NEO4J_USER = os.environ.get("NEO4J_USER")
NEO4J_PASS = os.environ.get("NEO4J_PASS")
GEMINI_API_KEY=os.environ.get("GEMINI_API_KEY_3")
driver = GraphDatabase.driver(NEO4J_URI, auth=(NEO4J_USER, NEO4J_PASS))
def debug_print(category, message):
"""
Print a debug message with timestamp and category, flushed immediately.
Args:
category (str): Category of the debug message (e.g., NODE, AGENT, TOOL)
message (str): The message to print
"""
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(f"[{timestamp}] [{category}] {message}", flush=True, file=sys.stdout)
#for adding bank name to the cards in the graph
eligibility_df = pd.read_csv("cards_eligibility_updated.csv")
# Loading credit card data
df = pd.read_csv("credit_card_data_updated.csv")
card_descriptions = dict(zip(df["name"], df["description"]))
features = ['Fuel Surcharge Waiver', 'Insurance', 'Shopping Benefits', 'Airport Lounge Access', 'Co-Branded', 'Daily Spends (Grocery)', 'Dining Benefits', 'Domestic Travel Benefits', 'Entertainment', 'General Reward Points', 'Movie Benefits', 'Rupay Network Support', 'Student', 'UPI Transaction Support', 'Welcome Bonus', 'International Travel Benefits', 'premium', 'Flight Discounts', 'Hotel Benefits', 'Travel Benefits', 'Railway Benefits', 'Railway Lounge', 'Utility', 'Beginners (Entry Level)', 'E-commerce Platform Benefits', 'Air Miles', 'Jewellery Spends', 'Concierge Services', 'Food Delivery Benefits', 'Lifestyle & Luxury Perks', 'Spa Access Benefits', 'Golf Access & Perks', 'Super Premium', 'Frequent Flyer Benefits', 'Health Benefits', 'Rent Payment Benefits', 'Education', 'Lifetime Free', 'Roadside Assistance', 'EMI Conversion Options', 'No Forex Markup Fee', 'Secured FD Based', 'Cashback', 'Fuel Benefits', 'Business']
# Loading all 55 cards for comparison feature
df_all_cards = pd.read_csv("credit_card_data_updated.csv")
all_card_names = df_all_cards["name"].tolist()
all_card_lookup = dict(zip(df_all_cards["name"], df_all_cards["description"]))
eligibility_lookup = {}
for _, row in eligibility_df.iterrows():
name = row["Name"].strip()
eligibility_info = f"""
- Bank: {row['Bank']}
- Age: {row['Minimum Age']} to {row['Maximum Age']}
- Minimum Income: {row['Minimum Income (LPA)']} LPA
- Minimum Credit Score: {row['Minimum Credit Score']}
- Joining Fee: ₹{row['Joining fee']}
- Annual Fee: ₹{row['Annual fee']}
"""
eligibility_lookup[name] = eligibility_info.strip()
def clean_gemini_response(text: str) -> str:
# Remove Markdown headers (#, ##, ###, etc.)
text = re.sub(r'^#+\s*', '', text, flags=re.MULTILINE)
# Remove bold/italic symbols (* and **)
text = re.sub(r'\*\*([^*]+)\*\*', r'\1', text) # Bold
text = re.sub(r'\*([^*]+)\*', r'\1', text) # Italic
# Remove bullets like -, *, etc. from start of lines
text = re.sub(r'^\s*[-*•]\s+', '', text, flags=re.MULTILINE)
# Collapse multiple newlines into 1–2 max
text = re.sub(r'\n{3,}', '\n\n', text)
# Strip leading/trailing whitespace
return text.strip()
|