import re import unicodedata import streamlit as st from generator import generate_response from scraper import get_stock_info st.title("株価お知らせBot") stock_code = st.text_input("株コード", placeholder="株コード", max_chars=4, help='4桁の数字') if "content" not in st.session_state: st.write("はじめに、株コードを指定してください。") if st.button("株決定"): content = get_stock_info(stock_code) content = unicodedata.normalize('NFKD', content) st.session_state.content = re.sub('[\r\t\n]+', ' ', content) # メッセージがない時 if "messages" not in st.session_state.keys(): st.session_state.messages = [{"role": "assistant", "content": "何か御用ですか?"}] # チャット内容の表示 for message in st.session_state.messages: with st.chat_message(message["role"]): st.write(message["content"]) # ユーザーの質問 if prompt := st.chat_input(): st.session_state.messages.append({"role": "user", "content": prompt}) with st.chat_message("user"): st.write(prompt) # AIによる回答 if st.session_state.messages[-1]["role"] != "assistant": with st.chat_message("assistant"): with st.spinner("考え中.."): response = generate_response(st, prompt) st.write(response) message = {"role": "assistant", "content": response} st.session_state.messages.append(message)