오지's blog

streamlit에서 chat_input 밑에 버튼을 추가하는 방법 본문

개발노트/Python

streamlit에서 chat_input 밑에 버튼을 추가하는 방법

잡스러운노트, 잡스노트 2024. 11. 14. 17:13
728x90
반응형
from streamlit_extras.stylable_container import stylable_container
import streamlit as st


st.title("Chat with the documents")

if "messages" not in st.session_state:
    st.session_state["messages"] = []


def generate_response(prompt):
    return f"This is a response to: {prompt}", 0, 0, 0


for message in st.session_state["messages"][1:]:
    with st.chat_message(message["role"]):
        st.markdown(message["content"])

if prompt := st.chat_input("Type your message..."):
    st.session_state["messages"].append({"role": "user", "content": prompt})
    st.chat_message("user").write(prompt)

    with st.spinner("Thinking..."):
        (
            full_response,
            total_tokens,
            prompt_tokens,
            completion_tokens,
        ) = generate_response(prompt)

    st.chat_message("assistant").write(full_response)
    st.session_state["messages"].append({"role": "assistant", "content": full_response})


with stylable_container(
        key="bottom_content",
        css_styles="""
        {
            position: fixed;
            bottom: 120px;  /* 버튼 위치 조정 */
            width: 100%;
            display: flex;
            justify-content: center;  /* 버튼 중앙 정렬 */
            z-index: 10;  /* 버튼 우선 순위 설정 */
        }
    """,
):
    if st.button(' :memo: 보고서 챗봇 전환'):
        report_chat_bot = os.path.join(os.getcwd(), "pages", "app_report.py")
        print(report_chat_bot)
        st.switch_page(report_chat_bot)

st.markdown(
    """
    <!-- 추가 HTML 콘텐츠를 여기에 추가할 수 있습니다 -->
    """,
    unsafe_allow_html=True,
)

 

아래코드를 입력하면 된다

with stylable_container(
        key="bottom_content",
        css_styles="""
        {
            position: fixed;
            bottom: 120px;  /* 버튼 위치 조정 */
            width: 100%;
            display: flex;
            justify-content: center;  /* 버튼 중앙 정렬 */
            z-index: 10;  /* 버튼 우선 순위 설정 */
        }
    """,
):
    if st.button(' :memo: 보고서 챗봇 전환'):
        report_chat_bot = os.path.join(os.getcwd(), "pages", "app_report.py")
        print(report_chat_bot)
        st.switch_page(report_chat_bot)

st.markdown(
    """
    <!-- 추가 HTML 콘텐츠를 여기에 추가할 수 있습니다 -->
    """,
    unsafe_allow_html=True,
)
Comments