Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| from interface.utils import get_pipelines, extract_text_from_url, extract_text_from_file | |
| from interface.draw_pipelines import get_pipeline_graph | |
| def component_select_pipeline(container): | |
| pipeline_names, pipeline_funcs = get_pipelines() | |
| with container: | |
| selected_pipeline = st.selectbox( | |
| "Select pipeline", | |
| pipeline_names, | |
| index=pipeline_names.index("Keyword Search") | |
| if "Keyword Search" in pipeline_names | |
| else 0, | |
| ) | |
| if ( | |
| st.session_state["pipeline"] is None | |
| or st.session_state["pipeline"]["name"] != selected_pipeline | |
| ): | |
| ( | |
| search_pipeline, | |
| index_pipeline, | |
| ) = pipeline_funcs[pipeline_names.index(selected_pipeline)]() | |
| st.session_state["pipeline"] = { | |
| "name": selected_pipeline, | |
| "search_pipeline": search_pipeline, | |
| "index_pipeline": index_pipeline, | |
| } | |
| def component_show_pipeline(pipeline): | |
| """Draw the pipeline""" | |
| with st.expander("Show pipeline"): | |
| fig = get_pipeline_graph(pipeline) | |
| st.plotly_chart(fig, use_container_width=True) | |
| def component_show_search_result(container, results): | |
| with container: | |
| for idx, document in enumerate(results): | |
| st.markdown(f"### Match {idx+1}") | |
| st.markdown(f"**Text**: {document['text']}") | |
| st.markdown(f"**Document**: {document['id']}") | |
| if document["score"] is not None: | |
| st.markdown(f"**Score**: {document['score']:.3f}") | |
| st.markdown("---") | |
| def component_text_input(container): | |
| """Draw the Text Input widget""" | |
| with container: | |
| texts = [] | |
| doc_id = 1 | |
| with st.expander("Enter documents"): | |
| while True: | |
| text = st.text_input(f"Document {doc_id}", key=doc_id) | |
| if text != "": | |
| texts.append({"text": text}) | |
| doc_id += 1 | |
| st.markdown("---") | |
| else: | |
| break | |
| corpus = [ | |
| {"text": doc["text"], "id": doc_id} for doc_id, doc in enumerate(texts) | |
| ] | |
| return corpus | |
| def component_article_url(container): | |
| """Draw the Article URL widget""" | |
| with container: | |
| urls = [] | |
| doc_id = 1 | |
| with st.expander("Enter URLs"): | |
| while True: | |
| url = st.text_input(f"URL {doc_id}", key=doc_id) | |
| if url != "": | |
| urls.append({"text": extract_text_from_url(url)}) | |
| doc_id += 1 | |
| st.markdown("---") | |
| else: | |
| break | |
| for idx, doc in enumerate(urls): | |
| with st.expander(f"Preview URL {idx}"): | |
| st.write(doc) | |
| corpus = [ | |
| {"text": doc["text"], "id": doc_id} for doc_id, doc in enumerate(urls) | |
| ] | |
| return corpus | |
| def component_file_input(container): | |
| """Draw the extract text from file widget""" | |
| with container: | |
| files = [] | |
| doc_id = 1 | |
| with st.expander("Enter Files"): | |
| while True: | |
| file = st.file_uploader( | |
| "Upload a .txt, .pdf, .csv, image file", key=doc_id | |
| ) | |
| if file != None: | |
| extracted_text = extract_text_from_file(file) | |
| if extracted_text != None: | |
| files.append({"text": extracted_text}) | |
| doc_id += 1 | |
| st.markdown("---") | |
| else: | |
| break | |
| else: | |
| break | |
| for idx, doc in enumerate(files): | |
| with st.expander(f"Preview File {idx}"): | |
| st.write(doc) | |
| corpus = [ | |
| {"text": doc["text"], "id": doc_id} for doc_id, doc in enumerate(files) | |
| ] | |
| return corpus | |