Spaces:
Sleeping
Sleeping
| from langchain_core.tools import 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}" | |
| 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}" | |
| 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}" | |
| 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}" | |
| 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" | |
| 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") | |
| 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 ] | |