martinseligman / chat_agent.py
deter3's picture
Update chat_agent.py
610fc84
from langchain.agents import Tool
from langchain.memory import ConversationBufferMemory ,ConversationBufferWindowMemory
from langchain.chat_models import ChatOpenAI
from langchain.agents import initialize_agent
from llama_index import GPTSimpleVectorIndex
import os
from langchain.schema import (
SystemMessage
)
class ChatBot:
def __init__(self, memory, agent_chain):
self.memory = memory
self.agent = agent_chain
def create_chatbot(model_name, seed_memory=None):
# search = GoogleSearchAPIWrapper()
# tools = [
# Tool(
# name="Current Search",
# func=search.run,
# description="useful for all question that asks about live events",
# ),
# Tool(
# name="Topic Search",
# func=search.run,
# description="useful for all question that are related to a particular topic, product, concept, or service",
# )
# ]
index = GPTSimpleVectorIndex.load_from_disk('martin.json')
query_mode ="svm"
tools = [
Tool(
name="GPT Index",
func=lambda q: str(index.query(q,vector_store_query_mode=query_mode)),
description="useful for when you want to answer questions about Martin Seligman and positive psychonogy related. The input to this tool should be a complete english sentence.",
return_direct=True
),
]
# messages = [
# SystemMessage(content="You are Martin Seligman. You use a tone that is warm and kind.")
# ]
#memory = ConversationBufferMemory(memory_key="chat_history")
memory = seed_memory if seed_memory is not None else ConversationBufferWindowMemory( k=4 ,memory_key="chat_history")
#memory = seed_memory if seed_memory is not None else ConversationBufferMemory(memory_key="chat_history")
chat = ChatOpenAI(temperature=0, model_name=model_name)
agent_chain = initialize_agent(tools, chat, agent="conversational-react-description", verbose=True, memory=memory)
return ChatBot(memory, agent_chain)