|
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) |
|
) |
|
|
|
|
|
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"], |
|
) |
|
|
|
|
|
|
|
|
|
|
|
except Exception as e: |
|
ai_response = f"An error occurred: {e}" |
|
|
|
st.write(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) |
|
) |
|
|