diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index 8650e515c..366954ad9 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -1124,7 +1124,6 @@ class Coder: exhausted = False interrupted = False try: - # ai: replicate this try/except retry loop... while True: try: yield from self.send(messages, functions=self.functions) @@ -1137,7 +1136,6 @@ class Coder: self.io.tool_output(f"Retrying in {retry_delay:.1f} seconds...") time.sleep(retry_delay) continue - # ai: ... down to here except KeyboardInterrupt: interrupted = True break diff --git a/aider/sendchat.py b/aider/sendchat.py index 2c796e54a..86a065407 100644 --- a/aider/sendchat.py +++ b/aider/sendchat.py @@ -1,5 +1,6 @@ import hashlib import json +import time import backoff @@ -102,18 +103,27 @@ def send_completion( return hash_object, res -# ai: in this function! def simple_send_with_retries(model_name, messages, extra_params=None): - try: - kwargs = { - "model_name": model_name, - "messages": messages, - "functions": None, - "stream": False, - "extra_params": extra_params, - } + retry_delay = 0.125 + while True: + try: + kwargs = { + "model_name": model_name, + "messages": messages, + "functions": None, + "stream": False, + "extra_params": extra_params, + } - _hash, response = send_completion(**kwargs) - return response.choices[0].message.content - except AttributeError: - return + _hash, response = send_completion(**kwargs) + return response.choices[0].message.content + except retry_exceptions() as err: + print(str(err)) + retry_delay *= 2 + if retry_delay > RETRY_TIMEOUT: + break + print(f"Retrying in {retry_delay:.1f} seconds...") + time.sleep(retry_delay) + continue + except AttributeError: + return