mirror of
https://github.com/Aider-AI/aider.git
synced 2025-06-03 03:05: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
|
exhausted = True
|
||||||
break
|
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":
|
if messages[-1]["role"] == "assistant":
|
||||||
messages[-1]["content"] = self.multi_response_content
|
messages[-1]["content"] = self.multi_response_content
|
||||||
|
@ -1344,7 +1344,10 @@ class Coder:
|
||||||
self.live_incremental_response(True)
|
self.live_incremental_response(True)
|
||||||
self.mdstream = None
|
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.multi_response_content = ""
|
||||||
|
|
||||||
self.io.tool_output()
|
self.io.tool_output()
|
||||||
|
@ -1731,7 +1734,7 @@ class Coder:
|
||||||
self.mdstream.update(show_resp, final=final)
|
self.mdstream.update(show_resp, final=final)
|
||||||
|
|
||||||
def render_incremental_response(self, 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):
|
def calculate_and_show_tokens_and_cost(self, messages, completion=None):
|
||||||
prompt_tokens = 0
|
prompt_tokens = 0
|
||||||
|
@ -1854,22 +1857,14 @@ class Coder:
|
||||||
self.message_tokens_sent = 0
|
self.message_tokens_sent = 0
|
||||||
self.message_tokens_received = 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 ""
|
cur = self.multi_response_content or ""
|
||||||
new = self.partial_response_content or ""
|
new = self.partial_response_content or ""
|
||||||
|
|
||||||
if new.rstrip() != new and not final:
|
if new.rstrip() != new and not final:
|
||||||
new = new.rstrip()
|
new = new.rstrip()
|
||||||
|
|
||||||
res = cur + new
|
return 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
|
|
||||||
|
|
||||||
def get_rel_fname(self, fname):
|
def get_rel_fname(self, fname):
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -17,10 +17,10 @@ class WholeFileCoder(Coder):
|
||||||
try:
|
try:
|
||||||
return self.get_edits(mode="diff")
|
return self.get_edits(mode="diff")
|
||||||
except ValueError:
|
except ValueError:
|
||||||
return self.get_multi_response_content()
|
return self.get_multi_response_content_in_progress()
|
||||||
|
|
||||||
def get_edits(self, mode="update"):
|
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()
|
chat_files = self.get_inchat_relative_files()
|
||||||
|
|
||||||
|
|
|
@ -565,6 +565,14 @@ class Model(ModelSettings):
|
||||||
res = litellm.completion(**kwargs)
|
res = litellm.completion(**kwargs)
|
||||||
return hash_object, res
|
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):
|
def simple_send_with_retries(self, messages):
|
||||||
from aider.exceptions import LiteLLMExceptions
|
from aider.exceptions import LiteLLMExceptions
|
||||||
|
|
||||||
|
@ -583,7 +591,9 @@ class Model(ModelSettings):
|
||||||
_hash, response = self.send_completion(**kwargs)
|
_hash, response = self.send_completion(**kwargs)
|
||||||
if not response or not hasattr(response, "choices") or not response.choices:
|
if not response or not hasattr(response, "choices") or not response.choices:
|
||||||
return None
|
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:
|
except litellm_ex.exceptions_tuple() as err:
|
||||||
ex_info = litellm_ex.get_ex_info(err)
|
ex_info = litellm_ex.get_ex_info(err)
|
||||||
print(str(err))
|
print(str(err))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue