Caseyrmorrison commited on
Commit
5b0e46c
·
1 Parent(s): 94ae18d

update app

Browse files
Files changed (1) hide show
  1. app.py +54 -35
app.py CHANGED
@@ -1,51 +1,70 @@
1
  # Import the necessary libraries
 
2
  import streamlit as st
3
  from openai import OpenAI # TODO: Install the OpenAI library using pip install openai
4
 
5
  st.title("Mini Project 2: Streamlit Chatbot")
6
 
7
- # TODO: Replace with your actual OpenAI API key
8
- client = OpenAI(api_key=st.secrets["OPENAI_API_KEY"])
9
 
10
- # Define a function to get the conversation history (Not required for Part-2, will be useful in Part-3)
11
- # def get_conversation():
12
- # ... (code for getting conversation history)
13
 
14
- # Check for existing session state variables
15
- if "openai_model" not in st.session_state:
16
- st.session_state['openai_model'] = "gpt-3.5-turbo"
17
 
18
- if "messages" not in st.session_state:
19
- st.session_state['messages'] = [] # {"role": "assistant", "content": "text"}
20
- # st.session_state['messages'] = [{"role": "user", "content": "test input"}, {"role": "assistant", "content": "text"}]
 
 
 
 
 
 
 
 
 
 
 
21
 
22
- # print(st.session_state)
23
- # st.write(st.session_state)
 
24
 
25
- # Display existing chat messages
26
- for message in st.session_state['messages']:
27
- st.chat_message(message['role']).write(message['content'])
 
 
28
 
29
- # Wait for user input
30
- if prompt := st.chat_input("What would you like to chat about?"):
31
- # ... (append user message to messages)
32
- st.session_state['messages'].append({"role": "user", "content": prompt})
33
 
34
- # ... (display user message)
35
- st.chat_message(st.session_state['messages'][-1]['role']).write(st.session_state['messages'][-1]['content'])
 
36
 
37
- # ... (send request to OpenAI API
 
 
 
38
 
39
- # Generate AI response
40
- with st.chat_message("assistant"):
41
- # ... (send request to OpenAI API)
42
- stream = client.chat.completions.create(
43
- model=st.session_state['openai_model'],
44
- messages=st.session_state['messages'],
45
- stream=True,
46
- )
47
- # ... (get AI response and display it)
48
- response = st.write_stream(stream)
49
 
50
- # ... (append AI response to messages)
51
- st.session_state['messages'].append({"role": "assistant", "content": response})
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  # Import the necessary libraries
2
+ import openai
3
  import streamlit as st
4
  from openai import OpenAI # TODO: Install the OpenAI library using pip install openai
5
 
6
  st.title("Mini Project 2: Streamlit Chatbot")
7
 
8
+ client = None
 
9
 
10
+ if "is_valid" not in st.session_state:
11
+ st.session_state["is_valid"] = False
 
12
 
13
+ if 'api_key' not in st.session_state:
14
+ st.session_state["api_key"] = ""
 
15
 
16
+ def check_openai_api_key():
17
+ client = OpenAI(api_key=st.session_state["api_key"])
18
+ st.session_state["is_valid"] = False
19
+ try:
20
+ client.models.list()
21
+ except openai.APIError as e:
22
+ st.session_state["is_valid"] = False
23
+ except openai.APIConnectionError as e:
24
+ st.session_state["is_valid"] = False
25
+ except openai.AuthenticationError as e:
26
+ st.session_state["is_valid"] = False
27
+ else:
28
+ st.session_state["is_valid"] = True
29
+ st.success("Valid OpenAI API key entered successfully!")
30
 
31
+ if not st.session_state["is_valid"]:
32
+ st.session_state["api_key"] = st.text_input(label="Enter your OpenAI API Key", type="password")
33
+ check_openai_api_key()
34
 
35
+ if st.session_state["is_valid"]:
36
+ client = OpenAI(api_key=st.session_state["api_key"])
37
+ # Check for existing session state variables
38
+ if "openai_model" not in st.session_state:
39
+ st.session_state['openai_model'] = "gpt-3.5-turbo"
40
 
41
+ if "messages" not in st.session_state:
42
+ st.session_state['messages'] = [] # {"role": "assistant", "content": "text"}
 
 
43
 
44
+ # Display existing chat messages
45
+ for message in st.session_state['messages']:
46
+ st.chat_message(message['role']).write(message['content'])
47
 
48
+ # Wait for user input
49
+ if prompt := st.chat_input("What would you like to chat about?"):
50
+ # ... (append user message to messages)
51
+ st.session_state['messages'].append({"role": "user", "content": prompt})
52
 
53
+ # ... (display user message)
54
+ st.chat_message(st.session_state['messages'][-1]['role']).write(st.session_state['messages'][-1]['content'])
 
 
 
 
 
 
 
 
55
 
56
+ # ... (send request to OpenAI API
57
+
58
+ # Generate AI response
59
+ with st.chat_message("assistant"):
60
+ # ... (send request to OpenAI API)
61
+ stream = client.chat.completions.create(
62
+ model=st.session_state['openai_model'],
63
+ messages=st.session_state['messages'],
64
+ stream=True,
65
+ )
66
+ # ... (get AI response and display it)
67
+ response = st.write_stream(stream)
68
+
69
+ # ... (append AI response to messages)
70
+ st.session_state['messages'].append({"role": "assistant", "content": response})