Spaces:
Sleeping
Sleeping
File size: 1,342 Bytes
eb4b18c | 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 | import streamlit as st
from langchain_core.chat_history import InMemoryChatMessageHistory
from langchain_core.runnables.history import RunnableWithMessageHistory
from langchain_aws import ChatBedrock
llm = ChatBedrock(
model="anthropic.claude-3-sonnet-20240229-v1:0",
model_kwargs=dict(temperature=0),
# other params...
)
store = {} # memory is maintained outside the chain
def get_session_history(session_id: str) -> InMemoryChatMessageHistory:
if session_id not in store:
store[session_id] = InMemoryChatMessageHistory()
return store[session_id]
chain = RunnableWithMessageHistory(llm, get_session_history)
# Streamlit app starts here
st.title("Chat with AI")
session_id = st.text_input("Enter your session ID:", "1")
user_input = st.text_area("You:", height=100)
# Initialize session state for messages if it doesn't exist
if 'messages' not in st.session_state:
st.session_state.messages = []
if st.button("Send"):
response = chain.invoke(user_input, config={"configurable": {"session_id": session_id}})
# Display assistant response in chat format
with st.chat_message("assistant"):
st.markdown(response)
# Add assistant response to chat history
st.session_state.messages.append({"role": "assistant", "content": response}) |