Spaces:
Sleeping
Sleeping
| from Chatbot.document_processing import load_documents_from_directory | |
| from llama_index import VectorStoreIndex, StorageContext, Document | |
| import openai | |
| import os | |
| from dotenv import load_dotenv # python-dotenvを使用 | |
| from langchain_community.chat_models import ChatOpenAI | |
| from langchain.memory import ChatMessageHistory | |
| from langchain.schema import HumanMessage | |
| # .envファイルから環境変数を読み込む | |
| load_dotenv() | |
| # 環境変数からOpenAI APIキーを読み込む | |
| openai.api_key = os.getenv('OPENAI_API_KEY') | |
| class ChatbotEngine: | |
| def __init__(self, text_dir): | |
| # 既存の初期化処理... | |
| self.documents = load_documents_from_directory(text_dir) | |
| self.index = self.create_index(self.documents) | |
| self.chat_history = ChatMessageHistory() # チャット履歴を管理するインスタンスを追加 | |
| def create_index(self, documents): | |
| # 既存のインデックス作成処理... | |
| indexed_documents = [Document(text=doc["text"], metadata=doc["metadata"]) for doc in documents] | |
| index = VectorStoreIndex.from_documents(indexed_documents) | |
| index.storage_context.persist() | |
| return index | |
| def query(self, customer_question): | |
| # 質問内容をコンソールに出力 | |
| print(f"受け取った質問: {customer_question}") | |
| print(f"質問内容: {self.chat_history.messages}") | |
| # 会話の履歴にユーザーのメッセージを追加 | |
| self.chat_history.messages.append(HumanMessage(content=customer_question)) | |
| query_prompt = f"質問内容: '{customer_question}' に対して、読み込んだ情報を基に丁寧に回答してください。" | |
| response = self.index.as_query_engine().query(query_prompt) | |
| # 解答も引き続きコンソールに出力 | |
| print(f"解答: {response}") | |
| return response |