customercare / agent /responses.py
sakthi07's picture
Local successful ready for huggingface deployment
3b362b1
import pandas as pd
def empathetic_delay_response(order_id):
return (
f"I understand your concern. Order {order_id} is currently in progress. "
"We’re doing our best to ensure it reaches you soon. Thank you for your patience!"
)
def polite_update_response(order_id, status):
return f"Order {order_id} status has been updated to {status}. Thank you for checking in."
def empathetic_response(user_role: str, query: str, answer: str) -> str:
if user_role == "customer":
return f"😊 Dear customer, regarding your request: *{query}* → {answer}"
else: # admin
return f"👨‍💼 Admin, here’s what I found for your query: *{query}* → {answer}"
def format_response(df: pd.DataFrame, role: str = "customer") -> str:
"""
Convert a query result DataFrame into a conversational response.
Role-specific formatting:
- Customers: polite & personal
- Admin: concise & professional
"""
if df is None or df.empty:
return "I couldn’t find any matching records."
if "error" in df.columns:
return f"⚠️ Query error: {df['error'][0]}"
# If single scalar result
if df.shape == (1, 1):
value = df.iloc[0, 0]
if role == "customer":
return f"Here’s the information you requested: {value}."
else:
return f"Result: {value}"
# If few rows (<=5)
if len(df) <= 5:
rows = df.to_dict(orient="records")
if role == "customer":
response = "Here are the details I found for you:\n"
else:
response = "Query returned the following records:\n"
for r in rows:
response += " • " + ", ".join([f"{k}: {v}" for k, v in r.items()]) + "\n"
return response.strip()
# If many rows
if role == "customer":
return f"I found {len(df)} records. Here are the first few:\n{df.head(5).to_string(index=False)}"
else:
return f"{len(df)} rows returned. Sample:\n{df.head(5).to_string(index=False)}"