You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

main.py 1.2 kB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import asyncio
  2. import streamlit as st
  3. from agent import Agent
  4. def main() -> None:
  5. st.set_page_config(page_title="AI Chat Assistant", page_icon="🤖")
  6. st.title("AI Chat Assistant 🤖")
  7. # adding agent object to session state to persist across sessions
  8. # stramlit reruns the script on every user interaction
  9. if "agent" not in st.session_state:
  10. st.session_state["agent"] = Agent()
  11. # initialize chat history
  12. if "messages" not in st.session_state:
  13. st.session_state["messages"] = []
  14. # displying chat history messages
  15. for message in st.session_state["messages"]:
  16. with st.chat_message(message["role"]):
  17. st.markdown(message["content"])
  18. prompt = st.chat_input("Type a message...")
  19. if prompt:
  20. st.session_state["messages"].append({"role": "user", "content": prompt})
  21. with st.chat_message("user"):
  22. st.markdown(prompt)
  23. response = asyncio.run(st.session_state["agent"].chat(prompt))
  24. st.session_state["messages"].append({"role": "assistant", "content": response})
  25. with st.chat_message("assistant"):
  26. st.markdown(response)
  27. if __name__ == "__main__":
  28. main()