PizzAI/frontend/chatgpt_wrap.py

101 lines
3.1 KiB
Python

import random
from dupa import dupa
import openai
class ChatGPTWrap:
def __init__(self, use_chatgpt_placeholder = False):
self.use_chatgpt_placeholder = use_chatgpt_placeholder
# true chatgpt
if not use_chatgpt_placeholder:
print("Initializing ChatGPT... ", end="")
with open("system_instructions.txt", "r", encoding="utf-8") as f:
self.system_inst_template = f.read()
#### true openai chat gpt initialization stuff below (everything that needs to be done only once) ####
#raise NotImplementedError("True ChatGPT is not implemented yet!")
self.client = openai.OpenAI(api_key=dupa)
print("Done!")
# placeholder chatgpt
else:
print("Using ChatGPT placeholder!")
self.message_idx = 0
def init_order(self, phone_number, order_items, delivery_address, payment_method):
self.phone_number = phone_number
self.order_items = order_items
self.delivery_address = delivery_address
self.payment_method = payment_method
# true chatgpt
if not self.use_chatgpt_placeholder:
# generate system instructions from template
self.system_inst = self.system_inst_template.format(
phone_number = self.phone_number,
order_items = self.order_items,
delivery_location = self.delivery_address,
payment_method = self.payment_method
)
print("System:")
print(self.system_inst)
#### true openai chat gpt system instructions initialization stuff below ####
##### (everything that needs to be done each assistant session like some chat gpt conversation cleanup) ####
self.chat_history = [{
"role": "system",
"content": self.system_inst
}]
def get_response(self, input_message):
# true chatgpt
if not self.use_chatgpt_placeholder:
#### true openai chat gpt response stuff below ####
self.chat_history.append(
{"role": "user", "content": input_message},
)
chat = self.client.chat.completions.create(
model="ft:gpt-3.5-turbo-1106:personal::8QBgBttE",
messages=self.chat_history,
temperature=0.57,
max_tokens=256,
top_p=1,
frequency_penalty=0,
presence_penalty=0
)
reply = chat.choices[0].message.content
self.chat_history.append(
{"role": "assistant", "content": reply}
)
return reply
# placeholder chatgpt
else:
choices = (
self.phone_number,
self.order_items,
self.delivery_address,
self.payment_method
)
self.message_idx += 1
return f"czat dżi pi ti plejsholder {random.choice(choices)}{' CALLEND' if self.message_idx == 3 else ''}"