IAMTFRMZA commited on
Commit
1fd9ee7
·
verified ·
1 Parent(s): a927736

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -18
app.py CHANGED
@@ -1,87 +1,90 @@
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)}")
 
1
  import streamlit as st
2
  from openai import OpenAI
3
  import time
4
+ import re
5
 
6
+ # Streamlit page setup
7
  st.set_page_config(page_title="documentaitest")
 
8
  st.title("documentaitest")
9
  st.caption("Chat with an Ai Assistant on your Documents")
10
 
11
+ # Sidebar for API key input
12
  with st.sidebar:
13
  OPENAI_API_KEY = st.text_input("Enter your C2 Group of Technologies Access Key", type="password")
14
 
15
+ if not OPENAI_API_KEY:
 
 
16
  st.error("Please enter your C2 Group of Technologies Access Key to continue.")
17
  st.stop()
18
 
19
+ client = OpenAI(api_key=OPENAI_API_KEY)
20
  ASSISTANT_ID = "asst_PJjxQftfz2IJUUMvnldK58lB"
21
 
22
+ # 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
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
+ # Show 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
+ # Handle new 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
  if st.session_state.thread_id is None:
46
  thread = client.beta.threads.create()
47
  st.session_state.thread_id = thread.id
48
 
49
  thread_id = st.session_state.thread_id
50
 
51
+ # Send user message
52
  client.beta.threads.messages.create(
53
  thread_id=thread_id,
54
  role="user",
55
  content=prompt
56
  )
57
 
58
+ # Run assistant
59
  run = client.beta.threads.runs.create(
60
  thread_id=thread_id,
61
  assistant_id=ASSISTANT_ID
62
  )
63
 
64
+ # Poll until complete
65
  while True:
66
  run_status = client.beta.threads.runs.retrieve(thread_id=thread_id, run_id=run.id)
67
  if run_status.status == "completed":
68
  break
69
  time.sleep(1)
70
 
71
+ # Get assistant response
72
  messages = client.beta.threads.messages.list(thread_id=thread_id)
 
73
  for message in reversed(messages.data):
74
  if message.role == "assistant":
75
  assistant_message = message.content[0].text.value
76
  break
77
 
78
+ # Show response
79
  st.chat_message("assistant").write(assistant_message)
 
 
80
  st.session_state.messages.append({"role": "assistant", "content": assistant_message})
81
 
82
+ # 🔍 Detect and display GitHub-hosted image
83
+ page_match = re.search(r'Page (\d+)', assistant_message)
84
+ if page_match:
85
+ page_number = page_match.group(1).zfill(3)
86
+ image_url = f"https://raw.githubusercontent.com/AndrewLORTech/surgical-pathology-manual/main/51940670-Manual-of-Surgical-Pathology-Third-Edition_1_page_{page_number}.png"
87
+ st.image(image_url, caption=f"Page {int(page_number)}", use_column_width=True)
88
+
89
  except Exception as e:
90
  st.error(f"Error: {str(e)}")