IAMTFRMZA commited on
Commit
9d8abce
·
verified ·
1 Parent(s): 903d8fb

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +87 -0
app.py ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from openai import OpenAI
3
+ import time
4
+
5
+ st.set_page_config(page_title="documentaitest")
6
+
7
+ st.title("documentaitest")
8
+ st.caption("Chat with an Ai Assistant on your Documents")
9
+
10
+ # Sidebar for API Key input
11
+ with st.sidebar:
12
+ OPENAI_API_KEY = st.text_input("Enter your C2 Group of Technologies Access Key", type="password")
13
+
14
+ if OPENAI_API_KEY:
15
+ client = OpenAI(api_key=OPENAI_API_KEY)
16
+ else:
17
+ st.error("Please enter your C2 Group of Technologies Access Key to continue.")
18
+ st.stop()
19
+
20
+ ASSISTANT_ID = "asst_PJjxQftfz2IJUUMvnldK58lB"
21
+
22
+ # Initialize session state
23
+ if "messages" not in st.session_state:
24
+ st.session_state.messages = []
25
+ if "thread_id" not in st.session_state:
26
+ st.session_state.thread_id = None
27
+
28
+ # Clear chat button
29
+ if st.button("Clear Chat", use_container_width=True):
30
+ st.session_state.messages = []
31
+ st.session_state.thread_id = None
32
+ st.rerun()
33
+
34
+ # Display chat history
35
+ for message in st.session_state.messages:
36
+ role, content = message["role"], message["content"]
37
+ st.chat_message(role).write(content)
38
+
39
+ # Process user input
40
+ if prompt := st.chat_input():
41
+ st.session_state.messages.append({"role": "user", "content": prompt})
42
+ st.chat_message("user").write(prompt)
43
+
44
+ try:
45
+ # Create a new thread only if one doesn't exist yet
46
+ if st.session_state.thread_id is None:
47
+ thread = client.beta.threads.create()
48
+ st.session_state.thread_id = thread.id
49
+
50
+ thread_id = st.session_state.thread_id
51
+
52
+ # Send user message to OpenAI API in the existing thread
53
+ client.beta.threads.messages.create(
54
+ thread_id=thread_id,
55
+ role="user",
56
+ content=prompt
57
+ )
58
+
59
+ # Run the assistant to generate a response
60
+ run = client.beta.threads.runs.create(
61
+ thread_id=thread_id,
62
+ assistant_id=ASSISTANT_ID
63
+ )
64
+
65
+ # Wait for response
66
+ while True:
67
+ run_status = client.beta.threads.runs.retrieve(thread_id=thread_id, run_id=run.id)
68
+ if run_status.status == "completed":
69
+ break
70
+ time.sleep(1)
71
+
72
+ # Retrieve assistant response
73
+ messages = client.beta.threads.messages.list(thread_id=thread_id)
74
+ # Get the most recent assistant message
75
+ for message in reversed(messages.data):
76
+ if message.role == "assistant":
77
+ assistant_message = message.content[0].text.value
78
+ break
79
+
80
+ # Display assistant's response
81
+ st.chat_message("assistant").write(assistant_message)
82
+
83
+ # Store in session state
84
+ st.session_state.messages.append({"role": "assistant", "content": assistant_message})
85
+
86
+ except Exception as e:
87
+ st.error(f"Error: {str(e)}")