Update app.py
Browse files
app.py
CHANGED
|
@@ -201,15 +201,23 @@ def generate_response(db, query_text, previous_context):
|
|
| 201 |
filename="unsloth.BF16.gguf",
|
| 202 |
)
|
| 203 |
|
| 204 |
-
|
| 205 |
-
output = llm(
|
| 206 |
prompt_template,
|
|
|
|
| 207 |
temperature=0.1,
|
| 208 |
top_p=0.9,
|
| 209 |
top_k=20
|
| 210 |
)
|
| 211 |
|
| 212 |
-
full_response =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 213 |
|
| 214 |
return full_response
|
| 215 |
|
|
@@ -219,10 +227,6 @@ def streamlit_app():
|
|
| 219 |
# Initialize db in session state if not already present
|
| 220 |
if "db" not in st.session_state:
|
| 221 |
st.session_state.db = None
|
| 222 |
-
if "messages" not in st.session_state:
|
| 223 |
-
st.session_state.messages = []
|
| 224 |
-
if "previous_context" not in st.session_state:
|
| 225 |
-
st.session_state.previous_context = ""
|
| 226 |
|
| 227 |
# Search query input
|
| 228 |
search_str = st.text_input("Enter search query:")
|
|
@@ -255,30 +259,35 @@ def streamlit_app():
|
|
| 255 |
|
| 256 |
if final_items:
|
| 257 |
st.session_state.db = create_vector_db(final_items)
|
| 258 |
-
st.
|
| 259 |
else:
|
| 260 |
-
st.
|
| 261 |
|
| 262 |
-
#
|
| 263 |
-
|
| 264 |
-
|
| 265 |
-
|
| 266 |
-
|
| 267 |
-
st.session_state.messages
|
| 268 |
-
|
| 269 |
-
|
| 270 |
-
response = generate_response(st.session_state.db, query, st.session_state.previous_context)
|
| 271 |
-
st.session_state.messages.append({"role": "assistant", "content": response})
|
| 272 |
-
|
| 273 |
-
# Update previous context with the latest response
|
| 274 |
-
st.session_state.previous_context = response
|
| 275 |
|
| 276 |
-
# Display conversation history
|
| 277 |
for message in st.session_state.messages:
|
| 278 |
-
|
| 279 |
-
st.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 280 |
else:
|
| 281 |
-
st.
|
|
|
|
|
|
|
|
|
|
| 282 |
|
| 283 |
if __name__ == "__main__":
|
| 284 |
streamlit_app()
|
|
|
|
| 201 |
filename="unsloth.BF16.gguf",
|
| 202 |
)
|
| 203 |
|
| 204 |
+
output_stream = llm(
|
|
|
|
| 205 |
prompt_template,
|
| 206 |
+
stream=True,
|
| 207 |
temperature=0.1,
|
| 208 |
top_p=0.9,
|
| 209 |
top_k=20
|
| 210 |
)
|
| 211 |
|
| 212 |
+
full_response = ""
|
| 213 |
+
|
| 214 |
+
response_placeholder = st.empty()
|
| 215 |
+
|
| 216 |
+
for token in output_stream:
|
| 217 |
+
# Extract the text from the token
|
| 218 |
+
token_text = token.get("choices", [{}])[0].get("text", "")
|
| 219 |
+
full_response += token_text
|
| 220 |
+
response_placeholder.text(full_response) # Print token output in real-time
|
| 221 |
|
| 222 |
return full_response
|
| 223 |
|
|
|
|
| 227 |
# Initialize db in session state if not already present
|
| 228 |
if "db" not in st.session_state:
|
| 229 |
st.session_state.db = None
|
|
|
|
|
|
|
|
|
|
|
|
|
| 230 |
|
| 231 |
# Search query input
|
| 232 |
search_str = st.text_input("Enter search query:")
|
|
|
|
| 259 |
|
| 260 |
if final_items:
|
| 261 |
st.session_state.db = create_vector_db(final_items)
|
| 262 |
+
st.write("Models have been processed and added to the database.")
|
| 263 |
else:
|
| 264 |
+
st.error("No items found in the models. Check if the Antimony files were generated correctly.")
|
| 265 |
|
| 266 |
+
# Avoid caching the database initialization, or ensure it's properly updated.
|
| 267 |
+
@st.cache_resource
|
| 268 |
+
def get_messages():
|
| 269 |
+
if "messages" not in st.session_state:
|
| 270 |
+
st.session_state.messages = []
|
| 271 |
+
return st.session_state.messages
|
| 272 |
+
|
| 273 |
+
st.session_state.messages = get_messages()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 274 |
|
|
|
|
| 275 |
for message in st.session_state.messages:
|
| 276 |
+
with st.chat_message(message["role"]):
|
| 277 |
+
st.markdown(message["content"])
|
| 278 |
+
|
| 279 |
+
# Chat input section
|
| 280 |
+
if prompt := st.chat_input("Ask a question about the models:"):
|
| 281 |
+
st.chat_message("user").markdown(prompt)
|
| 282 |
+
st.session_state.messages.append({"role": "user", "content": prompt})
|
| 283 |
+
|
| 284 |
+
if st.session_state.db is None:
|
| 285 |
+
st.error("Database is not initialized. Please process the models first.")
|
| 286 |
else:
|
| 287 |
+
response = generate_response(st.session_state.db, prompt, st.session_state.messages)
|
| 288 |
+
|
| 289 |
+
st.chat_message("assistant").markdown(response) # Directly display the final response
|
| 290 |
+
st.session_state.messages.append({"role": "assistant", "content": response})
|
| 291 |
|
| 292 |
if __name__ == "__main__":
|
| 293 |
streamlit_app()
|