diff options
author | Nate Sesti <sestinj@gmail.com> | 2023-09-12 13:27:47 -0700 |
---|---|---|
committer | Nate Sesti <sestinj@gmail.com> | 2023-09-12 13:27:47 -0700 |
commit | a9755603c3a2c0b3afe809f77a63824c77c6419e (patch) | |
tree | ecd42177d8d0de7efca9e192d6de2b127a84222d /continuedev | |
parent | f31821e83f4d8ee9e843afb2f2a48f1a3ed43d42 (diff) | |
download | sncontinue-a9755603c3a2c0b3afe809f77a63824c77c6419e.tar.gz sncontinue-a9755603c3a2c0b3afe809f77a63824c77c6419e.tar.bz2 sncontinue-a9755603c3a2c0b3afe809f77a63824c77c6419e.zip |
fix: :bug: a number of small fixes + disable summaries
Diffstat (limited to 'continuedev')
-rw-r--r-- | continuedev/src/continuedev/core/autopilot.py | 17 | ||||
-rw-r--r-- | continuedev/src/continuedev/core/config.py | 4 | ||||
-rw-r--r-- | continuedev/src/continuedev/core/sdk.py | 8 | ||||
-rw-r--r-- | continuedev/src/continuedev/libs/llm/prompts/edit.py | 14 | ||||
-rw-r--r-- | continuedev/src/continuedev/libs/llm/text_gen_interface.py | 4 | ||||
-rw-r--r-- | continuedev/src/continuedev/libs/util/paths.py | 6 | ||||
-rw-r--r-- | continuedev/src/continuedev/plugins/policies/default.py | 7 | ||||
-rw-r--r-- | continuedev/src/continuedev/plugins/steps/chat.py | 25 | ||||
-rw-r--r-- | continuedev/src/continuedev/plugins/steps/core/core.py | 37 |
9 files changed, 86 insertions, 36 deletions
diff --git a/continuedev/src/continuedev/core/autopilot.py b/continuedev/src/continuedev/core/autopilot.py index a943a35f..f24f5ad7 100644 --- a/continuedev/src/continuedev/core/autopilot.py +++ b/continuedev/src/continuedev/core/autopilot.py @@ -465,6 +465,9 @@ class Autopilot(ContinueBaseModel): # Update its description async def update_description(): + if self.continue_sdk.config.disable_summaries: + return + description = await step.describe(self.continue_sdk.models) if description is not None: step.description = description @@ -534,11 +537,15 @@ class Autopilot(ContinueBaseModel): ): return - title = await self.continue_sdk.models.medium.complete( - f'Give a short title to describe the current chat session. Do not put quotes around the title. The first message was: "{user_input}". Do not use more than 10 words. The title is: ', - max_tokens=20, - ) - title = remove_quotes_and_escapes(title) + if self.continue_sdk.config.disable_summaries: + title = user_input + else: + title = await self.continue_sdk.models.medium.complete( + f'Give a short title to describe the current chat session. Do not put quotes around the title. The first message was: "{user_input}". Do not use more than 10 words. The title is: ', + max_tokens=20, + ) + title = remove_quotes_and_escapes(title) + self.session_info = SessionInfo( title=title, session_id=self.ide.session_id, diff --git a/continuedev/src/continuedev/core/config.py b/continuedev/src/continuedev/core/config.py index e8b2c579..d431c704 100644 --- a/continuedev/src/continuedev/core/config.py +++ b/continuedev/src/continuedev/core/config.py @@ -93,6 +93,10 @@ class ContinueConfig(BaseModel): "https://us-west1-autodebug.cloudfunctions.net", description="The URL of the server where development data is sent. No data is sent unless a valid user token is provided.", ) + disable_summaries: Optional[bool] = Field( + False, + description="If set to `True`, Continue will not generate summaries for each Step. This can be useful if you want to save on compute.", + ) @validator("temperature", pre=True) def temperature_validator(cls, v): diff --git a/continuedev/src/continuedev/core/sdk.py b/continuedev/src/continuedev/core/sdk.py index de209114..12fce1c6 100644 --- a/continuedev/src/continuedev/core/sdk.py +++ b/continuedev/src/continuedev/core/sdk.py @@ -2,12 +2,11 @@ import os import traceback from typing import Coroutine, List, Optional, Union -from ..libs.util.create_async_task import create_async_task - from ..libs.llm import LLM +from ..libs.util.create_async_task import create_async_task from ..libs.util.devdata import dev_data_logger from ..libs.util.logging import logger -from ..libs.util.paths import getConfigFilePath +from ..libs.util.paths import getConfigFilePath, getDiffsFolderPath from ..libs.util.telemetry import posthog_logger from ..models.filesystem import RangeInFile from ..models.filesystem_edit import ( @@ -69,6 +68,9 @@ class ContinueSDK(AbstractContinueSDK): sdk = ContinueSDK(autopilot) autopilot.continue_sdk = sdk + # Create necessary directories + getDiffsFolderPath() + try: sdk.config = config or sdk._load_config_dot_py() except Exception as e: diff --git a/continuedev/src/continuedev/libs/llm/prompts/edit.py b/continuedev/src/continuedev/libs/llm/prompts/edit.py index 275473bc..b4892669 100644 --- a/continuedev/src/continuedev/libs/llm/prompts/edit.py +++ b/continuedev/src/continuedev/libs/llm/prompts/edit.py @@ -12,4 +12,18 @@ simplified_edit_prompt = dedent( [/INST]""" ) +simplest_edit_prompt = dedent( + """\ + [INST] Here is the code before editing: + ``` + {{code_to_edit}} + ``` + + Here is the edit requested: + "{{user_input}}" + + Here is the code after editing: + [/INST]""" +) + codellama_infill_edit_prompt = "{{file_prefix}}<FILL>{{file_suffix}}" diff --git a/continuedev/src/continuedev/libs/llm/text_gen_interface.py b/continuedev/src/continuedev/libs/llm/text_gen_interface.py index 3c76a21a..1090d7dd 100644 --- a/continuedev/src/continuedev/libs/llm/text_gen_interface.py +++ b/continuedev/src/continuedev/libs/llm/text_gen_interface.py @@ -6,7 +6,7 @@ from pydantic import Field from ...core.main import ChatMessage from . import LLM -from .prompts.edit import simplified_edit_prompt +from .prompts.edit import simplest_edit_prompt class TextGenUI(LLM): @@ -40,7 +40,7 @@ class TextGenUI(LLM): ) prompt_templates = { - "edit": simplified_edit_prompt, + "edit": simplest_edit_prompt, } class Config: diff --git a/continuedev/src/continuedev/libs/util/paths.py b/continuedev/src/continuedev/libs/util/paths.py index 216386c3..e8bbd4ba 100644 --- a/continuedev/src/continuedev/libs/util/paths.py +++ b/continuedev/src/continuedev/libs/util/paths.py @@ -37,6 +37,12 @@ def getDevDataFolderPath(): return path +def getDiffsFolderPath(): + path = os.path.join(getGlobalFolderPath(), "diffs") + os.makedirs(path, exist_ok=True) + return path + + def getDevDataFilePath(table_name: str): filepath = os.path.join(getDevDataFolderPath(), f"{table_name}.jsonl") if not os.path.exists(filepath): diff --git a/continuedev/src/continuedev/plugins/policies/default.py b/continuedev/src/continuedev/plugins/policies/default.py index 26b6bd48..2c9c3d9c 100644 --- a/continuedev/src/continuedev/plugins/policies/default.py +++ b/continuedev/src/continuedev/plugins/policies/default.py @@ -86,6 +86,13 @@ class DefaultPolicy(Policy): slash_command = parse_slash_command(user_input, config) if slash_command is not None: + if ( + getattr(slash_command, "user_input", None) is None + and history.get_current().step.user_input is not None + ): + history.get_current().step.user_input = ( + history.get_current().step.user_input.split()[0] + ) return slash_command custom_command = parse_custom_command(user_input, config) diff --git a/continuedev/src/continuedev/plugins/steps/chat.py b/continuedev/src/continuedev/plugins/steps/chat.py index 05931bf1..b00bf85b 100644 --- a/continuedev/src/continuedev/plugins/steps/chat.py +++ b/continuedev/src/continuedev/plugins/steps/chat.py @@ -122,17 +122,22 @@ class SimpleChatStep(Step): await sdk.update_ui() - self.name = "Generating title..." + if sdk.config.disable_summaries: + self.name = "" + else: + self.name = "Generating title..." + await sdk.update_ui() + self.name = add_ellipsis( + remove_quotes_and_escapes( + await sdk.models.medium.complete( + f'"{self.description}"\n\nPlease write a short title summarizing the message quoted above. Use no more than 10 words:', + max_tokens=20, + ) + ), + 200, + ) + await sdk.update_ui() - self.name = add_ellipsis( - remove_quotes_and_escapes( - await sdk.models.medium.complete( - f'"{self.description}"\n\nPlease write a short title summarizing the message quoted above. Use no more than 10 words:', - max_tokens=20, - ) - ), - 200, - ) self.chat_context.append( ChatMessage(role="assistant", content=self.description, summary=self.name) diff --git a/continuedev/src/continuedev/plugins/steps/core/core.py b/continuedev/src/continuedev/plugins/steps/core/core.py index 1d7ffdd7..5e1f1cd4 100644 --- a/continuedev/src/continuedev/plugins/steps/core/core.py +++ b/continuedev/src/continuedev/plugins/steps/core/core.py @@ -816,8 +816,6 @@ Please output the code to be inserted at the cursor in order to fulfill the user await self.stream_rif(rif, sdk) await sdk.ide.setSuggestionsLocked(rif.filepath, False) - self.name = "Generating summary" - changes = "\n".join( difflib.ndiff( self._previous_contents.splitlines(), @@ -825,21 +823,27 @@ Please output the code to be inserted at the cursor in order to fulfill the user ) ) - self.description = "" - async for chunk in sdk.models.medium.stream_complete( - dedent( - f"""\ - Diff summary: "{self.user_input}" - - ```diff - {changes} - ``` - - {self.summary_prompt}""" - ) - ): - self.description += chunk + if sdk.config.disable_summaries: + self.name = "" + self.description = f"Edited {len(self.range_in_files)} files" await sdk.update_ui() + else: + self.name = "Generating summary" + self.description = "" + async for chunk in sdk.models.medium.stream_complete( + dedent( + f"""\ + Diff summary: "{self.user_input}" + + ```diff + {changes} + ``` + + {self.summary_prompt}""" + ) + ): + self.description += chunk + await sdk.update_ui() sdk.context.set("last_edit_user_input", self.user_input) sdk.context.set("last_edit_diff", changes) @@ -922,6 +926,7 @@ class UserInputStep(Step): self.chat_context.append( ChatMessage(role="user", content=self.user_input, summary=self.user_input) ) + self.description = self.user_input return UserInputObservation(user_input=self.user_input) |