summaryrefslogtreecommitdiff
path: root/continuedev/src
diff options
context:
space:
mode:
authorNate Sesti <sestinj@gmail.com>2023-06-25 15:14:56 -0700
committerNate Sesti <sestinj@gmail.com>2023-06-25 15:14:56 -0700
commit3338d05db9f5f21d8a9d440cb428f2c6a188b363 (patch)
tree637ddfb304479e055409c6a494d7961d8da1e812 /continuedev/src
parent2d37d2bd1ee8022aa4eb5db1285c50feced14771 (diff)
downloadsncontinue-3338d05db9f5f21d8a9d440cb428f2c6a188b363.tar.gz
sncontinue-3338d05db9f5f21d8a9d440cb428f2c6a188b363.tar.bz2
sncontinue-3338d05db9f5f21d8a9d440cb428f2c6a188b363.zip
shipped function calling
Diffstat (limited to 'continuedev/src')
-rw-r--r--continuedev/src/continuedev/core/autopilot.py14
-rw-r--r--continuedev/src/continuedev/steps/chat.py33
2 files changed, 31 insertions, 16 deletions
diff --git a/continuedev/src/continuedev/core/autopilot.py b/continuedev/src/continuedev/core/autopilot.py
index f14a4127..04f64ed8 100644
--- a/continuedev/src/continuedev/core/autopilot.py
+++ b/continuedev/src/continuedev/core/autopilot.py
@@ -15,6 +15,17 @@ from .sdk import ContinueSDK
import asyncio
from ..libs.util.step_name_to_steps import get_step_from_name
from ..libs.util.traceback_parsers import get_python_traceback, get_javascript_traceback
+from openai import error as openai_errors
+
+
+def get_error_title(e: Exception) -> str:
+ if isinstance(e, openai_errors.APIError):
+ return "OpenAI is overloaded with requests. Please try again."
+ elif isinstance(e, openai_errors.RateLimitError):
+ return "This OpenAI API key has been rate limited. Please try again."
+ elif isinstance(e, openai_errors.Timeout):
+ return "OpenAI timed out. Please try again."
+ return e.__repr__()
class Autopilot(ContinueBaseModel):
@@ -166,7 +177,8 @@ class Autopilot(ContinueBaseModel):
error_string = e.message if is_continue_custom_exception else '\n\n'.join(
traceback.format_tb(e.__traceback__)) + f"\n\n{e.__repr__()}"
- error_title = e.title if is_continue_custom_exception else e.__repr__()
+ error_title = e.title if is_continue_custom_exception else get_error_title(
+ e)
# Attach an InternalErrorObservation to the step and unhide it.
print(f"Error while running step: \n{error_string}\n{error_title}")
diff --git a/continuedev/src/continuedev/steps/chat.py b/continuedev/src/continuedev/steps/chat.py
index a940c3ba..2a8ae2da 100644
--- a/continuedev/src/continuedev/steps/chat.py
+++ b/continuedev/src/continuedev/steps/chat.py
@@ -182,21 +182,24 @@ class ChatWithFunctions(Step):
else:
if func_name == "python" and "python" not in step_name_step_class_map:
# GPT must be fine-tuned to believe this exists, but it doesn't always
- self.chat_context.append(ChatMessage(
- role="assistant",
- content=None,
- function_call=FunctionCall(
- name=func_name,
- arguments=func_args
- ),
- summary=f"Ran function {func_name}"
- ))
- self.chat_context.append(ChatMessage(
- role="user",
- content="The 'python' function does not exist. Don't call it.",
- summary="'python' function does not exist."
- ))
- continue
+ func_name = "EditHighlightedCodeStep"
+ func_args = json.dumps({"user_input": self.user_input})
+ # self.chat_context.append(ChatMessage(
+ # role="assistant",
+ # content=None,
+ # function_call=FunctionCall(
+ # name=func_name,
+ # arguments=func_args
+ # ),
+ # summary=f"Ran function {func_name}"
+ # ))
+ # self.chat_context.append(ChatMessage(
+ # role="user",
+ # content="The 'python' function does not exist. Don't call it. Try again to call another function.",
+ # summary="'python' function does not exist."
+ # ))
+ # msg_step.hide = True
+ # continue
# Call the function, then continue to chat
func_args = "{}" if func_args == "" else func_args
fn_call_params = json.loads(func_args)