Pilatopia / tools.py
dareenharthi's picture
Update tools.py
ca6e923 verified
from langchain_core.tools import tool
@tool
def book_free_trial(name: str, contact: str, preferred_date: str) -> str:
"""Book a free 30-minute introductory class for a new user."""
return f"Free trial booked for {name} on {preferred_date}. Contact: {contact}"
@tool
def subscribe_to_membership(name: str, phone_number: str, package_type: str) -> str:
"""Subscribe user to a membership package."""
return f"Membership subscription created for {name} ({phone_number}) - Package: {package_type}"
@tool
def cancel_membership(phone_number: str, request_time: str) -> str:
"""Cancel a membership within 48 hours of payment."""
return f"Membership cancellation processed for {phone_number} at {request_time}"
@tool
def postpone_membership(phone_number: str, reason: str, start_date: str, end_date: str) -> str:
"""Postpone membership for 2 weeks to 2 months."""
return f"Membership postponed for {phone_number} from {start_date} to {end_date}. Reason: {reason}"
@tool
def transfer_membership(phone_number: str, new_member_name: str, new_member_phone_number: str) -> str:
"""Transfer a membership to another person with consent and 200 SAR fee."""
return f"Membership transferred from {phone_number} to {new_member_name} ({new_member_phone_number}). Fee: 200 SAR"
@tool
def get_current_date() -> str:
"""Get the current date in YYYY-MM-DD format."""
from datetime import datetime
return datetime.now().strftime("%Y-%m-%d")
@tool
def calculate_date_range(start_date: str, duration_months: int) -> str:
"""Calculate end date given start date and duration in months."""
from datetime import datetime
from dateutil.relativedelta import relativedelta
start = datetime.strptime(start_date, "%Y-%m-%d")
end = start + relativedelta(months=duration_months)
return f"Start: {start.strftime('%Y-%m-%d')}, End: {end.strftime('%Y-%m-%d')}, Duration: {(end - start).days} days"
def format_messages_with_actions(messages):
"""Format messages for the manager prompt"""
formatted = []
for msg in messages:
if hasattr(msg, 'content'):
formatted.append(f"Message: {msg.content}")
elif hasattr(msg, 'invoke'):
# Handle tool calls properly
formatted.append(f"Tool call: {str(msg)}")
return "\n".join(formatted)
tools_list = [ calculate_date_range, get_current_date, book_free_trial, subscribe_to_membership, cancel_membership, postpone_membership, transfer_membership ]