Refactor SNOMED-CT_Assistant.py to improve entity mapping result display with markdown table.
Browse files- SNOMED-CT_Assistant.py +32 -9
SNOMED-CT_Assistant.py
CHANGED
@@ -129,16 +129,39 @@ def chat_input(prompt, med_text):
|
|
129 |
print("entity: ", entity)
|
130 |
results = query_chroma_db(entity, 10)
|
131 |
results_dict = get_dict_from_chroma_results(results)
|
132 |
-
|
133 |
-
st.session_state.messages.append({"role": "
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
st.
|
|
|
|
|
|
|
139 |
|
140 |
-
|
141 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
142 |
|
143 |
if "messages" not in st.session_state:
|
144 |
st.session_state["messages"] = [{"role": "system", "content": system_prompt},
|
|
|
129 |
print("entity: ", entity)
|
130 |
results = query_chroma_db(entity, 10)
|
131 |
results_dict = get_dict_from_chroma_results(results)
|
132 |
+
results_table = entity_mapping_result_to_table(entity, results_dict)
|
133 |
+
st.session_state.messages.append({"role": "assistant", "content": results_table})
|
134 |
+
st.chat_message("assistant").write(results_table)
|
135 |
+
# entity_mapping_prompt = generate_entity_mapping_prompt(entity, results_dict)
|
136 |
+
# st.session_state.messages.append({"role": "user", "content": entity_mapping_prompt})
|
137 |
+
# entity_mapping_response = client.chat.completions.create(
|
138 |
+
# model=model_tag, messages=st.session_state.messages, temperature=0.5)
|
139 |
+
# mapping_msg = entity_mapping_response.choices[0].message.content
|
140 |
+
# st.session_state.messages.append({"role": "assistant", "content": mapping_msg})
|
141 |
+
# st.chat_message("assistant").write(mapping_msg)
|
142 |
|
143 |
+
|
144 |
+
# Conver entity mapping result to markdown table
|
145 |
+
def entity_mapping_result_to_table(entity, results_dict):
|
146 |
+
|
147 |
+
ids = results_dict['ids']
|
148 |
+
concept_ids = results_dict['concept_ids']
|
149 |
+
distances = results_dict['distances']
|
150 |
+
descriptions = results_dict['descriptions']
|
151 |
+
|
152 |
+
# header
|
153 |
+
header = "| Identified Entity | Distance | IDs | SNOMED CT - Concept IDs | SNOMED CT - Descriptions |"
|
154 |
+
seperator = "| --- | --- | --- | --- | --- |"
|
155 |
+
|
156 |
+
# table
|
157 |
+
rows = []
|
158 |
+
for id, distance, concept_id, description in zip(ids, distances, concept_ids, descriptions):
|
159 |
+
row = f"| {entity} | {distance:.3f} | {id} | {concept_id} | {description} |"
|
160 |
+
rows.append(row)
|
161 |
+
|
162 |
+
# merge
|
163 |
+
markdown_table = "\n".join([header, seperator] + rows)
|
164 |
+
return markdown_table
|
165 |
|
166 |
if "messages" not in st.session_state:
|
167 |
st.session_state["messages"] = [{"role": "system", "content": system_prompt},
|