
from chatGPT import chatGPT # chatGPT.py file with class chatGPT
def __init__(self, api_key, model):
openai.api_key = api_key
self.model = model
self.messages = list()
self.responses = list()
self.completions = list()
self._file_default = "chatbot_data.json"
def message_post(self, prompt):
self.messages.append({"role": "user", "content": prompt})
return self.messages
def generate_response(self):
completion = openai.ChatCompletion.create(
model=self.model,
messages=self.messages
)
response = completion.choices[0].message.content
self.messages.append({"role": "assistant", "content": response})
self.response = response
self.responses.append(response)
self.completion = completion
self.completions.append(completion)
return self.response
def reset(self):
self.messages = list()
self.responses = list()
self.completions = list()
def save_data(self, file_path = None):
data = {
"responses": self.responses,
"completions": self.completions,
"messages": self.messages
}
if file_path is None:
file_path = self._file_default
with open(file_path, "w") as f:
json.dump(data, f)
def load_data(self, file_path = None):
if file_path is None:
file_path = self._file_default
with open(file_path, "r") as f:
data = json.load(f)
responses = data["responses"]
completions = data["completions"]
messages = data["messages"]
return responses, completions, messages
def load_messages(self, messages):
self.messages = messages
def list_messages(self):
# list all messages
for e in self.messages:
print(f"role: {e['role']}")
print(f"content:\n{e['content']}")
print(f"\n")
class chatGPT:
def __init__(self, api_key, model):
openai.api_key = api_key
self.model = model
self.messages = list()
self.responses = list()
self.completions = list()
self._file_default = "chatbot_data.json"
def message_post(self, prompt):
self.messages.append({"role": "user", "content": prompt})
return self.messages
def generate_response(self):
completion = openai.ChatCompletion.create(
model=self.model,
messages=self.messages
)
response = completion.choices[0].message.content
self.messages.append({"role": "assistant", "content": response})
self.response = response
self.responses.append(response)
self.completion = completion
self.completions.append(completion)
return self.response
def reset(self):
self.messages = list()
self.responses = list()
self.completions = list()
def save_data(self, file_path = None):
data = {
"responses": self.responses,
"completions": self.completions,
"messages": self.messages
}
if file_path is None:
file_path = self._file_default
with open(file_path, "w") as f:
json.dump(data, f)
def load_data(self, file_path = None):
if file_path is None:
file_path = self._file_default
with open(file_path, "r") as f:
data = json.load(f)
responses = data["responses"]
completions = data["completions"]
messages = data["messages"]
return responses, completions, messages
def load_messages(self, messages):
self.messages = messages
def list_messages(self):
# list all messages
for e in self.messages:
print(f"role: {e['role']}")
print(f"content:\n{e['content']}")
print(f"\n")
# initialize
my_chatbot = chatGPT(api_key=openai_api_key, model="gpt-3.5-turbo")
%%time
# your question
my_chatbot.message_post("Romania cities")
response = my_chatbot.generate_response()
print(response)
# Out
1. Bucharest
2. Cluj-Napoca
3. Timișoara
4. Iași
5. Craiova
6. Constanța
7. Galați
8. Brașov
9. Ploiești
10. Oradea
11. Arad
12. Sibiu
13. Bacău
14. Baia Mare
15. Buzău
16. Focșani
17. Suceava
18. Târgu Mureș
19. Bistrița
20. Satu Mare.
CPU times: total: 78.1 ms
Wall time: 40.7 s
# completion
my_chatbot.completion
[<OpenAIObject chat.completion id=chatcmpl-74O3WnmLwaz4zqvmTUs29Jvyg3IwT at 0x20060e0ae50> JSON: {
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "1. Bucharest\n2. Cluj-Napoca\n3. Timi\u0219oara\n4. Ia\u0219i\n5. Craiova\n6. Constan\u021ba\n7. Gala\u021bi\n8. Bra\u0219ov\n9. Ploie\u0219ti\n10. Oradea\n11. Arad\n12. Sibiu\n13. Bac\u0103u\n14. Baia Mare\n15. Buz\u0103u\n16. Foc\u0219ani\n17. Suceava\n18. T\u00e2rgu Mure\u0219\n19. Bistri\u021ba\n20. Satu Mare.",
"role": "assistant"
}
}
],
"created": 1681280138,
"id": "chatcmpl-74O3WnmLwaz4zqvmTUs29Jvyg3IwT",
"model": "gpt-3.5-turbo-0301",
"object": "chat.completion",
"usage": {
"completion_tokens": 132,
"prompt_tokens": 11,
"total_tokens": 143
}
# save in a file responses, completions, messages
my_chatbot.save_data()
# reset - responses, completions, messages
my_chatbot.reset()
my_chatbot.responses, my_chatbot.completions, my_chatbot.messages
# load from a file responses, completions, messages
responses, completions, messages = my_chatbot.load_data()
responses, completions, messages
# load messages from default file
my_chatbot.load_messages(messages)
%%time
# continue with a follow-up question
my_chatbot.message_post("monuments in above cities")
response = my_chatbot.generate_response()
print(response)
# Out
Here are some of the notable monuments in the above mentioned cities in Romania:
1. Bucharest: Palace of the Parliament, Romanian Athenaeum, Triumphal Arch, Stavropoleos Monastery
2. Cluj-Napoca: St. Michael's Church, Matthias Corvinus Monument, National History Museum of Transylvania, Banffy Palace
3. Timișoara: Huniade Castle, Millennium Church, Victory Square, Timișoara Orthodox Cathedral
4. Iași: Palace of Culture, Golia Monastery, Three Hierarchs Monastery, Union Square
5. Craiova: Nicolae Romanescu Park, Saint Demetrius Cathedral, Craiova Art Museum, Alexandru Ioan Cuza Park
6. Constanța: The Roman Mosaic, Carol I Mosque, The Casino, Genoese Lighthouse.
7. Galați: Natural Sciences Museum, Mihai Eminescu Park, Galati Public Garden, The Sulina channel lighthouse
8. Brașov: Black Church, Mount Tâmpa, The White Tower, The Rope Street
9. Ploiești: Oil Museum, Clock Museum, Memorial House of Nichita Stănescu, Art Museum Ploiești.
10. Oradea: Unirii Square, The Black Eagle Palace, Oradea Fortress, The Moon Church
11. Arad: Holy Trinity Cathedral, Ioan Slavici Theatre, Palace of Culture, Reconciliation Park
12. Sibiu: The Council Tower, The Brukenthal Palace, The Bridge of Lies, The Lutheran Evangelical Cathedral
13. Bacău: Stephen the Great Monument, Bacau Natural Sciences Museum, Saint John the Baptist Church, Mihail Sadoveanu Memorial House
14. Baia Mare: Merry Cemetery of Saschiz, Baia Mare Ethnographic Museum, The Baia Mare Art Museum, Baia Mare City Hall.
15. Buzău: The Communal Palace, Saint Eligius Church, The Municipal Park, The Waterfall of Lopata
16. Focșani: Focșani History Museum, Saint Nicholas Church, The Heroes Memorial, Zoological Park Focșani
17. Suceava: The Fortress of Suceava, The Painted Monasteries of Bucovina, Stefan cel Mare Statue, The History Museum of Bucovina
18. Târgu Mureș: Culture Palace, Teleki-Bolyai Library, Piarist Church, Reformed Church
19. Bistrița: The Lutheran Church, Bistrița Museum Complex, The Main Square, The Mill.
20. Satu Mare: Satu Mare Roman-Catholic Cathedral, The Decebal Victory Monument, The Firemen’s Tower, The Terry Guard Tower.
CPU times: total: 15.6 ms
Wall time: 2min 10s
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
2 | |
2 | |
2 | |
1 | |
1 | |
1 |