MVPilgrim commited on
Commit
5f226ca
·
1 Parent(s): c4f0f2d
Files changed (2) hide show
  1. app.py +13 -5
  2. app_Hld01.py +513 -0
app.py CHANGED
@@ -329,7 +329,7 @@ try:
329
  use_mlock=False,
330
  kv_overrides=None,
331
  seed=llama_cpp.LLAMA_DEFAULT_SEED,
332
- n_ctx=512,
333
  n_batch=512,
334
  n_threads=8,
335
  n_threads_batch=16,
@@ -350,13 +350,13 @@ try:
350
  lora_scale=1.0,
351
  lora_path=None,
352
  numa=False,
353
- chat_format=None,
354
  chat_handler=None,
355
  draft_model=None,
356
  tokenizer=None,
357
  type_k=None,
358
  type_v=None,
359
- verbose=True
360
  )
361
  st.session_state.llm = llm
362
  logger.info("### Initializing LLM exited.")
@@ -468,11 +468,19 @@ try:
468
  userPrompt = pprompt + "\n" + ragPrompt
469
  prompt = userPrompt
470
  userPrompt = "Using this information: " + ragPrompt \
471
- + "process the following statement or question and produce a response" \
472
  + pprompt
473
  else:
474
- userPrompt = st.session_state.sysTA + " " + pprompt
 
475
  #prompt = f""" <s> [INST] <<SYS>> {systemTextArea.value} </SYS>> Q: {userPrompt} A: [/INST]"""
 
 
 
 
 
 
 
476
  logger.info("setPrompt exited.")
477
  logger.info(f"### userPrompt: {userPrompt}")
478
  return userPrompt
 
329
  use_mlock=False,
330
  kv_overrides=None,
331
  seed=llama_cpp.LLAMA_DEFAULT_SEED,
332
+ n_ctx=2048,
333
  n_batch=512,
334
  n_threads=8,
335
  n_threads_batch=16,
 
350
  lora_scale=1.0,
351
  lora_path=None,
352
  numa=False,
353
+ chat_format="llama-2",
354
  chat_handler=None,
355
  draft_model=None,
356
  tokenizer=None,
357
  type_k=None,
358
  type_v=None,
359
+ verbose=False
360
  )
361
  st.session_state.llm = llm
362
  logger.info("### Initializing LLM exited.")
 
468
  userPrompt = pprompt + "\n" + ragPrompt
469
  prompt = userPrompt
470
  userPrompt = "Using this information: " + ragPrompt \
471
+ + "process the following statement or question and produce a response. " \
472
  + pprompt
473
  else:
474
+ #userPrompt = st.session_state.sysTA + " " + pprompt
475
+ userPrompt = pprompt
476
  #prompt = f""" <s> [INST] <<SYS>> {systemTextArea.value} </SYS>> Q: {userPrompt} A: [/INST]"""
477
+ messages = [
478
+ {"role": "system", "content": st.session_state.sysTA},
479
+ {
480
+ "role": "user",
481
+ "content": userPrompt
482
+ }
483
+ ]
484
  logger.info("setPrompt exited.")
485
  logger.info(f"### userPrompt: {userPrompt}")
486
  return userPrompt
