Added ChatGPT.add_to_chat() method to add messages that will be sent later and updated example.py

This commit is contained in:
Julian Müller (ChaoticByte) 2023-03-09 17:16:58 +01:00
parent b0f6ee2336
commit bbd0f64f54
2 changed files with 17 additions and 9 deletions

View file

@ -45,15 +45,14 @@ class ChatGPT:
# Create string used in header
self.auth = f"Bearer {api_key}"
# This list will contain all prior messages
self.message_history = []
self._message_history = []
self.model = model
def chat(self, message: Message) -> Message:
# check if the message parameter is the correct type
assert type(message) == Message, "message must be an instance of Message"
self.message_history.append(message)
'''Add a message to the message history & send it to ChatGPT. Returns the answer as a Message instance.'''
self.add_to_chat(message)
# create api_input from message_history & encode it
api_input = [m.to_api() for m in self.message_history]
api_input = [m.to_api() for m in self._message_history]
api_input_encoded = dumps(
{"model": self.model, "messages": api_input},
separators=(",", ":")).encode()
@ -75,8 +74,14 @@ class ChatGPT:
api_output_answer["content"] = api_output_answer["content"].strip("\n")
# convert to Message object
response_message = Message.from_api(api_output_answer)
self.message_history.append(response_message)
self._message_history.append(response_message)
return response_message
def add_to_chat(self, message: Message) -> Message:
'''Add a message to the message history without sending it to ChatGPT'''
# check if the message parameter is the correct type
assert type(message) == Message, "message must be an instance of Message"
self._message_history.append(message)
def clear_message_history(self):
self.message_history = []
self._message_history = []

View file

@ -5,14 +5,17 @@
from os import environ
from chatgpt_pyapi import ChatGPT
from chatgpt_pyapi import Models
from chatgpt_pyapi import Message
from chatgpt_pyapi import Models
from chatgpt_pyapi import Roles
API_KEY = environ["OPENAI_API_KEY"]
if __name__ == "__main__":
cgpt = ChatGPT(API_KEY, model=Models.GPT_35_TURBO_0301)
system_in = "Please provide the following answers as cynical as possible, but still correct."
cgpt.add_to_chat(Message(system_in, role=Roles.SYSTEM))
user_in = "Who are you?"
print(f"USER: {user_in}")
print(cgpt.chat(Message(user_in)).text)
@ -20,4 +23,4 @@ if __name__ == "__main__":
print(f"\nUSER: {user_in}")
print(cgpt.chat(Message(user_in)).text)
print("\nMessage History:")
[print(m.to_api()) for m in cgpt.message_history]
[print(m.to_api()) for m in cgpt._message_history]