From 507098174a864b697511717ee82fab1810728f53 Mon Sep 17 00:00:00 2001 From: Nate Sesti Date: Mon, 19 Jun 2023 18:50:26 -0700 Subject: guide rails if it repeats suffix --- continuedev/src/continuedev/steps/core/core.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/continuedev/src/continuedev/steps/core/core.py b/continuedev/src/continuedev/steps/core/core.py index 3642e65b..75738758 100644 --- a/continuedev/src/continuedev/steps/core/core.py +++ b/continuedev/src/continuedev/steps/core/core.py @@ -267,28 +267,25 @@ class DefaultModelEditCodeStep(Step): # .format(code=rif.contents, user_request=self.user_input, file_prefix=segs[0], file_suffix=segs[1]) prompt = self._prompt if segs[0].strip() != "": - prompt += dedent(f"""\ -\n + prompt += dedent(f""" {segs[0]} """) - prompt += dedent(f"""\ -\n + prompt += dedent(f""" {rif.contents} """) if segs[1].strip() != "": - prompt += dedent(f"""\ -\n + prompt += dedent(f""" {segs[1]} """) - prompt += dedent(f"""\ -\n + prompt += dedent(f""" {self.user_input} -""") + +""") lines = [] unfinished_line = "" @@ -317,7 +314,11 @@ class DefaultModelEditCodeStep(Step): )) lines_of_prefix_copied = 0 + line_below_highlighted_range = segs[1].lstrip().split("\n")[0] + should_stop = False async for chunk in model_to_use.stream_chat(prompt, with_history=await sdk.get_chat_context(), temperature=0): + if should_stop: + break chunk_lines = chunk.split("\n") chunk_lines[0] = unfinished_line + chunk_lines[0] if chunk.endswith("\n"): @@ -339,7 +340,10 @@ class DefaultModelEditCodeStep(Step): elif i < len(original_lines) and line == original_lines[i]: i += 1 continue - + # Because really short lines might be expected to be repeated !heuristic! + elif line.strip() == line_below_highlighted_range.strip() and len(line.strip()) > 4: + should_stop = True + break await add_line(i, line) i += 1 -- cgit v1.2.3-70-g09d2