app_Hld01.py ADDED
@@ -0,0 +1,513 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import weaviate
2
+ from weaviate.connect import ConnectionParams
3
+ from weaviate.classes.init import AdditionalConfig, Timeout
4
+
5
+ from sentence_transformers import SentenceTransformer
6
+ from langchain_community.document_loaders import BSHTMLLoader
7
+ from pathlib import Path
8
+ from lxml import html
9
+ import logging
10
+ from semantic_text_splitter import HuggingFaceTextSplitter
11
+ from tokenizers import Tokenizer
12
+ import json
13
+ import os
14
+ import re
15
+
16
+ import llama_cpp
17
+ from llama_cpp import Llama
18
+
19
+ import streamlit as st
20
+ import subprocess
21
+ import time
22
+
23
+
24
+ try:
25
+ if 'logging' not in st.session_state:
26
+ weaviate_logger = logging.getLogger("httpx")
27
+ weaviate_logger.setLevel(logging.WARNING)
28
+ logger = logging.getLogger(__name__)
29
+ logging.basicConfig(level=logging.INFO)
30
+ st.session_state.weaviate_logger = weaviate_logger
31
+ st.session_state.logger = logger
32
+ else:
33
+ weaviate_logger = st.session_state.weaviate_logger
34
+ logger = st.session_state.logger
35
+
36
+
37
+ def runStartup():
38
+ logger.info("### Running startup.sh")
39
+ try:
40
+ #result = subprocess.run("/app/startup.sh",shell=False,capture_output=None,
41
+ # text=None,timeout=300)
42
+ #logger.info(f"startup.sh stdout: {result.stdout}")
43
+ #logger.info(f"startup.sh stderr: {result.stderr}")
44
+ #logger.info(f"Return code: {result.returncode}")
45
+ subprocess.Popen(["/app/startup.sh"])
46
+ time.sleep(180)
47
+ except Exception as e:
48
+ emsg = str(e)
49
+ logger.ERROR(f"subprocess.run EXCEPTION. e: {emsg}")
50
+ try:
51
+ with open("/app/startup.log", "r") as file:
52
+ content = file.read()
53
+ print(content)
54
+ except Exception as e2:
55
+ emsg = str(e2)
56
+ logger.ERROR(f"#### Displaying startup.log EXCEPTION. e2: {emsg}")
57
+ logger.info("### Running startup.sh complete")
58
+ if 'runStartup' not in st.session_state:
59
+ st.session_state.runStartup = True
60
+ runStartup()
61
+
62
+
63
+
64
+ ######################################################################
65
+ # MAINLINE
66
+ #
67
+ logger.info("#### MAINLINE ENTERED.")
68
+
69
+ # Function to load the CSS file
70
+ def load_css(file_name):
71
+ logger.info("#### load_css entered.")
72
+ with open(file_name) as f:
73
+ st.markdown(f'<style>{f.read()}</style>', unsafe_allow_html=True)
74
+ logger.info("#### load_css exited.")
75
+
76
+ # Load the custom CSS
77
+ if 'load_css' not in st.session_state:
78
+ load_css(".streamlit/main.css")
79
+ st.session_state.load_css = True
80
+
81
+ st.markdown("<h1 style='text-align: center; color: #666666;'>Vector Database RAG Proof of Concept</h1>", \
82
+ unsafe_allow_html=True)
83
+ st.markdown("<h6 style='text-align: center; color: #666666;'>V1</h6>", unsafe_allow_html=True)
84
+
85
+ #pathString = "/Users/660565/KPSAllInOne/ProgramFilesX86/WebCopy/DownloadedWebSites/LLMPOC_HTML"
86
+ pathString = "/app/inputDocs"
87
+ chunks = []
88
+ webpageDocNames = []
89
+ page_contentArray = []
90
+ webpageChunks = []
91
+ webpageTitles = []
92
+ webpageChunksDocNames = []
93
+
94
+ ######################################################
95
+ # Connect to the Weaviate vector database.
96
+ #if 'client' not in st.session_state:
97
+ if 'client' not in st.session_state:
98
+ logger.info("#### Create Weaviate db client connection.")
99
+ client = weaviate.WeaviateClient(
100
+ connection_params=ConnectionParams.from_params(
101
+ http_host="localhost",
102
+ http_port="8080",
103
+ http_secure=False,
104
+ grpc_host="localhost",
105
+ grpc_port="50051",
106
+ grpc_secure=False
107
+ ),
108
+ additional_config=AdditionalConfig(
109
+ timeout=Timeout(init=60, query=1800, insert=1800), # Values in seconds
110
+ )
111
+ )
112
+ client.connect()
113
+ st.session_state.client = client
114
+ logger.info("#### Create Weaviate db client connection exited.")
115
+ else:
116
+ client = st.session_state.client
117
+
118
+
119
+ #######################################################
120
+ # Read each text input file, parse it into a document,
121
+ # chunk it, collect chunks and document name.
122
+ if not client.collections.exists("Documents") or not client.collections.exists("Chunks") :
123
+ logger.info("#### Read and chunk input text files.")
124
+ for filename in os.listdir(pathString):
125
+ logger.debug(filename)
126
+ path = Path(pathString + "/" + filename)
127
+ filename = filename.rstrip(".html")
128
+ webpageDocNames.append(filename)
129
+ htmlLoader = BSHTMLLoader(path,"utf-8")
130
+ htmlData = htmlLoader.load()
131
+
132
+ title = htmlData[0].metadata['title']
133
+ page_content = htmlData[0].page_content
134
+
135
+ # Clean data. Remove multiple newlines, etc.
136
+ page_content = re.sub(r'\n+', '\n',page_content)
137
+
138
+ page_contentArray.append(page_content)
139
+ webpageTitles.append(title)
140
+ max_tokens = 1000
141
+ tokenizer = Tokenizer.from_pretrained("bert-base-uncased")
142
+ logger.debug(f"### tokenizer: {tokenizer}")
143
+ splitter = HuggingFaceTextSplitter(tokenizer, trim_chunks=True)
144
+ chunksOnePage = splitter.chunks(page_content, chunk_capacity=50)
145
+
146
+ chunks = []
147
+ for chnk in chunksOnePage:
148
+ logger.debug(f"#### chnk in file: {chnk}")
149
+ chunks.append(chnk)
150
+ logger.debug(f"chunks: {chunks}")
151
+ webpageChunks.append(chunks)
152
+ webpageChunksDocNames.append(filename + "Chunks")
153
+
154
+ logger.debug(f"### filename, title: {filename}, {title}")
155
+ logger.debug(f"### webpageDocNames: {webpageDocNames}")
156
+ logger.info("#### Read and chunk input text files exited.")
157
+
158
+
159
+
160
+ ######################################################
161
+ # Create database webpage and chunks collections.
162
+ #wpCollection = createWebpageCollection()
163
+ #wpChunksCollection = createChunksCollection()
164
+ if not client.collections.exists("Documents"):
165
+ logger.info("#### createWebpageCollection() entered.")
166
+ #client.collections.delete("Documents")
167
+ class_obj = {
168
+ "class": "Documents",
169
+ "description": "For first attempt at loading a Weviate database.",
170
+ "vectorizer": "text2vec-transformers",
171
+ "moduleConfig": {
172
+ "text2vec-transformers": {
173
+ "vectorizeClassName": False
174
+ }
175
+ },
176
+ "vectorIndexType": "hnsw",
177
+ "vectorIndexConfig": {
178
+ "distance": "cosine",
179
+ },
180
+ "properties": [
181
+ {
182
+ "name": "title",
183
+ "dataType": ["text"],
184
+ "description": "HTML doc title.",
185
+ "vectorizer": "text2vec-transformers",
186
+ "moduleConfig": {
187
+ "text2vec-transformers": {
188
+ "vectorizePropertyName": True,
189
+ "skip": False,
190
+ "tokenization": "lowercase"
191
+ }
192
+ },
193
+ "invertedIndexConfig": {
194
+ "bm25": {
195
+ "b": 0.75,
196
+ "k1": 1.2
197
+ },
198
+ }
199
+ },
200
+ {
201
+ "name": "content",
202
+ "dataType": ["text"],
203
+ "description": "HTML page content.",
204
+ "moduleConfig": {
205
+ "text2vec-transformers": {
206
+ "vectorizePropertyName": True,
207
+ "tokenization": "whitespace"
208
+ }
209
+ }
210
+ }
211
+ ]
212
+ }
213
+ wpCollection = client.collections.create_from_dict(class_obj)
214
+ st.session_state.wpCollection = wpCollection
215
+ logger.info("#### createWebpageCollection() exited.")
216
+ else:
217
+ wpCollection = client.collections.get("Documents")
218
+ st.session_state.wpCollection = wpCollection
219
+
220
+
221
+ if not client.collections.exists("Chunks"):
222
+ logger.info("#### createChunksCollection() entered.")
223
+ #client.collections.delete("Chunks")
224
+ class_obj = {
225
+ "class": "Chunks",
226
+ "description": "Collection for document chunks.",
227
+ "vectorizer": "text2vec-transformers",
228
+ "moduleConfig": {
229
+ "text2vec-transformers": {
230
+ "vectorizeClassName": True
231
+ }
232
+ },
233
+ "vectorIndexType": "hnsw",
234
+ "vectorIndexConfig": {
235
+ "distance": "cosine"
236
+ },
237
+ "properties": [
238
+ {
239
+ "name": "chunk",
240
+ "dataType": ["text"],
241
+ "description": "Single webpage chunk.",
242
+ "vectorizer": "text2vec-transformers",
243
+ "moduleConfig": {
244
+ "text2vec-transformers": {
245
+ "vectorizePropertyName": False,
246
+ "skip": False,
247
+ "tokenization": "lowercase"
248
+ }
249
+ }
250
+ },
251
+ {
252
+ "name": "chunk_index",
253
+ "dataType": ["int"]
254
+ },
255
+ {
256
+ "name": "webpage",
257
+ "dataType": ["Documents"],
258
+ "description": "Webpage content chunks.",
259
+
260
+ "invertedIndexConfig": {
261
+ "bm25": {
262
+ "b": 0.75,
263
+ "k1": 1.2
264
+ }
265
+ }
266
+ }
267
+ ]
268
+ }
269
+ wpChunksCollection = client.collections.create_from_dict(class_obj)
270
+ st.session_state.wpChunksCollection = wpChunksCollection
271
+ logger.info("#### createChunksCollection() exited.")
272
+ else:
273
+ wpChunksCollection = client.collections.get("Chunks")
274
+ st.session_state.wpChunksCollection = wpChunksCollection
275
+
276
+
277
+
278
+
279
+ ###########################################################
280
+ # Create document and chunks objects in the database.
281
+ if not client.collections.exists("Documents") :
282
+ logger.info("#### Create page/doc db objects.")
283
+ for i, className in enumerate(webpageDocNames):
284
+ title = webpageTitles[i]
285
+ logger.debug(f"## className, title: {className}, {title}")
286
+ # Create Webpage Object
287
+ page_content = page_contentArray[i]
288
+ # Insert the document.
289
+ wpCollectionObj_uuid = wpCollection.data.insert(
290
+ {
291
+ "name": className,
292
+ "title": title,
293
+ "content": page_content
294
+ }
295
+ )
296
+ logger.info("#### Create page/doc/db/objects exited.")
297
+
298
+ if not client.collections.exists("Chunks") :
299
+ logger.info("#### Create chunk db objects.")
300
+ # Insert the chunks for the document.
301
+ for i2, chunk in enumerate(webpageChunks):
302
+ chunk_uuid = wpChunksCollection.data.insert(
303
+ {
304
+ "title": title,
305
+ "chunk": chunk,
306
+ "chunk_index": i2,
307
+ "references":
308
+ {
309
+ "webpage": wpCollectionObj_uuid
310
+ }
311
+ }
312
+ )
313
+ logger.info("#### Create chunk db objects exited.")
314
+
315
+
316
+ #################################################################
317
+ # Initialize the LLM.
318
+ model_path = "/app/llama-2-7b-chat.Q4_0.gguf"
319
+ if 'llm' not in st.session_state:
320
+ logger.info("### Initializing LLM.")
321
+ llm = Llama(model_path,
322
+ #*,
323
+ n_gpu_layers=0,
324
+ split_mode=llama_cpp.LLAMA_SPLIT_MODE_LAYER,
325
+ main_gpu=0,
326
+ tensor_split=None,
327
+ vocab_only=False,
328
+ use_mmap=True,
329
+ use_mlock=False,
330
+ kv_overrides=None,
331
+ seed=llama_cpp.LLAMA_DEFAULT_SEED,
332
+ n_ctx=512,
333
+ n_batch=512,
334
+ n_threads=8,
335
+ n_threads_batch=16,
336
+ rope_scaling_type=llama_cpp.LLAMA_ROPE_SCALING_TYPE_UNSPECIFIED,
337
+ pooling_type=llama_cpp.LLAMA_POOLING_TYPE_UNSPECIFIED,
338
+ rope_freq_base=0.0,
339
+ rope_freq_scale=0.0,
340
+ yarn_ext_factor=-1.0,
341
+ yarn_attn_factor=1.0,
342
+ yarn_beta_fast=32.0,
343
+ yarn_beta_slow=1.0,
344
+ yarn_orig_ctx=0,
345
+ logits_all=False,
346
+ embedding=False,
347
+ offload_kqv=True,
348
+ last_n_tokens_size=64,
349
+ lora_base=None,
350
+ lora_scale=1.0,
351
+ lora_path=None,
352
+ numa=False,
353
+ chat_format=None,
354
+ chat_handler=None,
355
+ draft_model=None,
356
+ tokenizer=None,
357
+ type_k=None,
358
+ type_v=None,
359
+ verbose=True
360
+ )
361
+ st.session_state.llm = llm
362
+ logger.info("### Initializing LLM exited.")
363
+ else:
364
+ llm = st.session_state.llm
365
+
366
+ def getRagData(promptText):
367
+ logger.info("#### getRagData() entered.")
368
+ ###############################################################################
369
+ # Initial the the sentence transformer and encode the query prompt.
370
+ logger.debug(f"#### Encode text query prompt to create vectors. {promptText}")
371
+ model = SentenceTransformer('/app/multi-qa-MiniLM-L6-cos-v1')
372
+
373
+ vector = model.encode(promptText)
374
+ vectorList = []
375
+
376
+ logger.debug("#### Print vectors.")
377
+ for vec in vector:
378
+ vectorList.append(vec)
379
+ logger.debug(f"vectorList: {vectorList[2]}")
380
+
381
+ # Fetch chunks and print chunks.
382
+ logger.debug("#### Retrieve semchunks from db using vectors from prompt.")
383
+ wpChunksCollection = st.session_state.wpChunksCollection
384
+ semChunks = wpChunksCollection.query.near_vector(
385
+ near_vector=vectorList,
386
+ distance=0.7,
387
+ limit=3
388
+ )
389
+ logger.debug(f"### semChunks[0]: {semChunks}")
390
+
391
+ # Print chunks, corresponding document and document title.
392
+ ragData = ""
393
+ logger.debug("#### Print individual retrieved chunks.")
394
+ wpCollection = st.session_state.wpCollection
395
+ for chunk in enumerate(semChunks.objects):
396
+ logger.info(f"#### chunk: {chunk}")
397
+ ragData = ragData + "\n" + chunk[0]
398
+ webpage_uuid = chunk[1].properties['references']['webpage']
399
+ logger.info(f"webpage_uuid: {webpage_uuid}")
400
+ wpFromChunk = wpCollection.query.fetch_object_by_id(webpage_uuid)
401
+ logger.info(f"### wpFromChunk title: {wpFromChunk.properties['title']}")
402
+ #collection = client.collections.get("Chunks")
403
+ logger.info("#### getRagData() exited.")
404
+ return ragData
405
+
406
+
407
+ # Display UI
408
+ col1, col2 = st.columns(2)
409
+
410
+ with col1:
411
+ if "sysTA" not in st.session_state:
412
+ st.session_state.sysTA = st.text_area(label="sysTA",value="fdsaf fsdafdsa")
413
+ elif "sysTAtext" in st.session_state:
414
+ st.session_state.sysTA = st.text_area(label="sysTA",value=st.session_state.sysTAtext)
415
+ else:
416
+ st.session_state.sysTA = st.text_area(label="sysTA",value=st.session_state.sysTA)
417
+
418
+ if "userpTA" not in st.session_state:
419
+ st.session_state.userpTA = st.text_area(label="userpTA",value="fdsaf fsdafdsa")
420
+ elif "userpTAtext" in st.session_state:
421
+ st.session_state.userpTA = st.text_area (label="userpTA",value=st.session_state.userpTAtext)
422
+ else:
423
+ st.session_state.userpTA = st.text_area(label="userpTA",value=st.session_state.userpTA)
424
+
425
+ with col2:
426
+ if "ragpTA" not in st.session_state:
427
+ st.session_state.ragpTA = st.text_area(label="ragpTA",value="fdsaf fsdafdsa")
428
+ elif "ragpTAtext" in st.session_state:
429
+ st.session_state.ragpTA = st.text_area(label="ragpTA",value=st.session_state.ragpTAtext)
430
+ else:
431
+ st.session_state.ragpTA = st.text_area(label="ragpTA",value=st.session_state.ragpTA)
432
+
433
+ if "rspTA" not in st.session_state:
434
+ st.session_state.rspTA = st.text_area(label="rspTA",value="fdsaf fsdafdsa")
435
+ elif "rspTAtext" in st.session_state:
436
+ st.session_state.rspTA = st.text_area(label="rspTA",value=st.session_state.rspTAtext)
437
+ else:
438
+ st.session_state.rspTA = st.text_area(label="rspTA",value=st.session_state.rspTA)
439
+
440
+ def runLLM(prompt):
441
+ logger = st.session_state.logger
442
+ logger.info("### runLLM entered.")
443
+
444
+ max_tokens = 1000
445
+ temperature = 0.3
446
+ top_p = 0.1
447
+ echoVal = True
448
+ stop = ["Q", "\n"]
449
+
450
+ modelOutput = llm(
451
+ prompt,
452
+ max_tokens=max_tokens,
453
+ temperature=temperature,
454
+ top_p=top_p,
455
+ echo=echoVal,
456
+ stop=stop,
457
+ )
458
+ result = modelOutput["choices"][0]["text"].strip()
459
+ logger.info(f"### llmResult: {result}")
460
+ logger.info("### runLLM exited.")
461
+ return result
462
+
463
+ def setPrompt(pprompt,ragFlag):
464
+ logger = st.session_state.logger
465
+ logger.info(f"\n### setPrompt() entered. ragFlag: {ragFlag}")
466
+ if ragFlag:
467
+ ragPrompt = getRagData(pprompt)
468
+ userPrompt = pprompt + "\n" + ragPrompt
469
+ prompt = userPrompt
470
+ userPrompt = "Using this information: " + ragPrompt \
471
+ + "process the following statement or question and produce a response. " \
472
+ + pprompt
473
+ else:
474
+ userPrompt = st.session_state.sysTA + " " + pprompt
475
+ #prompt = f""" <s> [INST] <<SYS>> {systemTextArea.value} </SYS>> Q: {userPrompt} A: [/INST]"""
476
+ logger.info("setPrompt exited.")
477
+ logger.info(f"### userPrompt: {userPrompt}")
478
+ return userPrompt
479
+
480
+
481
+ def on_submitButton_clicked():
482
+ logger = st.session_state.logger
483
+ logger.info("### on_submitButton_clicked entered.")
484
+ st.session_state.sysTAtext = st.session_state.sysTA
485
+ logger.info(f"sysTAtext: {st.session_state.sysTAtext}")
486
+
487
+ #st.session_state.userpTAtext = st.session_state.userpTA
488
+ st.session_state.userpTAtext = setPrompt(st.session_state.userpTA,st.selectRag)
489
+ st.session_state.userpTA = st.session_state.userpTAtext
490
+ logger.info(f"userpTAtext: {st.session_state.userpTAtext}")
491
+
492
+ st.session_state.rspTAtext = runLLM(st.session_state.userpTAtext)
493
+ st.session_state.rspTA = st.session_state.rspTAtext
494
+ logger.info(f"rspTAtext: {st.session_state.rspTAtext}")
495
+
496
+ logger.info("### on_submitButton_clicked exited.")
497
+
498
+
499
+ with st.sidebar:
500
+ st.selectRag = st.checkbox("Enable Query With RAG",value=False,key="selectRag",help=None,on_change=None,args=None,kwargs=None,disabled=False,label_visibility="visible")
501
+ st.submitButton = st.button("Run LLM Query",key=None,help=None,on_click=on_submitButton_clicked,args=None,kwargs=None,type="secondary",disabled=False,use_container_width=False)
502
+
503
+ logger.info("#### semsearch.py end of code.")
504
+ except Exception as e:
505
+ try:
506
+ emsg = str(e)
507
+ logger.error(f"Program-wide EXCEPTION. e: {emsg}")
508
+ with open("/app/startup.log", "r") as file:
509
+ content = file.read()
510
+ logger.debug(content)
511
+ except Exception as e2:
512
+ emsg = str(e2)
513
+ logger.error(f"#### Displaying startup.log EXCEPTION. e2: {emsg}")