roughed in edit-formats

This commit is contained in:
Paul Gauthier 2023-06-13 12:54:03 -07:00
parent 99cbd10b56
commit 21672d5231
2 changed files with 14 additions and 5 deletions

View file

@ -90,6 +90,10 @@ class Coder:
self.io.tool_output( self.io.tool_output(
f"Using {main_model.name} (experimental): disabling ctags/repo-maps.", f"Using {main_model.name} (experimental): disabling ctags/repo-maps.",
) )
self.edit_format = self.main_model.edit_format
if self.edit_format == "whole":
self.gpt_prompts = prompts.GPT35() self.gpt_prompts = prompts.GPT35()
else: else:
self.gpt_prompts = prompts.GPT4() self.gpt_prompts = prompts.GPT4()
@ -343,8 +347,9 @@ class Coder:
if edit_error: if edit_error:
return edit_error return edit_error
if self.main_model in models.GPT4_models or not edited: if not (self.edit_format == "whole" and edited):
# Don't add 3.5 assistant messages to the history if they contain "edits" # Don't add assistant messages to the history if they contain "edits"
# from the "whole" edit format.
# Because those edits are actually fully copies of the file! # Because those edits are actually fully copies of the file!
# That wastes too much context window. # That wastes too much context window.
self.cur_messages += [dict(role="assistant", content=content)] self.cur_messages += [dict(role="assistant", content=content)]
@ -478,7 +483,7 @@ class Coder:
if self.pretty: if self.pretty:
show_resp = self.resp show_resp = self.resp
if self.main_model in models.GPT35_models: if self.edit_format == "whole":
try: try:
show_resp = self.update_files_gpt35(self.resp, mode="diff") show_resp = self.update_files_gpt35(self.resp, mode="diff")
except ValueError: except ValueError:
@ -782,9 +787,9 @@ class Coder:
return set(self.get_all_relative_files()) - set(self.get_inchat_relative_files()) return set(self.get_all_relative_files()) - set(self.get_inchat_relative_files())
def apply_updates(self, content): def apply_updates(self, content):
if self.main_model in models.GPT4_models: if self.edit_format == "diff":
method = self.update_files_gpt4 method = self.update_files_gpt4
elif self.main_model in models.GPT35_models: elif self.edit_format == "whole":
method = self.update_files_gpt35 method = self.update_files_gpt35
else: else:
raise ValueError(f"apply_updates() doesn't support {self.main_model.name}") raise ValueError(f"apply_updates() doesn't support {self.main_model.name}")

View file

@ -1,6 +1,7 @@
class Model_GPT4_32k: class Model_GPT4_32k:
name = "gpt-4-32k" name = "gpt-4-32k"
max_context_tokens = 32 * 1024 max_context_tokens = 32 * 1024
edit_format = "diff"
GPT4_32k = Model_GPT4_32k() GPT4_32k = Model_GPT4_32k()
@ -9,6 +10,7 @@ GPT4_32k = Model_GPT4_32k()
class Model_GPT4: class Model_GPT4:
name = "gpt-4" name = "gpt-4"
max_context_tokens = 8 * 1024 max_context_tokens = 8 * 1024
edit_format = "diff"
GPT4 = Model_GPT4() GPT4 = Model_GPT4()
@ -17,6 +19,7 @@ GPT4 = Model_GPT4()
class Model_GPT35: class Model_GPT35:
name = "gpt-3.5-turbo" name = "gpt-3.5-turbo"
max_context_tokens = 4 * 1024 max_context_tokens = 4 * 1024
edit_format = "whole"
GPT35 = Model_GPT35() GPT35 = Model_GPT35()
@ -25,6 +28,7 @@ GPT35 = Model_GPT35()
class Model_GPT35_16k: class Model_GPT35_16k:
name = "gpt-3.5-turbo-16k" name = "gpt-3.5-turbo-16k"
max_context_tokens = 16 * 1024 max_context_tokens = 16 * 1024
edit_format = "whole"
GPT35_16k = Model_GPT35_16k() GPT35_16k = Model_GPT35_16k()