dareenharthi commited on
Commit
ca6e923
·
verified ·
1 Parent(s): 190269b

Update tools.py

Browse files
Files changed (1) hide show
  1. tools.py +59 -10
tools.py CHANGED
@@ -1,10 +1,59 @@
1
- def tool_router(plan_text):
2
- # For demo: simple simulation
3
- if "<action_name>book_free_trial</action_name>" in plan_text:
4
- return "✅ تم حجز تجربتك المجانية! نراك قريباً 💪🏼"
5
- elif "<action_name>pause_subscription</action_name>" in plan_text:
6
- return " تم إيقاف اشتراكك مؤقتاً حسب السياسة."
7
- elif "<action_name>cancel_subscription</action_name>" in plan_text:
8
- return "✅ تم إلغاء الاشتراك، وستصلك تفاصيل الاسترداد قريباً."
9
- else:
10
- return "🔧 تم تنفيذ الخطة بنجاح."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from langchain_core.tools import tool
2
+
3
+ @tool
4
+ def book_free_trial(name: str, contact: str, preferred_date: str) -> str:
5
+ """Book a free 30-minute introductory class for a new user."""
6
+ return f"Free trial booked for {name} on {preferred_date}. Contact: {contact}"
7
+
8
+ @tool
9
+ def subscribe_to_membership(name: str, phone_number: str, package_type: str) -> str:
10
+ """Subscribe user to a membership package."""
11
+ return f"Membership subscription created for {name} ({phone_number}) - Package: {package_type}"
12
+
13
+ @tool
14
+ def cancel_membership(phone_number: str, request_time: str) -> str:
15
+ """Cancel a membership within 48 hours of payment."""
16
+ return f"Membership cancellation processed for {phone_number} at {request_time}"
17
+
18
+ @tool
19
+ def postpone_membership(phone_number: str, reason: str, start_date: str, end_date: str) -> str:
20
+ """Postpone membership for 2 weeks to 2 months."""
21
+ return f"Membership postponed for {phone_number} from {start_date} to {end_date}. Reason: {reason}"
22
+
23
+ @tool
24
+ def transfer_membership(phone_number: str, new_member_name: str, new_member_phone_number: str) -> str:
25
+ """Transfer a membership to another person with consent and 200 SAR fee."""
26
+ return f"Membership transferred from {phone_number} to {new_member_name} ({new_member_phone_number}). Fee: 200 SAR"
27
+
28
+ @tool
29
+ def get_current_date() -> str:
30
+ """Get the current date in YYYY-MM-DD format."""
31
+ from datetime import datetime
32
+ return datetime.now().strftime("%Y-%m-%d")
33
+
34
+ @tool
35
+ def calculate_date_range(start_date: str, duration_months: int) -> str:
36
+ """Calculate end date given start date and duration in months."""
37
+ from datetime import datetime
38
+ from dateutil.relativedelta import relativedelta
39
+
40
+ start = datetime.strptime(start_date, "%Y-%m-%d")
41
+ end = start + relativedelta(months=duration_months)
42
+
43
+ return f"Start: {start.strftime('%Y-%m-%d')}, End: {end.strftime('%Y-%m-%d')}, Duration: {(end - start).days} days"
44
+
45
+ def format_messages_with_actions(messages):
46
+ """Format messages for the manager prompt"""
47
+ formatted = []
48
+ for msg in messages:
49
+ if hasattr(msg, 'content'):
50
+ formatted.append(f"Message: {msg.content}")
51
+ elif hasattr(msg, 'invoke'):
52
+ # Handle tool calls properly
53
+ formatted.append(f"Tool call: {str(msg)}")
54
+ return "\n".join(formatted)
55
+
56
+
57
+
58
+ tools_list = [ calculate_date_range, get_current_date, book_free_trial, subscribe_to_membership, cancel_membership, postpone_membership, transfer_membership ]
59
+