ChatBot-10 / Chatbot /chatbot_engine.py
hira880's picture
Upload 23 files
faa2f0c verified
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