Skip to content

Commit 1bc1ed0

Browse files
authored
Merge pull request #204 from IINemo/fix/openai_chat
OpenAI chat try-except added, prompt fixed
2 parents 1540e8a + 51cc49e commit 1bc1ed0

File tree

1 file changed

+24
-4
lines changed

1 file changed

+24
-4
lines changed

src/lm_polygraph/utils/openai_chat.py

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
import openai
22
import json
33
import os
4+
import time
5+
import logging
46

57
from filelock import FileLock
68

79

10+
log = logging.getLogger()
11+
12+
813
class OpenAIChat:
914
"""
1015
Allows for the implementation of a singleton class to chat with OpenAI model for dataset marking.
@@ -50,12 +55,11 @@ def ask(self, message: str) -> str:
5055
"Please specify OPENAI_KEY in environment parameters."
5156
)
5257
messages = [
53-
{"role": "system", "content": "You are a intelligent assistant."},
58+
{"role": "system", "content": "You are an intelligent assistant."},
5459
{"role": "user", "content": message},
5560
]
56-
chat = openai.ChatCompletion.create(
57-
model=self.openai_model, messages=messages
58-
)
61+
chat = self._send_request(messages)
62+
5963
reply = chat.choices[0].message.content
6064

6165
# add reply to cache
@@ -76,3 +80,19 @@ def ask(self, message: str) -> str:
7680
return ""
7781

7882
return reply
83+
84+
def _send_request(self, messages):
85+
sleep_time_values = (5, 10, 30, 60, 120)
86+
for i in range(len(sleep_time_values)):
87+
try:
88+
return openai.ChatCompletion.create(
89+
model=self.openai_model, messages=messages
90+
)
91+
except Exception as e:
92+
sleep_time = sleep_time_values[i]
93+
log.info(
94+
f"Request to OpenAI failed with exception: {e}. Retry #{i}/5 after {sleep_time} seconds."
95+
)
96+
time.sleep(sleep_time)
97+
98+
return openai.ChatCompletion.create(model=self.openai_model, messages=messages)

0 commit comments

Comments
 (0)