naotakigawa commited on
Commit
1301e19
·
1 Parent(s): 047ea71

webread修正

Browse files
Files changed (1) hide show
  1. pages/ChatbotWebRead.py +30 -40
pages/ChatbotWebRead.py CHANGED
@@ -1,24 +1,18 @@
1
 
2
  import streamlit as st
3
- import os
4
- import pickle
5
  import faiss
6
  import logging
7
 
8
- from multiprocessing import Lock
9
- from multiprocessing.managers import BaseManager
10
  from llama_index.callbacks import CallbackManager, LlamaDebugHandler
11
- from llama_index import VectorStoreIndex, Document,Prompt, SimpleDirectoryReader, ServiceContext, StorageContext, load_index_from_storage
12
  from llama_index.chat_engine import CondenseQuestionChatEngine;
13
  from llama_index.node_parser import SimpleNodeParser
14
  from llama_index.langchain_helpers.text_splitter import TokenTextSplitter
15
  from llama_index.constants import DEFAULT_CHUNK_OVERLAP
16
  from llama_index.response_synthesizers import get_response_synthesizer
17
- from llama_index import ListIndex, SimpleWebPageReader,TrafilaturaWebReader
18
 
19
  import tiktoken
20
- from logging import getLogger, StreamHandler, Formatter
21
-
22
  import common
23
 
