File size: 8,473 Bytes
317a04b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b9f335d
 
317a04b
 
 
 
 
b9f335d
317a04b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
from groq import Groq
import gradio as gr
import os
import json
import random
from getvalues import getValues
from datetime import datetime, timedelta
import uuid
import re

api1 = os.getenv("Groq_key")
api2 = os.getenv("GRoq_key")

apis = [
    api1,
    api2,
]

def responsenew(data):
    idval = random.randint(1, 1000000000)
    print(f"\n\n{data}")
    newdata = data.replace("'", '"')
    items = json.loads(newdata)
    query = items['text']
    query = query.lower()
    
    
    while True:
        for api in apis:
            client = Groq(
                    api_key=api,
                )  # Configure the model with the API key
           
            try:
                response = client.chat.completions.create(
                messages=[
                    {
                        "role": "user",
                        "content": query,
                    }
                ],
                model="mixtral-8x7b-32768",
                )
                answer = response.choices[0].message.content
            except Exception as e:
                print(f"API call failed for: {e}")
            if answer:
                break
        if answer:
                break
    print(f"\n{answer}")
    if query is not None:
        if "remind me" in query:
            values = getValues(query)
            if values[0] is not None:
                msg = values[0]
            else:
                msg = "Reminder Alert"
            if values[1] is not None:
                time = values[1]
            else:
                time = "5:00 PM"
                # time = time1 + timedelta(hours=1)
                # time = time2.strftime("%d-%m-%Y %H:%M:%S.%f")
            if values[2] is not None:
                day = values[2]
            else:
                day = "today"
            if values[3] is not None:
                date = values[3]
            else:
                date = datetime.today()
            if values[4] is not None:
                reps = values[4]
            else:
                reps = "Once"
            respo = {
                'message': f"Message: {msg} \nTime: {time} \nDay: {day} \nCreated Successfully.",
                'action': "create_reminder",
                'function': {
                        'id': idval,
                        'sound': 'General',
                        'subTitle': 'Task',
                        'type': 'Note',
                        'title': msg,
                        'description': '',
                        'time': time.upper(),
                        'timestamp' : datetime.now().strftime("%d-%m-%Y %H:%M:%S.%f"),
                        'enable': False,
                        'report': [],
                        'icon': 'https://firebasestorage.googleapis.com/v0/b/cosmo-f5007.appspot.com/o/categories%2FIcons%2Ftaskicon.svg?alt=media&token=56f3fc55-8eda-4463-bceb-7bf3198dff3c',
                        'color': 'FFD700',
                        'sharedToMe': [],
                        'sharedByMe': [],
                        'repeat': reps,
                        'reminders': [{
                            'time': time.upper(),
                            'enable': False,
                            'repeat': reps,
                            'title': msg,
                            'id': idval,
                            'note': '',
                            'dates': [],
                            }],
                    }
            }

        elif "add to do" in query:
            replaced_string = text.replace("add todo", "").replace("add to do","")
            # 1. Replace "note down" with an empty string:
            replaced_string = text.replace("note down", "")
            
            # 2. Split the string into words:
            words = replaced_string.split()
            
            # 3. Extract the first two words:
            first_two_words = words[:2]  # Get the first two elements of the list
            
            # 4. Join the words back into a string (if needed):
            result_string = " ".join(first_two_words)
            respo = {
            'message': "Todo added!",
            'action': "create_todo",
            'function': {
                'name': result_string,
                'id': idval,
                'subTasks': [{
                    'task':replaced_string,
                    'done': False
                }],
                'shared': [],
                'sharedByMe': [],
                    },
            }
        elif "note down" in query:
            # 1. Replace "note down" with an empty string:
            replaced_string = text.replace("note down", "")
            
            # 2. Split the string into words:
            words = replaced_string.split()
            
            # 3. Extract the first two words:
            first_two_words = words[:2]  # Get the first two elements of the list
            
            # 4. Join the words back into a string (if needed):
            result_string = " ".join(first_two_words)
            respo = {
            'message': "Got it! Saved to your notes.",
            'action': "create_note",
            'function': {
                'title': result_string,
                'id': idval,
                'type': 'Note',
                'description': replaced_string,
                'time': datetime.now().strftime("%d/%m/%Y"),
                'mainTime': datetime.now().strftime("%I:%M %p"),
                'complete': False,
                'shared': [],
                'sharedByMe': [],
                }
            }
        elif "add coins" in query:
            respo = {
                "message": "Click the button below to view Premium Services and Coin Recharge options: ",
                "action": "payment",
                "function": "nothing",
            }
        elif "show my friends" in query:
            respo = {
                "message": "Here's the list of your friends: ",
                "action": "show_friends",
                "function": "nothing",
            }
        elif "show my groups" in query:
            respo = {
                "message": "You are member of following groups: ",
                "action": "show_mygroups",
                "function": "nothing",
            }
        elif "show my communities" in query:
            respo = {
                "message": "You are part of following communities🫶: ",
                "action": "show_mycommunities",
                "function": "nothing",
            }
        elif "show shared reminders" in query:
            respo = {
                "message": "Here's the list of your shared reminders: ",
                "action": "shared_reminders",
                "function": "nothing",
            }
        elif "create a post" in query:
            respo = {
                "message": "Sure!",
                "action": "create_post",
                "function": "nothing",
            }
        elif "show my routines" in query:
            respo = {
                "message": "Here's the list of your routines: ",
                "action": "myroutines",
                "function": "nothing",
            }
        # elif "what is your name" or "what's your name" or "who are you" in data:
        #     respo = {
        #         "message": "My name is Cosmo. I am your friendly personal assistant.",
        #         "action": "nothing",
        #         "function": "nothing",
        #     }
        elif "notify" in query:
            respo = {
                "message": "Select your friends to notify",
                "action": "send_notify",
                "function": "nothing",
            }
        elif "show actions" in query:
            respo = {
                "message": "Here is list of actions you can use:",
                "action": "show_actions",
                "function": "nothing",
            }
        else:
            respo = {
                "message": answer,
                "action": "nothing",
                "function": "nothing",
            }
    else:
        respo = {
            "message": "Whoops, seems like we're a bit overloaded! Don't worry, your request is in the queue and we'll get back to you as soon as possible.",
            "action": "nothing",
            "function": "nothing",
        }
    return json.dumps(respo)
    
    

gradio_interface = gr.Interface(fn=responsenew, inputs="text", outputs="text")
gradio_interface.launch()