| 25 | |
| 26 | |
| 27 | class Chat: |
| 28 | def __init__(self) -> None: |
| 29 | self.currentSession:List[Dict[str,str]] = [] |
| 30 | |
| 31 | def newSession(self) -> None: |
| 32 | self.currentSession = [] |
| 33 | |
| 34 | def sendMessages(self, message:str, GPT4=False) -> str: |
| 35 | |
| 36 | # logger.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>") |
| 37 | # logger.info(f"Sending message: \n{message}") |
| 38 | # logger.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>") |
| 39 | |
| 40 | self.currentSession.append({"role": "system", "content": SYSTEM_MESSAGE}) |
| 41 | self.currentSession.append({"role": "user", "content": message}) |
| 42 | while True: |
| 43 | try: |
| 44 | if GPT4: |
| 45 | openai.api_key = GPT4_API |
| 46 | response = openai.ChatCompletion.create( |
| 47 | # model="gpt-3.5-turbo-0301", |
| 48 | # model="gpt-3.5-turbo-0613", |
| 49 | # model="gpt-3.5-turbo", |
| 50 | model="gpt-4", |
| 51 | messages = self.currentSession, |
| 52 | temperature = 0, |
| 53 | top_p = 1.0 |
| 54 | ) |
| 55 | else: |
| 56 | response = openai.ChatCompletion.create( |
| 57 | model="gpt-3.5-turbo", |
| 58 | # model="gpt-3.5-turbo-0613", |
| 59 | # model="gpt-3.5-turbo", |
| 60 | # model="gpt-4", |
| 61 | messages = self.currentSession, |
| 62 | temperature = 0, |
| 63 | top_p = 1.0 |
| 64 | ) |
| 65 | break |
| 66 | except openai.error.RateLimitError as e1: |
| 67 | logger.warning("Trigger rate limit error, sleep 30 sec") |
| 68 | time.sleep(30) |
| 69 | except openai.InvalidRequestError as e2: |
| 70 | if e2.code == 'context_length_exceeded': |
| 71 | logger.error("Too long context, skip") |
| 72 | return "KeySentence: " |
| 73 | else: |
| 74 | logger.warning("Retry") |
| 75 | except openai.error.APIConnectionError as e3: |
| 76 | logger.warning("API Connection Error, Retry") |
| 77 | except openai.error.Timeout as e4: |
| 78 | logger.warning("Timeout, Retry") |
| 79 | except openai.error.APIError as e5: |
| 80 | if "502" in e5._message: |
| 81 | logger.warning("502 Bad Gateway, Retry") |
| 82 | logger.warning(traceback.format_exc()) |
| 83 | # response = openai.Completion.create( |
| 84 | # # model="gpt-3.5-turbo", |