24
  custom_prompt = Prompt("""\
@@ -44,50 +38,32 @@ logger.debug("調査用ログ")
44
  common.check_login()
45
 
46
  st.title("💬 ChatbotWebRead")
47
- if st.button("リセット",use_container_width=True):
48
- st.session_state.web_chat_engine.reset()
49
- st.session_state.webmessages = [{"role": "assistant", "content": "お困りごとはございますか?"}]
50
- st.experimental_rerun()
51
- logger.info("reset")
52
-
53
- if "webmessages" not in st.session_state:
54
- st.session_state["webmessages"] = [{"role": "assistant", "content": "お困りごとはございますか?"}]
55
-
56
- for msg in st.session_state.webmessages:
57
- st.chat_message(msg["role"]).write(msg["content"])
58
-
59
- if prompt := st.chat_input():
60
- st.session_state.webmessages.append({"role": "user", "content": prompt})
61
- st.chat_message("user").write(prompt)
62
- response = st.session_state.web_chat_engine.chat(prompt)
63
- msg = str(response)
64
- st.session_state.webmessages.append({"role": "assistant", "content": msg})
65
- st.chat_message("assistant").write(msg)
66
-
67
 
 
 
 
 
68
 
69
- def initialize_webindex():
70
- logger.info("initialize_web_index start")
71
  text_splitter = TokenTextSplitter(separator="。", chunk_size=1500
72
  , chunk_overlap=DEFAULT_CHUNK_OVERLAP
73
  , tokenizer=tiktoken.encoding_for_model("gpt-3.5-turbo").encode)
74
  node_parser = SimpleNodeParser(text_splitter=text_splitter)
75
- service_context = ServiceContext.from_defaults(node_parser=node_parser)
76
  d = 1536
77
  k=2
78
  faiss_index = faiss.IndexFlatL2(d)
79
  # デバッグ用
80
  llama_debug_handler = LlamaDebugHandler()
81
  callback_manager = CallbackManager([llama_debug_handler])
82
- service_context = ServiceContext.from_defaults(callback_manager=callback_manager)
83
 
84
  webDocuments = SimpleWebPageReader(html_to_text=True).load_data(
85
- ["https://www.stylez.co.jp/"]
86
  )
87
  logger.info(webDocuments)
88
  webIndex = ListIndex.from_documents(webDocuments,service_context=service_context)
89
  response_synthesizer = get_response_synthesizer(response_mode='compact')
90
- webQuery_engine = webIndex.as_query_engine(response_synthesizer=response_synthesizer)
91
  st.session_state.web_chat_engine = CondenseQuestionChatEngine.from_defaults(
92
  query_engine=webQuery_engine,
93
  condense_question_prompt=custom_prompt,
@@ -95,10 +71,24 @@ def initialize_webindex():
95
  verbose=True
96
  )
97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98
 
99
- if __name__ == "__main__":
100
- # init the global index
101
- logger.info("main start")
102
- if "web_chat_engine" not in st.session_state:
103
- initialize_webindex()
104
- logger.info("initializing index...")
 
1
 
2
  import streamlit as st
 
 
3
  import faiss
4
  import logging
5
 
 
 
6
  from llama_index.callbacks import CallbackManager, LlamaDebugHandler
7
+ from llama_index import Prompt, ServiceContext
8
  from llama_index.chat_engine import CondenseQuestionChatEngine;
9
  from llama_index.node_parser import SimpleNodeParser
10
  from llama_index.langchain_helpers.text_splitter import TokenTextSplitter
11
  from llama_index.constants import DEFAULT_CHUNK_OVERLAP
12
  from llama_index.response_synthesizers import get_response_synthesizer
13
+ from llama_index import ListIndex, SimpleWebPageReader
14
 
15
  import tiktoken
 
 
16
  import common
17
 
18
  custom_prompt = Prompt("""\
 
38
  common.check_login()
39
 
40
  st.title("💬 ChatbotWebRead")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
 
42
+ URLtext = st.text_input(
43
+ "読み込むURLを入力してください",
44
+ placeholder="https://",
45
+ )
46
 
47
+ if st.button("URL reading",use_container_width=True):
 
48
  text_splitter = TokenTextSplitter(separator="。", chunk_size=1500
49
  , chunk_overlap=DEFAULT_CHUNK_OVERLAP
50
  , tokenizer=tiktoken.encoding_for_model("gpt-3.5-turbo").encode)
51
  node_parser = SimpleNodeParser(text_splitter=text_splitter)
 
52
  d = 1536
53
  k=2
54
  faiss_index = faiss.IndexFlatL2(d)
55
  # デバッグ用
56
  llama_debug_handler = LlamaDebugHandler()
57
  callback_manager = CallbackManager([llama_debug_handler])
58
+ service_context = ServiceContext.from_defaults(node_parser=node_parser,callback_manager=callback_manager)
59
 
60
  webDocuments = SimpleWebPageReader(html_to_text=True).load_data(
61
+ [URLtext]
62
  )
63
  logger.info(webDocuments)
64
  webIndex = ListIndex.from_documents(webDocuments,service_context=service_context)
65
  response_synthesizer = get_response_synthesizer(response_mode='compact')
66
+ webQuery_engine = webIndex.as_query_engine(response_synthesizer=response_synthesizer,service_context=service_context)
67
  st.session_state.web_chat_engine = CondenseQuestionChatEngine.from_defaults(
68
  query_engine=webQuery_engine,
69
  condense_question_prompt=custom_prompt,
 
71
  verbose=True
72
  )
73
 
74
+ if st.button("リセット",use_container_width=True,disabled = not URLtext):
75
+ st.session_state.web_chat_engine.reset()
76
+ st.session_state.webmessages = [{"role": "assistant", "content": "お困りごとはございますか?"}]
77
+ st.experimental_rerun()
78
+ logger.info("reset")
79
+
80
+ if "webmessages" not in st.session_state:
81
+ st.session_state["webmessages"] = [{"role": "assistant", "content": "お困りごとはございますか?"}]
82
+
83
+ for msg in st.session_state.webmessages:
84
+ st.chat_message(msg["role"]).write(msg["content"])
85
+
86
+ if prompt := st.chat_input(disabled = not URLtext):
87
+ st.session_state.webmessages.append({"role": "user", "content": prompt})
88
+ st.chat_message("user").write(prompt)
89
+ response = st.session_state.web_chat_engine.chat(prompt)
90
+ msg = str(response)
91
+ st.session_state.webmessages.append({"role": "assistant", "content": msg})
92
+ st.chat_message("assistant").write(msg)
93
+
94