File size: 1,428 Bytes
3c0c826
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8ac3f1e
3c0c826
 
 
 
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
40
41
42
43
44
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)