Ammar2k commited on
Commit
144d0bc
·
1 Parent(s): 2f0d805

Update app.py

Browse files

adding streaming

Files changed (1) hide show
  1. app.py +26 -5
app.py CHANGED
@@ -10,14 +10,33 @@ from langchain.schema import (
10
  AIMessage
11
  )
12
  from langchain.embeddings.openai import OpenAIEmbeddings
 
13
 
14
  import streamlit as st
15
 
16
  load_dotenv()
17
 
18
 
19
- os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY")
20
- llm = ChatOpenAI(temperature=0.3, model="gpt-3.5-turbo-16k")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  embeddings = OpenAIEmbeddings()
22
 
23
 
@@ -70,14 +89,16 @@ def main():
70
  st.markdown(prompt)
71
 
72
  with st.chat_message("assistant"):
73
- message_placeholder = st.empty()
 
 
74
  content = generate_content(
75
  st.session_state.messages, knowledge_base
76
  )
77
  st.session_state.messages.append(
78
  {"role": "assistant", "content": content}
79
  )
80
- message_placeholder.markdown(content)
81
 
82
  with st.sidebar:
83
  # remove last 2 messages
@@ -87,4 +108,4 @@ def main():
87
 
88
 
89
  if __name__ == '__main__':
90
- main()
 
10
  AIMessage
11
  )
12
  from langchain.embeddings.openai import OpenAIEmbeddings
13
+ from langchain.callbacks.base import BaseCallbackHandler
14
 
15
  import streamlit as st
16
 
17
  load_dotenv()
18
 
19
 
20
+ class StreamHandler(BaseCallbackHandler):
21
+ def __init__(self, container, initial_text=""):
22
+ self.container = container
23
+ self.text = initial_text
24
+
25
+ def on_llm_new_token(self, token: str, **kwargs) -> None:
26
+ self.text += token
27
+ self.container.markdown(self.text)
28
+
29
+
30
+ def init_gpt(gpt_model, stream_handler):
31
+ global llm
32
+ llm = ChatOpenAI(
33
+ temperature=0.3,
34
+ model=gpt_model,
35
+ streaming=True,
36
+ callbacks=[stream_handler]
37
+ )
38
+
39
+
40
  embeddings = OpenAIEmbeddings()
41
 
42
 
 
89
  st.markdown(prompt)
90
 
91
  with st.chat_message("assistant"):
92
+ # message_placeholder = st.empty()
93
+ stream_handler = StreamHandler(st.empty())
94
+ init_gpt(gpt_model, stream_handler)
95
  content = generate_content(
96
  st.session_state.messages, knowledge_base
97
  )
98
  st.session_state.messages.append(
99
  {"role": "assistant", "content": content}
100
  )
101
+ # message_placeholder.markdown(content)
102
 
103
  with st.sidebar:
104
  # remove last 2 messages
 
108
 
109
 
110
  if __name__ == '__main__':
111
+ main()