Spaces:
Sleeping
Sleeping
File size: 2,892 Bytes
ec16604 92bc5a2 ec16604 1757e11 19ade8f 21bf2d0 d7ce517 21bf2d0 70511cb a401978 79a547d a401978 5aa46d7 7f698f0 a401978 91a25c0 659ec36 b83a14b ea7253a 3567445 ea7253a e21682e b83a14b 19ade8f 6b94a4b 1757e11 6b94a4b 1757e11 6b94a4b 1757e11 6b94a4b b83a14b 4af858f b83a14b 4af858f 19ade8f |
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 75 |
from openai import OpenAI
import crawl_the_site
import create_database
import streamlit as st
import time
api_key = "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"
openai_client = OpenAI(base_url="https://openrouter.ai/api/v1",api_key=api_key)
prompt_template = """Answer the question only according to the information provided below. Answer only the user's question, dont give additional information.
## Information :
{}
## Question :
# {}"""
st.session_state.messages = []
if not "stage" in st.session_state:
st.session_state.stage = "crawl-input"
elif st.session_state.stage == "remove-crawl-input-widgets":
st.session_state.stage = "prompt-input"
if st.session_state.stage == "crawl-input":
config = st.text_area("Enter the start URL and the limit of crawling (in this format : URL,limit) :")
config_btn = st.button("Start crawling!")
if config and config_btn:
start = config.split(",")[0]
limit = int(config.split(",")[1])
txt = crawl_the_site.crawl(start,limit)
st.session_state.collection = create_database.create_database(txt)
st.write("""Crawling is done. Click \"Start Crawling!\" again to start prompting!
Theres a chance that after sending the first prompt you dont see the output, just click \"Enter\" again.""")
st.session_state.stage = "remove-crawl-input-widgets"
if st.session_state.stage == "prompt-input":
prompt = st.chat_input("Ask the documentation a question!")
if prompt:
with st.chat_message("user"):
st.markdown(prompt)
for message in st.session_state.messages:
with st.chat_message(message["role"]):
st.markdown(message)
st.session_state.messages.append({"role":"user","message":prompt})
results = st.session_state.collection.query(query_texts=[prompt],n_results=5)
infos = results["documents"][0]
info_text = ""
for info in infos:
info_text += info + "\n---\n"
info_text = info_text.strip()
prompt = prompt_template.format(info_text,prompt)
completion = openai_client.chat.completions.create(
extra_headers={},
extra_body={},
model="deepseek/deepseek-r1:free",
messages=[{"role":"user","content":prompt}])
with st.chat_message("assistant"):
full_response = ""
message_placeholder = st.empty()
for chunk in completion.choices[0].message.content.split():
full_response += chunk + " "
time.sleep(0.05)
message_placeholder.markdown(full_response + "▌")
message_placeholder.markdown(full_response)
st.session_state.messages.append({"role":"assistant","message":full_response}) |