mckplus commited on
Commit
a1a38a3
1 Parent(s): 9eb6f77

Update DocuChat.py

Browse files
Files changed (1) hide show
  1. DocuChat.py +15 -30
DocuChat.py CHANGED
@@ -18,34 +18,21 @@ class LangchainConversation:
18
  def __init__(self):
19
  self.file_input = pn.widgets.FileInput(height=45)
20
  self.openaikey = pn.widgets.PasswordInput(value="", placeholder="Enter your OpenAI API Key here...", height=45)
21
- self.chatbox = pn.widgets.ChatBox(height=300, primary_name="User", show_input=False)
22
- self.user_input = pn.widgets.TextInput(placeholder="Type your question...")
23
- self.send_button = pn.widgets.Button(name="Send", width=0)
24
- self.send_button.on_click(self._chat)
25
 
26
- # decorator to disable the send button while the AI is thinking
27
- def _disable_send_button(func):
28
- def inner(self, *args, **kwargs):
29
- try:
30
- self.send_button.disabled = True
31
- func(self, *args, **kwargs)
32
- finally:
33
- self.send_button.disabled = False
34
- return inner
35
-
36
- @_disable_send_button
37
- def _chat(self, _):
38
- user_message = self.user_input.value
39
- if user_message:
40
- self.chatbox.append({"User": user_message})
41
- os.environ["OPENAI_API_KEY"] = self.openaikey.value
42
- if self.file_input.value is not None:
43
- self.file_input.save("/.cache/temp.pdf")
44
- prompt_text = self.remove_empty_lines(user_message)
45
- if prompt_text:
46
- result = self.qa(file="/.cache/temp.pdf", query=prompt_text)
47
- self.chatbox.append({"AI": result})
48
- self.user_input.value = "" # Clear the user input field
49
 
50
  @staticmethod
51
  def remove_empty_lines(text):
@@ -71,9 +58,7 @@ class LangchainConversation:
71
  AI-Powered Query Engine for Document Insights (powered by LangChain & OpenAI)
72
  ...
73
  """),
74
- pn.Row(self.file_input, self.openaikey),
75
- self.chatbox,
76
- pn.Row(self.user_input, self.send_button)
77
  ).servable()
78
  return layout
79
 
 
18
  def __init__(self):
19
  self.file_input = pn.widgets.FileInput(height=45)
20
  self.openaikey = pn.widgets.PasswordInput(value="", placeholder="Enter your OpenAI API Key here...", height=45)
21
+ self.chatbox = pn.widgets.ChatBox(height=300, primary_name="User")
22
+ self.chatbox.param.watch(self._chat, 'value')
 
 
23
 
24
+ def _chat(self, event):
25
+ user_message = event.new[-1]
26
+ input = user_message.get("User")
27
+ if input is None:
28
+ return
29
+ os.environ["OPENAI_API_KEY"] = self.openaikey.value
30
+ if self.file_input.value is not None:
31
+ self.file_input.save("/.cache/temp.pdf")
32
+ prompt_text = self.remove_empty_lines(input)
33
+ if prompt_text:
34
+ result = self.qa(file="/.cache/temp.pdf", query=prompt_text)
35
+ self.chatbox.append({"AI": result})
 
 
 
 
 
 
 
 
 
 
 
36
 
37
  @staticmethod
38
  def remove_empty_lines(text):
 
58
  AI-Powered Query Engine for Document Insights (powered by LangChain & OpenAI)
59
  ...
60
  """),
61
+ pn.Row(self.file_input, self.openaikey), self.chatbox
 
 
62
  ).servable()
63
  return layout
64