Spaces:
Sleeping
Sleeping
Commit
·
82ce806
1
Parent(s):
178b25e
Upload 3 files
Browse files- pages/Chatbot.py +77 -0
- pages/ChatbotWebRead.py +4 -0
- pages/ImportFile.py +6 -2
pages/Chatbot.py
ADDED
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.vector_stores.faiss import FaissVectorStore
|
18 |
+
from llama_index.graph_stores import SimpleGraphStore
|
19 |
+
from llama_index.storage.docstore import SimpleDocumentStore
|
20 |
+
from llama_index.storage.index_store import SimpleIndexStore
|
21 |
+
import tiktoken
|
22 |
+
from logging import getLogger, StreamHandler, Formatter
|
23 |
+
|
24 |
+
import common
|
25 |
+
|
26 |
+
index_name = "./data/storage"
|
27 |
+
pkl_name = "./data/stored_documents.pkl"
|
28 |
+
|
29 |
+
custom_prompt = Prompt("""\
|
30 |
+
以下はこれまでの会話履歴と、ドキュメントを検索して回答する必要がある、ユーザーからの会話文です。
|
31 |
+
会話と新しい会話文に基づいて、検索クエリを作成します。回答は日本語で行います。
|
32 |
+
新しい会話文が挨拶の場合、挨拶を返してください。
|
33 |
+
新しい会話文が質問の場合、検索した結果の回答を返してください。
|
34 |
+
答えがわからない場合は正直にわからないと回答してください。
|
35 |
+
会話履歴:
|
36 |
+
{chat_history}
|
37 |
+
新しい会話文:
|
38 |
+
{question}
|
39 |
+
Search query:
|
40 |
+
""")
|
41 |
+
|
42 |
+
# # list of (human_message, ai_message) tuples
|
43 |
+
custom_chat_history = [
|
44 |
+
(
|
45 |
+
'こんにちは、アシスタント。これから質問に答えて下さい。',
|
46 |
+
'こんにちは。了解しました。'
|
47 |
+
)
|
48 |
+
]
|
49 |
+
chat_history = []
|
50 |
+
|
51 |
+
logging.basicConfig(level=logging.INFO)
|
52 |
+
logger = logging.getLogger("__name__")
|
53 |
+
logger.debug("調査用ログ")
|
54 |
+
|
55 |
+
common.check_login()
|
56 |
+
|
57 |
+
st.title("💬 Chatbot")
|
58 |
+
if "messages" not in st.session_state:
|
59 |
+
st.session_state["messages"] = [{"role": "assistant", "content": "お困りごとはございますか?"}]
|
60 |
+
|
61 |
+
for msg in st.session_state.messages:
|
62 |
+
st.chat_message(msg["role"]).write(msg["content"])
|
63 |
+
|
64 |
+
if prompt := st.chat_input():
|
65 |
+
st.session_state.messages.append({"role": "user", "content": prompt})
|
66 |
+
st.chat_message("user").write(prompt)
|
67 |
+
response = st.session_state.chat_engine.chat(prompt)
|
68 |
+
# response = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=st.session_state.messages)
|
69 |
+
msg = str(response)
|
70 |
+
st.session_state.messages.append({"role": "assistant", "content": msg})
|
71 |
+
st.chat_message("assistant").write(msg)
|
72 |
+
|
73 |
+
if st.button("リセット",use_container_width=True):
|
74 |
+
st.session_state.chat_engine.reset()
|
75 |
+
st.session_state.messages = [{"role": "assistant", "content": "お困りごとはございますか?"}]
|
76 |
+
logger.info("reset")
|
77 |
+
|
pages/ChatbotWebRead.py
CHANGED
@@ -19,6 +19,8 @@ from llama_index import ListIndex, SimpleWebPageReader,TrafilaturaWebReader
|
|
19 |
import tiktoken
|
20 |
from logging import getLogger, StreamHandler, Formatter
|
21 |
|
|
|
|
|
22 |
custom_prompt = Prompt("""\
|
23 |
以下はこれまでの会話履歴と、ドキュメントを検索して回答する必要がある、ユーザーからの会話文です。
|
24 |
会話と新しい会話文に基づいて、検索クエリを作成します。回答は日本語で行います。
|
@@ -39,6 +41,8 @@ logger = logging.getLogger("__name__")
|
|
39 |
logger.debug("調査用ログ")
|
40 |
|
41 |
|
|
|
|
|
42 |
st.title("💬 ChatbotWebRead")
|
43 |
if "webmessages" not in st.session_state:
|
44 |
st.session_state["webmessages"] = [{"role": "assistant", "content": "お困りごとはございますか?"}]
|
|
|
19 |
import tiktoken
|
20 |
from logging import getLogger, StreamHandler, Formatter
|
21 |
|
22 |
+
import common
|
23 |
+
|
24 |
custom_prompt = Prompt("""\
|
25 |
以下はこれまでの会話履歴と、ドキュメントを検索して回答する必要がある、ユーザーからの会話文です。
|
26 |
会話と新しい会話文に基づいて、検索クエリを作成します。回答は日本語で行います。
|
|
|
41 |
logger.debug("調査用ログ")
|
42 |
|
43 |
|
44 |
+
common.check_login()
|
45 |
+
|
46 |
st.title("💬 ChatbotWebRead")
|
47 |
if "webmessages" not in st.session_state:
|
48 |
st.session_state["webmessages"] = [{"role": "assistant", "content": "お困りごとはございますか?"}]
|
pages/ImportFile.py
CHANGED
@@ -11,8 +11,10 @@ from llama_index import Prompt, SimpleDirectoryReader
|
|
11 |
|
12 |
from logging import getLogger, StreamHandler, Formatter
|
13 |
|
14 |
-
|
15 |
-
|
|
|
|
|
16 |
|
17 |
custom_prompt = Prompt("""\
|
18 |
以下はこれまでの会話履歴と、ドキュメントを検索して回答する必要がある、ユーザーからの会話文です。
|
@@ -33,6 +35,8 @@ logging.basicConfig(level=logging.INFO)
|
|
33 |
logger = logging.getLogger("__name__")
|
34 |
logger.debug("調査用ログ")
|
35 |
|
|
|
|
|
36 |
if "file_uploader_key" not in st.session_state:
|
37 |
st.session_state["file_uploader_key"] = 0
|
38 |
|
|
|
11 |
|
12 |
from logging import getLogger, StreamHandler, Formatter
|
13 |
|
14 |
+
import common
|
15 |
+
|
16 |
+
index_name = "./data/storage"
|
17 |
+
pkl_name = "./data/stored_documents.pkl"
|
18 |
|
19 |
custom_prompt = Prompt("""\
|
20 |
以下はこれまでの会話履歴と、ドキュメントを検索して回答する必要がある、ユーザーからの会話文です。
|
|
|
35 |
logger = logging.getLogger("__name__")
|
36 |
logger.debug("調査用ログ")
|
37 |
|
38 |
+
common.check_login()
|
39 |
+
|
40 |
if "file_uploader_key" not in st.session_state:
|
41 |
st.session_state["file_uploader_key"] = 0
|
42 |
|