mirror of
https://github.com/Aider-AI/aider.git
synced 2025-06-01 18:25:00 +00:00
refactor: Modify response content handling and reasoning removal logic
This commit is contained in:
parent
4f8c52f09e
commit
47e91e943c
3 changed files with 21 additions and 16 deletions
|
@ -1324,7 +1324,7 @@ class Coder:
|
|||
exhausted = True
|
||||
break
|
||||
|
||||
self.multi_response_content = self.get_multi_response_content()
|
||||
self.multi_response_content = self.get_multi_response_content_in_progress()
|
||||
|
||||
if messages[-1]["role"] == "assistant":
|
||||
messages[-1]["content"] = self.multi_response_content
|
||||
|
@ -1344,7 +1344,10 @@ class Coder:
|
|||
self.live_incremental_response(True)
|
||||
self.mdstream = None
|
||||
|
||||
self.partial_response_content = self.get_multi_response_content(True)
|
||||
self.partial_response_content = self.get_multi_response_content_in_progress(True)
|
||||
self.partial_response_content = self.main_model.remove_reasoning_content(
|
||||
self.partial_response_content
|
||||
)
|
||||
self.multi_response_content = ""
|
||||
|
||||
self.io.tool_output()
|
||||
|
@ -1731,7 +1734,7 @@ class Coder:
|
|||
self.mdstream.update(show_resp, final=final)
|
||||
|
||||
def render_incremental_response(self, final):
|
||||
return self.get_multi_response_content()
|
||||
return self.get_multi_response_content_in_progress()
|
||||
|
||||
def calculate_and_show_tokens_and_cost(self, messages, completion=None):
|
||||
prompt_tokens = 0
|
||||
|
@ -1854,22 +1857,14 @@ class Coder:
|
|||
self.message_tokens_sent = 0
|
||||
self.message_tokens_received = 0
|
||||
|
||||
def get_multi_response_content(self, final=False):
|
||||
def get_multi_response_content_in_progress(self, final=False):
|
||||
cur = self.multi_response_content or ""
|
||||
new = self.partial_response_content or ""
|
||||
|
||||
if new.rstrip() != new and not final:
|
||||
new = new.rstrip()
|
||||
|
||||
res = cur + new
|
||||
|
||||
if self.main_model.remove_reasoning:
|
||||
pattern = (
|
||||
f"<{self.main_model.remove_reasoning}>.*?</{self.main_model.remove_reasoning}>"
|
||||
)
|
||||
res = re.sub(pattern, "", res, flags=re.DOTALL).strip()
|
||||
|
||||
return res
|
||||
return cur + new
|
||||
|
||||
def get_rel_fname(self, fname):
|
||||
try:
|
||||
|
|
|
@ -17,10 +17,10 @@ class WholeFileCoder(Coder):
|
|||
try:
|
||||
return self.get_edits(mode="diff")
|
||||
except ValueError:
|
||||
return self.get_multi_response_content()
|
||||
return self.get_multi_response_content_in_progress()
|
||||
|
||||
def get_edits(self, mode="update"):
|
||||
content = self.get_multi_response_content()
|
||||
content = self.get_multi_response_content_in_progress()
|
||||
|
||||
chat_files = self.get_inchat_relative_files()
|
||||
|
||||
|
|
|
@ -565,6 +565,14 @@ class Model(ModelSettings):
|
|||
res = litellm.completion(**kwargs)
|
||||
return hash_object, res
|
||||
|
||||
def remove_reasoning_content(self, res):
|
||||
if not self.remove_reasoning:
|
||||
return res
|
||||
|
||||
pattern = f"<{self.remove_reasoning}>.*?</{self.remove_reasoning}>"
|
||||
res = re.sub(pattern, "", res, flags=re.DOTALL).strip()
|
||||
return res
|
||||
|
||||
def simple_send_with_retries(self, messages):
|
||||
from aider.exceptions import LiteLLMExceptions
|
||||
|
||||
|
@ -583,7 +591,9 @@ class Model(ModelSettings):
|
|||
_hash, response = self.send_completion(**kwargs)
|
||||
if not response or not hasattr(response, "choices") or not response.choices:
|
||||
return None
|
||||
return response.choices[0].message.content
|
||||
res = response.choices[0].message.content
|
||||
return self.remove_reasoning_content(res)
|
||||
|
||||
except litellm_ex.exceptions_tuple() as err:
|
||||
ex_info = litellm_ex.get_ex_info(err)
|
||||
print(str(err))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue