summaryrefslogtreecommitdiff
path: root/continuedev
diff options
context:
space:
mode:
authorNate Sesti <sestinj@gmail.com>2023-09-12 13:27:47 -0700
committerNate Sesti <sestinj@gmail.com>2023-09-12 13:27:47 -0700
commita9755603c3a2c0b3afe809f77a63824c77c6419e (patch)
treeecd42177d8d0de7efca9e192d6de2b127a84222d /continuedev
parentf31821e83f4d8ee9e843afb2f2a48f1a3ed43d42 (diff)
downloadsncontinue-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.py17
-rw-r--r--continuedev/src/continuedev/core/config.py4
-rw-r--r--continuedev/src/continuedev/core/sdk.py8
-rw-r--r--continuedev/src/continuedev/libs/llm/prompts/edit.py14
-rw-r--r--continuedev/src/continuedev/libs/llm/text_gen_interface.py4
-rw-r--r--continuedev/src/continuedev/libs/util/paths.py6
-rw-r--r--continuedev/src/continuedev/plugins/policies/default.py7
-rw-r--r--continuedev/src/continuedev/plugins/steps/chat.py25
-rw-r--r--continuedev/src/continuedev/plugins/steps/core/core.py37
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)