diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index 00151de74..9db3318bc 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -40,6 +40,7 @@ def wrap_fence(name): class Coder: + client = None abs_fnames = None repo = None last_aider_commit_hash = None @@ -479,6 +480,7 @@ class Coder: except ExhaustedContextWindow: exhausted = True except openai.BadRequestError as err: + dump(err) if "maximum context length" in str(err): exhausted = True else: diff --git a/aider/sendchat.py b/aider/sendchat.py index a1b5b767d..9419de7b9 100644 --- a/aider/sendchat.py +++ b/aider/sendchat.py @@ -6,13 +6,9 @@ import openai import requests # from diskcache import Cache -from openai import ( - APIConnectionError, - APIError, - InternalServerError, - RateLimitError, - Timeout, -) +from openai import APIConnectionError, InternalServerError, RateLimitError + +from aider.dump import dump # noqa: F401 CACHE_PATH = "~/.aider.send.cache.v1" CACHE = None @@ -22,8 +18,6 @@ CACHE = None @backoff.on_exception( backoff.expo, ( - Timeout, - APIError, InternalServerError, RateLimitError, APIConnectionError, diff --git a/tests/test_coder.py b/tests/test_coder.py index 4d1d50319..bcc4c7446 100644 --- a/tests/test_coder.py +++ b/tests/test_coder.py @@ -331,18 +331,21 @@ class TestCoder(unittest.TestCase): # both files should still be here self.assertEqual(len(coder.abs_fnames), 2) - @patch("aider.coders.base_coder.openai.ChatCompletion.create") - def test_run_with_invalid_request_error(self, mock_chat_completion_create): + def test_run_with_invalid_request_error(self): with ChdirTemporaryDirectory(): # Mock the IO object mock_io = MagicMock() - # Initialize the Coder object with the mocked IO and mocked repo - coder = Coder.create(models.GPT4, None, mock_io) + mock_client = MagicMock() - # Set up the mock to raise InvalidRequestError - mock_chat_completion_create.side_effect = openai.BadRequestError( - "Invalid request", "param" + # Initialize the Coder object with the mocked IO and mocked repo + coder = Coder.create(models.GPT4, None, mock_io, client=mock_client) + + # Set up the mock to raise + mock_client.chat.completions.create.side_effect = openai.BadRequestError( + message="Invalid request", + response=MagicMock(), + body=None, ) # Call the run method and assert that InvalidRequestError is raised