35
35
isRag = False
36
36
isChat = False
37
37
isShowSQL = False
38
+ isRunSQL = False
39
+ isExplainSQL = False
38
40
last_result_time = None
39
41
is_connected = False
40
42
isInsertResults = False
@@ -46,7 +48,7 @@ def executeSandbox(cummulativeResult: str = None,):
46
48
data = {"message" : cummulativeResult }
47
49
headers = {
48
50
'Content-Type' : 'application/json' ,
49
- 'Authorization' : 'Bearer 4ouI6wXqONQ4isEX1BUWmx6DiPyh09PPaPK8BjI93ww '
51
+ 'Authorization' : 'Bearer asdf '
50
52
}
51
53
response = requests .post (url , json = data , headers = headers )
52
54
if response .status_code == 200 :
@@ -62,7 +64,7 @@ def executeSandbox(cummulativeResult: str = None,):
62
64
cummulativeResult = ""
63
65
64
66
def executeSelectAI (cummulativeResult : str = None ):
65
- global isInsertResults , isShowSQL , latest_thetime , latest_question , latest_answer
67
+ global isInsertResults , isShowSQL , isRunSQL , isExplainSQL , latest_thetime , latest_question , latest_answer
66
68
# if not cummulativeResult:
67
69
# cummulativeResult = latest_question or ""
68
70
print (f"executeSelectAI called cummulative result: { cummulativeResult } " )
@@ -89,23 +91,43 @@ def executeSelectAI(cummulativeResult: str = None):
89
91
profile_name => 'VIDEOGAMES_PROFILE',
90
92
action => 'narrate')
91
93
FROM dual"""
94
+
95
+ runsqlquery = """SELECT DBMS_CLOUD_AI.GENERATE(
96
+ prompt => :prompt,
97
+ profile_name => 'VIDEOGAMES_PROFILE',
98
+ action => 'runsql')
99
+ FROM dual"""
92
100
93
101
showssqlquery = """SELECT DBMS_CLOUD_AI.GENERATE(
94
102
prompt => :prompt,
95
103
profile_name => 'VIDEOGAMES_PROFILE',
96
104
action => 'showsql')
97
105
FROM dual"""
106
+
107
+ explainsqlquery = """SELECT DBMS_CLOUD_AI.GENERATE(
108
+ prompt => :prompt,
109
+ profile_name => 'VIDEOGAMES_PROFILE',
110
+ action => 'explainsql')
111
+ FROM dual"""
98
112
99
113
if isShowSQL :
100
114
query = showssqlquery
101
115
print ("showsql true" )
116
+ elif isRunSQL :
117
+ query = runsqlquery
118
+ print ("runsql true" )
119
+ elif isExplainSQL :
120
+ query = explainsqlquery
121
+ print ("isExplainSQL true" )
102
122
elif isChat :
103
123
query = chatquery
104
124
print ("chat true" )
105
125
else :
106
126
query = narratequery
107
127
108
128
# cummulativeResult += " ignore case"
129
+ cummulativeResult += " . Make answer one sentence that is shorter than 50 words"
130
+
109
131
try :
110
132
with connection .cursor () as cursor :
111
133
try :
@@ -115,6 +137,7 @@ def executeSelectAI(cummulativeResult: str = None):
115
137
return
116
138
else :
117
139
start_time = time .time ()
140
+ print (f"Query : { query } " )
118
141
cursor .execute (query , {'prompt' : cummulativeResult })
119
142
result = cursor .fetchone ()
120
143
if result and isinstance (result [0 ], oracledb .LOB ):
@@ -210,7 +233,7 @@ def handleContainsLogic(cummulative_result, logic_array):
210
233
211
234
212
235
async def handle_request (request ):
213
- global latest_thetime , latest_question , isSelect , isRag , isShowSQL , isChat , last_result_time , cummulativeResult
236
+ global latest_thetime , latest_question , isSelect , isRag , isShowSQL , isRunSQL , isExplainSQL , isChat , last_result_time , cummulativeResult
214
237
print ("Received request to handle." )
215
238
# latest_question = request.query.get("question", "default question")
216
239
@@ -250,31 +273,51 @@ async def handle_request(request):
250
273
if "use rag" in lowered_cumulative_result :
251
274
cummulativeResult = cummulativeResult .replace ("use rag" , "" )
252
275
isRag = True
276
+ if "use database" in lowered_cumulative_result :
277
+ cummulativeResult = cummulativeResult .replace ("use database" , "" )
278
+ isRag = True
253
279
elif "use chat" in lowered_cumulative_result :
254
280
cummulativeResult = cummulativeResult .replace ("use chat" , "" )
255
281
isChat = True
256
282
isSelect = True
283
+ elif "run sql" in lowered_cumulative_result :
284
+ cummulativeResult = cummulativeResult .replace ("run sql" , "" )
285
+ isRunSQL = True
286
+ isSelect = True
257
287
elif "show sql" in lowered_cumulative_result :
258
288
cummulativeResult = cummulativeResult .replace ("show sql" , "" )
259
289
isShowSQL = True
260
290
isSelect = True
291
+ elif "explain sql" in lowered_cumulative_result :
292
+ cummulativeResult = cummulativeResult .replace ("explain sql" , "" )
293
+ isExplainSQL = True
294
+ isSelect = True
261
295
else :
262
296
isChat = True
263
297
isSelect = True
264
298
299
+ print (f"Current cummulative result: { cummulativeResult } " )
300
+ print (f"isSelect: { isSelect } " )
301
+ print (f"isShowSQL: { isShowSQL } " )
302
+ print (f"isRunSQL: { isRunSQL } " )
303
+ print (f"isExplainSQL: { isExplainSQL } " )
304
+ print (f"isRag: { isRag } " )
305
+
265
306
if isSelect :
266
307
executeSelectAI (cummulativeResult )
267
308
isSelect = False
268
309
isShowSQL = False
310
+ isRunSQL = False
311
+ isExplainSQL = False
269
312
isChat = False
270
313
elif isRag :
271
314
executeSelectAI (cummulativeResult )
272
315
# executeSandbox(cummulativeResult)
273
- isRag = False
274
-
275
- print ( f"Current cummulative result: { cummulativeResult } " )
276
- print ( f"isSelect: { isSelect } " )
277
- print ( f"isRag: { isRag } " )
316
+ isSelect = False
317
+ isShowSQL = False
318
+ isRunSQL = False
319
+ isExplainSQL = False
320
+ isChat = False
278
321
279
322
data = {
280
323
"thetime" : latest_thetime .isoformat () if latest_thetime else None ,
0 commit comments