dlflannery commited on
Commit
596eb3c
·
verified ·
1 Parent(s): e3d7397

Update app.py

Browse files

Added mode dropdown and Brave search mode

Files changed (1) hide show
  1. app.py +43 -12
app.py CHANGED
@@ -36,6 +36,7 @@ pwdList = pwds.split(',')
36
  DEEPSEEK_KEY=os.getenv('DEEPSEEK_KEY')
37
  GROQ_KEY=os.getenv('GROQ_KEY')
38
  BRAVE_KEY=os.getenv('BRAVE_KEY')
 
39
 
40
  site = os.getenv('SITE')
41
  if site == 'local':
@@ -49,6 +50,7 @@ else:
49
  stock_data_path = dataDir + 'Stocks.txt'
50
 
51
  braveNewsEndpoint = "https://api.search.brave.com/res/v1/news/search"
 
52
 
53
  speak_file = dataDir + "speek.wav"
54
 
@@ -70,6 +72,24 @@ class MathReasoning(BaseModel):
70
  steps: list[Step]
71
  final_answer: str
72
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  def get_brave_news(query: str, interval: str = 'pd'):
74
  url = f'{braveNewsEndpoint}?q={quote(query)}&count=20&extra_snippets=true&freshness={interval}'
75
  response = requests.get(
@@ -78,7 +98,9 @@ def get_brave_news(query: str, interval: str = 'pd'):
78
  "X-Subscription-Token": BRAVE_KEY
79
  },
80
  )
81
- rv = ''
 
 
82
  jdata = response.json()
83
  for item in jdata['results']:
84
  title = item['title']
@@ -99,7 +121,6 @@ def get_brave_news(query: str, interval: str = 'pd'):
99
  age = 'unknown'
100
  rv += f' (Item source: {host}, Item age: {age})'
101
  rv += ' *item separator* '
102
-
103
  return rv
104
 
105
  def Client():
@@ -624,7 +645,7 @@ def new_conversation(user):
624
  os.remove(fpath)
625
  return [None, [], gr.Markdown(value='', label='Dialog', container=True),
626
  gr.Image(visible=False, value=None), gr.Image(visible=False, value=None), '',
627
- gr.LinePlot(visible=False), gr.Dropdown(value="None")]
628
 
629
  def updatePassword(txt):
630
  password = txt.lower().strip()
@@ -648,7 +669,8 @@ def updatePassword(txt):
648
  # ref = len(txt[ref:loc]) + len(frag)
649
  # return txt
650
 
651
- def chat(prompt, user_window, pwd_window, past, response, gptModel, uploaded_image_file='', plot=None, news_interval = 'none'):
 
652
  image_gen_model = 'gpt-4o-2024-08-06'
653
  user_window = user_window.lower().strip()
654
  isBoss = False
