-
Notifications
You must be signed in to change notification settings - Fork 27
/
Copy pathapp.py
74 lines (56 loc) · 1.86 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import streamlit as st
import pandas as pd
from knowledge_base import KnowledgeBase
# Page setup
st.set_page_config(page_title="Website to AI-Powered Knowledge Base", page_icon="🐍")
st.title("AI-Powered Knowledge Base")
# Remove whitespace from the top of the page and sidebar
st.markdown(
"""
<style>
.css-18e3th9 {
padding-top: 0rem;
padding-bottom: 10rem;
padding-left: 5rem;
padding-right: 5rem;
}
.css-1d391kg {
padding-top: 3.5rem;
padding-right: 1rem;
padding-bottom: 3.5rem;
padding-left: 1rem;
}
</style>
""",
unsafe_allow_html=True,
)
st.markdown("## Config")
col1, col2 = st.columns(2)
with col1:
sitemap_url = st.text_input("URL to the website sitemap", value="")
with col2:
pattern = st.text_input("URL filter pattern (optional)", value="")
st.markdown("## Ask")
@st.cache_resource
def get_knowledge_base(url, pattern):
return KnowledgeBase(
sitemap_url=url,
pattern=pattern,
chunk_size=8000,
chunk_overlap=3000,
)
@st.cache_resource
def get_answer(url, pattern, query):
kb = get_knowledge_base(sitemap_url, pattern)
return kb.ask(query)
if sitemap_url and pattern:
with st.spinner("Getting the knowledge base ready, this may take a bit ..."):
kb = get_knowledge_base(sitemap_url, pattern)
query = st.text_input("Question", value="")
if query:
with st.spinner("Getting the answer ..."):
result = get_answer(sitemap_url, pattern, query)
st.markdown("### Answer")
st.markdown(result["answer"])
st.markdown("### Sources")
st.markdown("\n ".join([f"- {x}" for x in result["sources"].split("\n")]))