Spaces:
Sleeping
Sleeping
| import time | |
| import json | |
| import streamlit as st | |
| from typing import Dict, List, Any | |
| from llama_index.core.base.llms.types import ChatMessage | |
| def show_previous_messages(framework: str, messages_container: any): | |
| with messages_container: | |
| messages: List[Dict[str, Any]] = st.session_state[f"{framework}_messages"] | |
| for message in messages: | |
| with st.chat_message(message["role"]): | |
| st.markdown(message["content"]) | |
| def show_chat_input( | |
| disabled: bool, framework: str, model: any, messages_container: any | |
| ): | |
| if disabled: | |
| st.info("Make sure to select a model and file to start chatting!") | |
| if prompt := st.chat_input("Say something", disabled=disabled): | |
| st.session_state[f"{framework}_messages"].append( | |
| {"role": "user", "content": prompt} | |
| ) | |
| st.session_state[f"{framework}_chat_history"].append( | |
| ChatMessage.from_str(role="user", content=prompt) | |
| ) | |
| # if st.session_state[f"{framework}_messages"][-1]["role"] == "assistant": | |
| with messages_container: | |
| with st.chat_message("user"): | |
| st.write(prompt) | |
| with st.chat_message("assistant"): | |
| with st.spinner("Thinking..."): | |
| try: | |
| ai_response = model.get_response( | |
| query_str=prompt, | |
| chat_history=st.session_state[f"{framework}_chat_history"], | |
| ) | |
| # when streaming, the response format is gone | |
| # ai_response = model.get_stream_response( | |
| # query_str=prompt, | |
| # chat_history=st.session_state[f"{framework}_chat_history"], | |
| # ) | |
| except Exception as e: | |
| ai_response = f"An error occurred: {e}" | |
| st.write(ai_response) | |
| # response = st.write_stream(ai_response) | |
| st.session_state[f"{framework}_messages"].append( | |
| {"role": "assistant", "content": ai_response} | |
| ) | |
| st.session_state[f"{framework}_chat_history"].append( | |
| ChatMessage.from_str(role="assistant", content=ai_response) | |
| ) | |