diff --git a/.gitignore b/.gitignore index 4216b9c5d..7767cef8f 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ _site .jekyll-cache/ .jekyll-metadata aider/__version__.py +.venv/ \ No newline at end of file diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index df09c6aa4..23cc0f7ec 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -1399,6 +1399,7 @@ class Coder: self.stream, temp, extra_headers=model.extra_headers, + extra_body=model.extra_body, max_tokens=model.max_tokens, ) self.chat_completion_call_hashes.append(hash_object.hexdigest()) diff --git a/aider/models.py b/aider/models.py index 3f7b6d9c6..cae1defbd 100644 --- a/aider/models.py +++ b/aider/models.py @@ -74,6 +74,7 @@ class ModelSettings: reminder: str = "user" examples_as_sys_msg: bool = False extra_headers: Optional[dict] = None + extra_body: Optional[dict] = None max_tokens: Optional[int] = None cache_control: bool = False caches_by_default: bool = False diff --git a/aider/sendchat.py b/aider/sendchat.py index 1ac34f9ab..6678b5ed2 100644 --- a/aider/sendchat.py +++ b/aider/sendchat.py @@ -53,6 +53,7 @@ def send_completion( stream, temperature=0, extra_headers=None, + extra_body=None, max_tokens=None, ): from aider.llm import litellm @@ -71,6 +72,8 @@ def send_completion( kwargs["tool_choice"] = {"type": "function", "function": {"name": function["name"]}} if extra_headers is not None: kwargs["extra_headers"] = extra_headers + if extra_body is not None: + kwargs["extra_body"] = extra_body if max_tokens is not None: kwargs["max_tokens"] = max_tokens @@ -93,7 +96,7 @@ def send_completion( @lazy_litellm_retry_decorator -def simple_send_with_retries(model_name, messages, extra_headers=None): +def simple_send_with_retries(model_name, messages, extra_headers=None, extra_body=None): try: kwargs = { "model_name": model_name, @@ -103,6 +106,8 @@ def simple_send_with_retries(model_name, messages, extra_headers=None): } if extra_headers is not None: kwargs["extra_headers"] = extra_headers + if extra_body is not None: + kwargs["extra_body"] = extra_body _hash, response = send_completion(**kwargs) return response.choices[0].message.content