IAMTFRMZA commited on
Commit
16a0a0c
·
verified ·
1 Parent(s): 528891b
Files changed (1) hide show
  1. app.py +75 -63
app.py CHANGED
@@ -5,77 +5,89 @@ import time
5
  st.set_page_config(page_title="Schlager ContractAi")
6
 
7
  st.title("Schlager ContractAi")
8
- st.caption("Chat with your contract")
9
 
10
- # Sidebar for API Key input and file uploads
11
  with st.sidebar:
12
  OPENAI_API_KEY = st.text_input("Enter your OpenAI API Key", type="password")
13
- st.subheader("Minutes Uploads")
14
- uploaded_files = st.file_uploader("Upload meeting minutes (PDF/DOCX)", type=["pdf", "docx"], accept_multiple_files=True)
15
 
16
- if uploaded_files:
17
- st.write("### Uploaded Files:")
18
- for uploaded_file in uploaded_files:
19
- st.write(f"- {uploaded_file.name}")
20
 
21
- # Initialize OpenAI client
22
- if OPENAI_API_KEY:
23
- client = OpenAI(api_key=OPENAI_API_KEY)
24
- else:
25
- st.error("Please enter your OpenAI API key to continue.")
26
- st.stop()
 
 
 
27
 
28
- ASSISTANT_ID = "asst_rd9h8PfYuOmHbkvOF3RTmVfn"
29
 
30
- # Session state for chat messages
31
- if "messages" not in st.session_state:
32
- st.session_state["messages"] = []
33
 
34
- # Display all chat messages
35
- for message in st.session_state.messages:
36
- role, content = message["role"], message["content"]
37
- if role == "assistant" and "|" in content: # Detect table formatting
38
- st.chat_message(role).write(content, unsafe_allow_html=True)
39
- else:
40
- st.chat_message(role).write(content)
41
-
42
- # User input
43
- if prompt := st.chat_input():
44
- st.session_state.messages.append({"role": "user", "content": prompt})
45
- st.chat_message("user").write(prompt)
46
-
47
- # Send message to OpenAI Assistant
48
- try:
49
- thread = client.beta.threads.create()
50
- thread_id = thread.id
51
- client.beta.threads.messages.create(
52
- thread_id=thread_id,
53
- role="user",
54
- content=prompt
55
- )
56
-
57
- run = client.beta.threads.runs.create(
58
- thread_id=thread_id,
59
- assistant_id=ASSISTANT_ID
60
- )
61
-
62
- while True:
63
- run_status = client.beta.threads.runs.retrieve(thread_id=thread_id, run_id=run.id)
64
- if run_status.status == "completed":
65
- break
66
- time.sleep(1)
67
-
68
- messages = client.beta.threads.messages.list(thread_id=thread_id)
69
- assistant_message = messages.data[0].content[0].text.value
70
-
71
- # Detect table format and use Markdown
72
- if "|" in assistant_message and "---" in assistant_message:
73
- formatted_message = f"```\n{assistant_message}\n```"
74
- st.chat_message("assistant").write(formatted_message, unsafe_allow_html=True)
75
  else:
76
- st.chat_message("assistant").write(assistant_message)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
 
78
- st.session_state.messages.append({"role": "assistant", "content": assistant_message})
 
 
 
 
79
 
80
- except Exception as e:
81
- st.error(f"Error: {str(e)}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  st.set_page_config(page_title="Schlager ContractAi")
6
 
7
  st.title("Schlager ContractAi")
8
+ st.caption("Chat with your contract or manage meeting minutes")
9
 
10
+ # Sidebar for API Key input
11
  with st.sidebar:
12
  OPENAI_API_KEY = st.text_input("Enter your OpenAI API Key", type="password")
 
 
13
 
14
+ # Tabs for Contract and Minutes
15
+ tab1, tab2 = st.tabs(["Contract", "Minutes"])
 
 
16
 
17
+ with tab1:
18
+ st.subheader("Contract Chat")
19
+
20
+ # Initialize OpenAI client
21
+ if OPENAI_API_KEY:
22
+ client = OpenAI(api_key=OPENAI_API_KEY)
23
+ else:
24
+ st.error("Please enter your OpenAI API key to continue.")
25
+ st.stop()
26
 
27
+ ASSISTANT_ID = "asst_rd9h8PfYuOmHbkvOF3RTmVfn"
28
 
29
+ # Session state for chat messages
30
+ if "messages" not in st.session_state:
31
+ st.session_state["messages"] = []
32
 
33
+ # Display all chat messages
34
+ for message in st.session_state.messages:
35
+ role, content = message["role"], message["content"]
36
+ if role == "assistant" and "|" in content: # Detect table formatting
37
+ st.chat_message(role).write(content, unsafe_allow_html=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  else:
39
+ st.chat_message(role).write(content)
40
+
41
+ # User input
42
+ if prompt := st.chat_input():
43
+ st.session_state.messages.append({"role": "user", "content": prompt})
44
+ st.chat_message("user").write(prompt)
45
+
46
+ # Send message to OpenAI Assistant
47
+ try:
48
+ thread = client.beta.threads.create()
49
+ thread_id = thread.id
50
+ client.beta.threads.messages.create(
51
+ thread_id=thread_id,
52
+ role="user",
53
+ content=prompt
54
+ )
55
+
56
+ run = client.beta.threads.runs.create(
57
+ thread_id=thread_id,
58
+ assistant_id=ASSISTANT_ID
59
+ )
60
 
61
+ while True:
62
+ run_status = client.beta.threads.runs.retrieve(thread_id=thread_id, run_id=run.id)
63
+ if run_status.status == "completed":
64
+ break
65
+ time.sleep(1)
66
 
67
+ messages = client.beta.threads.messages.list(thread_id=thread_id)
68
+ assistant_message = messages.data[0].content[0].text.value
69
+
70
+ # Detect table format and use Markdown
71
+ if "|" in assistant_message and "---" in assistant_message:
72
+ formatted_message = f"```
73
+ {assistant_message}
74
+ ```"
75
+ st.chat_message("assistant").write(formatted_message, unsafe_allow_html=True)
76
+ else:
77
+ st.chat_message("assistant").write(assistant_message)
78
+
79
+ st.session_state.messages.append({"role": "assistant", "content": assistant_message})
80
+
81
+ except Exception as e:
82
+ st.error(f"Error: {str(e)}")
83
+
84
+ with tab2:
85
+ st.subheader("Minutes")
86
+ st.write("Hello World")
87
+
88
+ uploaded_files = st.file_uploader("Upload meeting minutes (PDF/DOCX)", type=["pdf", "docx"], accept_multiple_files=True)
89
+
90
+ if uploaded_files:
91
+ st.write("### Uploaded Files:")
92
+ for uploaded_file in uploaded_files:
93
+ st.write(f"- {uploaded_file.name}")