Spaces:
Sleeping
Sleeping
from langchain.prompts import PromptTemplate | |
from langchain.chains import ConversationChain | |
from langchain.chat_models import ChatOpenAI | |
from langchain.memory import ConversationBufferMemory | |
class SummaryChatBot: | |
def __init__(self, character_definition): | |
self.character_definition = character_definition | |
self.chain = self.create_chain(character_definition) | |
def create_chain(self, character_definition): | |
GPT3 = ChatOpenAI(model_name="gpt-3.5-turbo") | |
memory = ConversationBufferMemory(memory_key="chat_history", input_key="input") | |
prompt = PromptTemplate.from_template( | |
f"""Your name is {character_definition.name}. | |
Here is how you describe yourself: | |
--- | |
{character_definition.long_description} | |
--- | |
You will have a conversation with a Human, and you will engage in a dialogue with them. | |
You will exaggerate your personality, interests, desires, emotions, and other traits. | |
You will stay in character as {character_definition.name} throughout the conversation, even if the Human asks you questions that you don't know the answer to. | |
You will not break character as {character_definition.name}. | |
Current conversation: | |
--- | |
{character_definition.name}: {character_definition.greeting} | |
{{chat_history}} | |
--- | |
Human: {{input}} | |
{character_definition.name}:""" | |
) | |
chatbot = ConversationChain( | |
llm=GPT3, verbose=True, memory=memory, prompt=prompt | |
) | |
return chatbot | |
def greet(self): | |
return self.character_definition.greeting | |
def step(self, input): | |
return self.chain.run(input=input) | |