lifan0127 commited on
Commit
707620f
1 Parent(s): 52353d2

Handle missing openai and zotero info

Browse files
Files changed (2) hide show
  1. app.py +5 -4
  2. functions.py +51 -3
app.py CHANGED
@@ -3,7 +3,7 @@ import os
3
  from dotenv import load_dotenv
4
  from pathlib import Path
5
  from functions import (
6
- reset_answer,
7
  fetch_collections,
8
  select_collection,
9
  reset_collection,
@@ -15,7 +15,7 @@ from models import (
15
  Messages,
16
  )
17
 
18
- load_dotenv()
19
 
20
  css_style = Path('./style.css').read_text()
21
 
@@ -84,7 +84,7 @@ with gr.Blocks(css=css_style) as demo:
84
 
85
  answer = gr.HTML(None, elem_id="answer")
86
 
87
- openai_api_key.change(reset_answer, inputs=[], outputs=[
88
  answer], show_progress=False)
89
 
90
  zot_api_key.change(
@@ -108,7 +108,8 @@ with gr.Blocks(css=css_style) as demo:
108
 
109
  zot_fetch_col_btn.click(
110
  fn=fetch_collections,
111
- inputs=[zot_library_id, zot_library_type, zot_api_key, messages],
 
112
  outputs=[zot, zot_collections, zot_selected_col,
113
  zot_fetch_col_btn, zot_msg, messages, msg_board],
114
  show_progress=False,
 
3
  from dotenv import load_dotenv
4
  from pathlib import Path
5
  from functions import (
6
+ reset_open_ai,
7
  fetch_collections,
8
  select_collection,
9
  reset_collection,
 
15
  Messages,
16
  )
17
 
18
+ # load_dotenv()
19
 
20
  css_style = Path('./style.css').read_text()
21
 
 
84
 
85
  answer = gr.HTML(None, elem_id="answer")
86
 
87
+ openai_api_key.change(reset_open_ai, inputs=[openai_api_key], outputs=[
88
  answer], show_progress=False)
89
 
90
  zot_api_key.change(
 
108
 
109
  zot_fetch_col_btn.click(
110
  fn=fetch_collections,
111
+ inputs=[openai_api_key, zot_library_id,
112
+ zot_library_type, zot_api_key, messages],
113
  outputs=[zot, zot_collections, zot_selected_col,
114
  zot_fetch_col_btn, zot_msg, messages, msg_board],
115
  show_progress=False,
functions.py CHANGED
@@ -1,4 +1,5 @@
1
  import gradio as gr
 
2
  import re
3
  import requests
4
  import tempfile
@@ -9,11 +10,58 @@ from lxml import html
9
  from models import Icons, Message
10
 
11
 
12
- def reset_answer():
 
 
 
 
 
 
 
 
 
 
13
  return gr.HTML.update(value=None)
14
 
15
 
16
- def fetch_collections(id, type, key, messages):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  zot = zotero.Zotero(int(id), type.lower(), key)
18
  try:
19
  collections = zot.collections_top()
@@ -47,7 +95,7 @@ def fetch_collections(id, type, key, messages):
47
 
48
  def select_collection(collection, messages):
49
  if collection is None:
50
- return None, messages, gr.HTML.update()
51
  collection_name = re.sub('\s\(\d+\)$', '', collection)
52
  messages.set([Message(
53
  Icons.OK, f"Selected collection: <span style='font-weight: bold'>{collection_name}</span>. Please type your question and hit \"Enter\".")])
 
1
  import gradio as gr
2
+ import os
3
  import re
4
  import requests
5
  import tempfile
 
10
  from models import Icons, Message
11
 
12
 
13
+ def is_integer(string):
14
+ try:
15
+ int(string)
16
+ except ValueError:
17
+ return False
18
+ else:
19
+ return True
20
+
21
+
22
+ def reset_open_ai(openai_api_key):
23
+ os.environ['OPENAI_API_KEY'] = openai_api_key.strip()
24
  return gr.HTML.update(value=None)
25
 
26
 
27
+ def fetch_collections(openai_api_key, id, type, key, messages):
28
+ if openai_api_key == '':
29
+ messages.append(
30
+ Message(Icons.ERR, f"Your Open API key is missing. Check out: <a href='https://platform.openai.com/overview' target='_blank'>https://platform.openai.com/overview</a>."))
31
+ return (
32
+ None,
33
+ [],
34
+ None,
35
+ gr.Button.update(visible=True),
36
+ gr.HTML.update(visible=True),
37
+ messages,
38
+ gr.HTML.update(value=str(messages)),
39
+ )
40
+ if key == '':
41
+ messages.append(
42
+ Message(Icons.ERR, f"Your Zotero API key is missing. Click <a href='https: // www.zotero.org/settings/keys/new' target='_blank'>here</a> to create a new one."))
43
+ return (
44
+ None,
45
+ [],
46
+ None,
47
+ gr.Button.update(visible=True),
48
+ gr.HTML.update(visible=True),
49
+ messages,
50
+ gr.HTML.update(value=str(messages)),
51
+ )
52
+ if not is_integer(id):
53
+ messages.append(
54
+ Message(Icons.ERR, f"Your Zotero ID should be an integer."))
55
+ return (
56
+ None,
57
+ [],
58
+ None,
59
+ gr.Button.update(visible=True),
60
+ gr.HTML.update(visible=True),
61
+ messages,
62
+ gr.HTML.update(value=str(messages)),
63
+ )
64
+
65
  zot = zotero.Zotero(int(id), type.lower(), key)
66
  try:
67
  collections = zot.collections_top()
 
95
 
96
  def select_collection(collection, messages):
97
  if collection is None:
98
+ return None, messages, gr.HTML.update(), None
99
  collection_name = re.sub('\s\(\d+\)$', '', collection)
100
  messages.set([Message(
101
  Icons.OK, f"Selected collection: <span style='font-weight: bold'>{collection_name}</span>. Please type your question and hit \"Enter\".")])