@@ -714,7 +736,7 @@ def chat(prompt, user_window, pwd_window, past, response, gptModel, uploaded_ima
714
  using_groq = False
715
  reasoning = False
716
  prompt = prompt.strip()
717
- news_prompt = prompt
718
  finish_reason = 'ok'
719
  if prompt.lower().startswith('dsr1 '):
720
  deepseek = True
@@ -750,10 +772,16 @@ def chat(prompt, user_window, pwd_window, past, response, gptModel, uploaded_ima
750
  prompt = prompt[6:]
751
  if deepseek:
752
  prompt = prompt + '. Do not use Latex for math expressions.'
753
- if news_interval != "None" and past==[]:
754
- news = get_brave_news(prompt, news_interval)
755
- news_prompt = f'{news}\n{prompt}\nGive highest priority to information just provided\n'
756
- past.append({"role":"user", "content":news_prompt})
 
 
 
 
 
 
757
  gen_image = (uploaded_image_file != '')
758
  if chatType in special_chat_types:
759
  (reply, tokens_in, tokens_out, tokens) = solve(prompt, chatType)
@@ -1222,7 +1250,8 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
1222
  speak_output = gr.Button(value="Speak Dialog", visible=True)
1223
  submit_button = gr.Button(value="Submit Prompt/Question")
1224
  with gr.Row():
1225
- prompt_window = gr.Textbox(label = "Prompt or Question", scale=5)
 
1226
  news_period = gr.Dropdown(choices=news_interval_choices, interactive=True,label='News Window',scale=1)
1227
  gr.Markdown('### **Dialog:**')
1228
  #output_window = gr.Text(container=True, label='Dialog')
@@ -1236,10 +1265,12 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
1236
  # plot = gr.Plot(visible=False)
1237
  plot = gr.LinePlot(test_plot_df(), x="month", y="value", visible=False, label="Portfolio Value History")
1238
  submit_button.click(chat,
1239
- inputs=[prompt_window, user_window, password, history, output_window, model, uploaded_image_file, plot, news_period],
 
1240
  outputs=[history, output_window, prompt_window, model, uploaded_image_file, plot])
1241
  clear_button.click(fn=new_conversation, inputs=user_window,
1242
- outputs=[prompt_window, history, output_window, image_window, image_window2, uploaded_image_file, plot, news_period])
 
1243
  audio_widget.stop_recording(fn=transcribe, inputs=[user_window, password, audio_widget],
1244
  outputs=[prompt_window])
1245
  audio_widget.pause_recording(fn=pause_message, outputs=[prompt_window])
 
36
  DEEPSEEK_KEY=os.getenv('DEEPSEEK_KEY')
37
  GROQ_KEY=os.getenv('GROQ_KEY')
38
  BRAVE_KEY=os.getenv('BRAVE_KEY')
39
+ BRAVE_SEARCH_KEY=os.getenv('BRAVE_SEARCH_KEY')
40
 
41
  site = os.getenv('SITE')
42
  if site == 'local':
 
50
  stock_data_path = dataDir + 'Stocks.txt'
51
 
52
  braveNewsEndpoint = "https://api.search.brave.com/res/v1/news/search"
53
+ braveSearchEndpoint = "https://api.search.brave.com/res/v1/web/search"
54
 
55
  speak_file = dataDir + "speek.wav"
56
 
 
72
  steps: list[Step]
73
  final_answer: str
74
 
75
+ def get_brave_search_results(query: str):
76
+ rv = ''
77
+ url = f'{braveSearchEndpoint}?q={quote(query)}&count=20'
78
+ response = requests.get(
79
+ url,
80
+ headers= {"Accept": "application/json",
81
+ "X-Subscription-Token": BRAVE_SEARCH_KEY
82
+ },
83
+ )
84
+ jdata = response.json()
85
+ web_results = jdata['web']['results']
86
+ for item in web_results:
87
+ title = item['title']
88
+ description = item['description']
89
+ rv += f'{title}: {description} --'
90
+ return rv
91
+
92
+
93
  def get_brave_news(query: str, interval: str = 'pd'):
94
  url = f'{braveNewsEndpoint}?q={quote(query)}&count=20&extra_snippets=true&freshness={interval}'
95
  response = requests.get(
 
98
  "X-Subscription-Token": BRAVE_KEY
99
  },
100
  )
101
+ rv ='''Following are list items delineated by *item separator*
102
+ At the end of each item is (item source, item age)
103
+ *item separator* '''
104
  jdata = response.json()
105
  for item in jdata['results']:
106
  title = item['title']
 
121
  age = 'unknown'
122
  rv += f' (Item source: {host}, Item age: {age})'
123
  rv += ' *item separator* '
 
124
  return rv
125
 
126
  def Client():
 
645
  os.remove(fpath)
646
  return [None, [], gr.Markdown(value='', label='Dialog', container=True),
647
  gr.Image(visible=False, value=None), gr.Image(visible=False, value=None), '',
648
+ gr.LinePlot(visible=False), gr.Dropdown(value="None"), gr.Dropdown(value='Chat')]
649
 
650
  def updatePassword(txt):
651
  password = txt.lower().strip()
 
669
  # ref = len(txt[ref:loc]) + len(frag)
670
  # return txt
671
 
672
+ def chat(prompt, user_window, pwd_window, past, response, gptModel, uploaded_image_file='',
673
+ plot=None, news_interval = 'none', mode = 'Chat'):
674
  image_gen_model = 'gpt-4o-2024-08-06'
675
  user_window = user_window.lower().strip()
676
  isBoss = False
 
736
  using_groq = False
737
  reasoning = False
738
  prompt = prompt.strip()
739
+ augmented_prompt = prompt
740
  finish_reason = 'ok'
741
  if prompt.lower().startswith('dsr1 '):
742
  deepseek = True
 
772
  prompt = prompt[6:]
773
  if deepseek:
774
  prompt = prompt + '. Do not use Latex for math expressions.'
775
+ if past == []:
776
+ if mode == 'News':
777
+ if news_interval != "None":
778
+ news = get_brave_news(prompt, news_interval)
779
+ augmented_prompt = f'{news}\n{prompt}\nGive highest priority to information just provided\n'
780
+ augmented_prompt += 'Mention item source and item age for each item used\n'
781
+ elif mode == 'Search':
782
+ news = get_brave_search_results(prompt)
783
+ augmented_prompt = f'{news}\n{prompt}\nGive highest priority to information just provided\n'
784
+ past.append({"role":"user", "content":augmented_prompt})
785
  gen_image = (uploaded_image_file != '')
786
  if chatType in special_chat_types:
787
  (reply, tokens_in, tokens_out, tokens) = solve(prompt, chatType)
 
1250
  speak_output = gr.Button(value="Speak Dialog", visible=True)
1251
  submit_button = gr.Button(value="Submit Prompt/Question")
1252
  with gr.Row():
1253
+ prompt_window = gr.Textbox(label = "Prompt or Question", scale=7)
1254
+ mode = gr.Dropdown(choices=['Chat', 'News', 'Search'], label='Mode', scale=1, interactive=True)
1255
  news_period = gr.Dropdown(choices=news_interval_choices, interactive=True,label='News Window',scale=1)
1256
  gr.Markdown('### **Dialog:**')
1257
  #output_window = gr.Text(container=True, label='Dialog')
 
1265
  # plot = gr.Plot(visible=False)
1266
  plot = gr.LinePlot(test_plot_df(), x="month", y="value", visible=False, label="Portfolio Value History")
1267
  submit_button.click(chat,
1268
+ inputs=[prompt_window, user_window, password, history, output_window, model,
1269
+ uploaded_image_file, plot, news_period, mode],
1270
  outputs=[history, output_window, prompt_window, model, uploaded_image_file, plot])
1271
  clear_button.click(fn=new_conversation, inputs=user_window,
1272
+ outputs=[prompt_window, history, output_window, image_window, image_window2,
1273
+ uploaded_image_file, plot, news_period, mode])
1274
  audio_widget.stop_recording(fn=transcribe, inputs=[user_window, password, audio_widget],
1275
  outputs=[prompt_window])
1276
  audio_widget.pause_recording(fn=pause_message, outputs=[prompt_window])