File size: 7,145 Bytes
5fdb69e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#!/usr/bin/env python
# coding: utf-8

# In[3]:


# imports
import os
from dotenv import load_dotenv
from openai import OpenAI
import gradio as gr
import json

# Load environment variables in a file called .env
load_dotenv(override=True)
openai_api_key = os.getenv('OPENAI_API_KEY')
anthropic_api_key = os.getenv('ANTHROPIC_API_KEY')
google_api_key = os.getenv('GOOGLE_API_KEY')

# Initialize
openai = OpenAI()
MODEL = 'gpt-4o-mini'

# Real listing-specific information
listing_info = {
    "vehicles": [
        {
            "id": "vehicle1",
            "name": "2024 Chevrolet Equinox LS FWD (Sport Edition)",
            "type": "SUV",
            "seats": 5,
            "features": [
                "Automatic transmission",
                "AUX input",
                "Backup camera",
                "Bluetooth",
                "Keyless entry",
                "Toll pass (SunPass enabled)",
                "USB charger",
                "USB input",
                "Must be 21+ to book"
            ],
            "daily_rate": "See Turo listing",
            "mileage_limit": "Unlimited",
            "fuel_type": "Gasoline",
            "additional_notes": "Includes toll pass S/N 0729884410104. Please return with same fuel level or opt for prepaid refuel. No smoking, pets, or unauthorized drivers. $25 fee for unauthorized cancellation prior to start."
        }
    ],
    "parking_locations": {
        "airport": {
            "address": "7640 Narcoossee Rd, Orlando, FL 32822",
            "instructions": "Pickup and drop-off at OMNI Airport Parking. Use lockbox code sent via Turo app 30 minutes before pickup. Free 24/7 shuttle service to/from MCO available.",
            "shuttle": "Free 24/7 shuttle runs between MCO and OMNI Parking. Details provided before trip."
        }
    },
    "pickup_process": "Receive lockbox code via Turo app 30 minutes before pickup. Use the code to access keys. Drop off at same location.",
    "license_requirements": "Only listed drivers with valid licenses may operate the vehicle. Upload your license via the Turo app at least 24 hours before your trip. International licenses require a passport.",
    "contact_info": {
        "host": {
            "name": "MM Services",
            "phone": "Not publicly shared; use Turo messaging",
            "response_time": "Usually within 30 minutes"
        }
    },
    "cancellation_policy": "$25 cancellation fee applies if canceled before trip starts. Turo cancellation rules apply after trip starts.",
    "insurance_options": {
        "basic": "State minimum liability coverage, physical damage up to actual cash value with $3,000 deductible",
        "standard": "State minimum liability coverage, physical damage up to actual cash value with $500 deductible",
        "premium": "State minimum liability coverage, physical damage up to actual cash value with $0 deductible"
    },
    "extras": {
        "Child safety seat": "$20/trip - 2 available",
        "Prepaid refuel": "$50/trip - Return at any fuel level",
        "Cooler": "$20/trip - 1 available"
    },
    "guidelines": {
        "smoking": "No smoking. Cleaning fees apply per Turo policy.",
        "pets": "No pets. Cleaning fees apply per Turo policy.",
        "vehicle_use": "No racing, off-roading, or reckless driving. Violations incur $150+ fee.",
        "fueling": "Return with same fuel level unless prepaid refuel is selected.",
        "tolls": "Toll charges billed 30-90 days post-trip using SunPass.",
        "airport": "Do not use terminal parking. Use OMNI lot and shuttle."
    },
    "reviews": [
        {"user": "Wendy", "comment": "The pick up and drop was super nice... Host is very quick to respond and easy to communicate with."},
        {"user": "Ariel", "comment": "The car was clean and ready to go. Clear directions on pickup. Great host."},
        {"user": "Marco", "comment": "Great host! Easy instructions. Highly recommend."}
    ]
}

# Define system message
system_message = f"""You are a helpful assistant for a Turo car sharing business. Your role is to help hosts and co-hosts 
communicate effectively with customers. Provide relevant information about the hosts' car listings,
address customer queries professionally, and offer guidance on important topics.

LISTING INFORMATION:
{json.dumps(listing_info, indent=2)}

Use the above listing information to answer customer questions. Be specific when referencing vehicle details,
parking locations, and policies. For example, if someone asks about airport parking, provide the exact address
and shuttle information from the listing data. If they ask about a specific vehicle, provide details for that 
vehicle only. Always be helpful, courteous, and informative.

Key topics to address:
- Parking locations and directions
- Airport shuttle services and pickup procedures  
- License upload requirements and verification process
- Vehicle features and specifications
- Booking policies, extensions, and modifications
- Check-in and check-out procedures
- Fueling requirements and recommendations
- Mileage limits and overage fees
- Cleaning expectations and fees
- Emergency contacts and roadside assistance"""

# Chat function
def chat(message, history):
    relevant_system_message = system_message
    message_lower = message.lower()

    if 'insurance' in message_lower:
        relevant_system_message += "\nProvide specific details about our insurance options."

    elif 'cancel' in message_lower:
        relevant_system_message += "\nReference the cancellation policy."

    elif 'chevrolet' in message_lower or 'equinox' in message_lower:
        relevant_system_message += "\nThe customer is asking about the 2024 Chevrolet Equinox. Provide specific details."

    elif 'airport' in message_lower or 'parking' in message_lower:
        relevant_system_message += "\nInclude specific parking location and shuttle details."

    elif 'pickup' in message_lower or 'shuttle' in message_lower:
        relevant_system_message += "\nProvide exact pickup process and shuttle details."

    elif 'license' in message_lower or 'verification' in message_lower:
        relevant_system_message += "\nExplain license requirements clearly."

    elif 'contact' in message_lower or 'host' in message_lower:
        relevant_system_message += "\nShare host contact details from the listing."

    messages = [{"role": "system", "content": relevant_system_message}] + history + [{"role": "user", "content": message}]
    stream = openai.chat.completions.create(model=MODEL, messages=messages, stream=True)

    response = ""
    for chunk in stream:
        response += chunk.choices[0].delta.content or ''
        yield response

# Launch the chat interface
if __name__ == "__main__":
    gr.ChatInterface(
    fn=chat,
    type="messages",
    title="πŸš— MM Services – Turo Rental Assistant",
    description="""
    πŸ‘‹ Welcome to MM Services!<br>
    Need help with your booking, pickup, airport shuttle, or car details? Just ask me!
    I’m available 24/7 to assist with anything related to your trip.
    """,
    theme="soft"
).launch(share=True)


# In[ ]: