IAMTFRMZA commited on
Commit
35da82e
·
verified ·
1 Parent(s): 8a223e2
Files changed (1) hide show
  1. app.py +64 -99
app.py CHANGED
@@ -19,66 +19,75 @@ st.caption("Chat with your contract or manage meeting minutes")
19
  with st.sidebar:
20
  OPENAI_API_KEY = st.text_input("Enter your C2 Group of Technologies Access Key", type="password")
21
 
22
- # Tabs for Contract and Minutes
23
- tab1, tab2 = st.tabs(["Contract", "Minutes"])
24
 
25
  SUPPORTED_AUDIO_FORMATS = (".mp3", ".wav", ".m4a")
26
  SUPPORTED_TEXT_FORMATS = (".txt", ".docx", ".csv", ".xlsx", ".pdf")
27
 
28
- with tab1:
29
- st.subheader("Contract Chat")
30
-
31
- if OPENAI_API_KEY:
32
- client = OpenAI(api_key=OPENAI_API_KEY)
33
- else:
34
- st.error("Please enter your C2 Group of Technologies Access Key to continue.")
35
- st.stop()
36
 
37
- ASSISTANT_ID = "asst_rd9h8PfYuOmHbkvOF3RTmVfn"
38
-
39
- if "messages" not in st.session_state:
40
- st.session_state["messages"] = []
41
-
42
- if st.button("Clear Chat"):
43
- st.session_state["messages"] = []
44
- st.rerun()
45
-
46
- for message in st.session_state.messages:
47
- role, content = message["role"], message["content"]
48
- st.chat_message(role).write(content)
49
-
50
- if prompt := st.chat_input():
51
- st.session_state.messages.append({"role": "user", "content": prompt})
52
- st.chat_message("user").write(prompt)
53
-
54
- try:
55
- thread = client.beta.threads.create()
56
- thread_id = thread.id
57
- client.beta.threads.messages.create(
58
- thread_id=thread_id,
59
- role="user",
60
- content=prompt
61
- )
62
-
63
- run = client.beta.threads.runs.create(
64
- thread_id=thread_id,
65
- assistant_id=ASSISTANT_ID
66
- )
67
-
68
- while True:
69
- run_status = client.beta.threads.runs.retrieve(thread_id=thread_id, run_id=run.id)
70
- if run_status.status == "completed":
71
- break
72
- time.sleep(1)
73
-
74
- messages = client.beta.threads.messages.list(thread_id=thread_id)
75
- assistant_message = messages.data[0].content[0].text.value
76
- st.chat_message("assistant").write(assistant_message)
77
- st.session_state.messages.append({"role": "assistant", "content": assistant_message})
78
- except Exception as e:
79
- st.error(f"Error: {str(e)}")
80
-
81
- with tab2:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
  st.subheader("Minutes")
83
 
84
  if "generated_minutes" not in st.session_state:
@@ -128,23 +137,19 @@ with tab2:
128
  **Date:** [Enter date]
129
  **Time:** [Enter time]
130
  **Attendees:** [List attendees]
131
-
132
  ### Agenda Items
133
  - [Agenda Item 1]
134
  - [Agenda Item 2]
135
  - [Agenda Item 3]
136
-
137
  ### Action Items
138
  | Action Item | Owner(s) | Deadline | Status |
139
  |------------|---------|----------|--------|
140
  | [Action Item 1] | [Owner(s) 1] | [Deadline 1] | [Status 1] |
141
  | [Action Item 2] | [Owner(s) 2] | [Deadline 2] | [Status 2] |
142
  | [Action Item 3] | [Owner(s) 3] | [Deadline 3] | [Status 3] |
143
-
144
  ---
145
  **Meeting Summary:**
146
  [Brief summary of key points, discussions, and decisions]
147
-
148
  **Transcript:**
149
  {combined_text}
150
  """
@@ -160,43 +165,3 @@ with tab2:
160
 
161
  st.write("### Generated Meeting Minutes:")
162
  st.text_area("Meeting Minutes", st.session_state["generated_minutes"], height=400)
163
-
164
- if st.session_state["generated_minutes"]:
165
- doc = Document()
166
- doc.add_paragraph(st.session_state["generated_minutes"])
167
-
168
- docx_io = BytesIO()
169
- doc.save(docx_io)
170
- docx_io.seek(0)
171
-
172
- st.download_button(label="Download Meeting Minutes",
173
- data=docx_io,
174
- file_name="Meeting_Minutes.docx",
175
- mime="application/vnd.openxmlformats-officedocument.wordprocessingml.document")
176
-
177
- if st.button("Contract Analysis"):
178
- analysis_prompt = "Analyze this data and provide insights, risks, and relevant data based on the contract:\n" + st.session_state["generated_minutes"]
179
- thread = client.beta.threads.create()
180
- thread_id = thread.id
181
- client.beta.threads.messages.create(
182
- thread_id=thread_id,
183
- role="user",
184
- content=analysis_prompt
185
- )
186
-
187
- run = client.beta.threads.runs.create(
188
- thread_id=thread_id,
189
- assistant_id=ASSISTANT_ID
190
- )
191
-
192
- while True:
193
- run_status = client.beta.threads.runs.retrieve(thread_id=thread_id, run_id=run.id)
194
- if run_status.status == "completed":
195
- break
196
- time.sleep(1)
197
-
198
- messages = client.beta.threads.messages.list(thread_id=thread_id)
199
- analysis_output = messages.data[0].content[0].text.value
200
-
201
- st.write("### Contract Analysis Output:")
202
- st.text_area("Contract Analysis", analysis_output, height=300)
 
19
  with st.sidebar:
20
  OPENAI_API_KEY = st.text_input("Enter your C2 Group of Technologies Access Key", type="password")
21
 
22
+ # Tabs for Contract, Technical, and Minutes
23
+ tab1, tab2, tab3 = st.tabs(["Contract", "Technical", "Minutes"])
24
 
25
  SUPPORTED_AUDIO_FORMATS = (".mp3", ".wav", ".m4a")
26
  SUPPORTED_TEXT_FORMATS = (".txt", ".docx", ".csv", ".xlsx", ".pdf")
27
 
 
 
 
 
 
 
 
 
28
 
29
+ def contract_chat_section(tab, assistant_id):
30
+ with tab:
31
+ st.subheader("Chat")
32
+
33
+ if OPENAI_API_KEY:
34
+ client = OpenAI(api_key=OPENAI_API_KEY)
35
+ else:
36
+ st.error("Please enter your C2 Group of Technologies Access Key to continue.")
37
+ st.stop()
38
+
39
+ if "messages" not in st.session_state:
40
+ st.session_state["messages"] = []
41
+
42
+ if st.button("Clear Chat"):
43
+ st.session_state["messages"] = []
44
+ st.rerun()
45
+
46
+ for message in st.session_state.messages:
47
+ role, content = message["role"], message["content"]
48
+ st.chat_message(role).write(content)
49
+
50
+ if prompt := st.chat_input():
51
+ st.session_state.messages.append({"role": "user", "content": prompt})
52
+ st.chat_message("user").write(prompt)
53
+
54
+ try:
55
+ thread = client.beta.threads.create()
56
+ thread_id = thread.id
57
+ client.beta.threads.messages.create(
58
+ thread_id=thread_id,
59
+ role="user",
60
+ content=prompt
61
+ )
62
+
63
+ run = client.beta.threads.runs.create(
64
+ thread_id=thread_id,
65
+ assistant_id=assistant_id
66
+ )
67
+
68
+ while True:
69
+ run_status = client.beta.threads.runs.retrieve(thread_id=thread_id, run_id=run.id)
70
+ if run_status.status == "completed":
71
+ break
72
+ time.sleep(1)
73
+
74
+ messages = client.beta.threads.messages.list(thread_id=thread_id)
75
+ assistant_message = messages.data[0].content[0].text.value
76
+ st.chat_message("assistant").write(assistant_message)
77
+ st.session_state.messages.append({"role": "assistant", "content": assistant_message})
78
+ except Exception as e:
79
+ st.error(f"Error: {str(e)}")
80
+
81
+ ASSISTANT_CONTRACT_ID = "asst_rd9h8PfYuOmHbkvOF3RTmVfn"
82
+ ASSISTANT_TECHNICAL_ID = "asst_technical_example" # Replace with actual assistant ID
83
+
84
+ # Contract Chat Section
85
+ contract_chat_section(tab1, ASSISTANT_CONTRACT_ID)
86
+
87
+ # Technical Chat Section
88
+ contract_chat_section(tab2, ASSISTANT_TECHNICAL_ID)
89
+
90
+ with tab3:
91
  st.subheader("Minutes")
92
 
93
  if "generated_minutes" not in st.session_state:
 
137
  **Date:** [Enter date]
138
  **Time:** [Enter time]
139
  **Attendees:** [List attendees]
 
140
  ### Agenda Items
141
  - [Agenda Item 1]
142
  - [Agenda Item 2]
143
  - [Agenda Item 3]
 
144
  ### Action Items
145
  | Action Item | Owner(s) | Deadline | Status |
146
  |------------|---------|----------|--------|
147
  | [Action Item 1] | [Owner(s) 1] | [Deadline 1] | [Status 1] |
148
  | [Action Item 2] | [Owner(s) 2] | [Deadline 2] | [Status 2] |
149
  | [Action Item 3] | [Owner(s) 3] | [Deadline 3] | [Status 3] |
 
150
  ---
151
  **Meeting Summary:**
152
  [Brief summary of key points, discussions, and decisions]
 
153
  **Transcript:**
154
  {combined_text}
155
  """
 
165
 
166
  st.write("### Generated Meeting Minutes:")
167
  st.text_area("Meeting Minutes", st.session_state["generated_minutes"], height=400)