diff options
| author | Nate Sesti <sestinj@gmail.com> | 2023-06-25 15:14:56 -0700 | 
|---|---|---|
| committer | Nate Sesti <sestinj@gmail.com> | 2023-06-25 15:14:56 -0700 | 
| commit | 3338d05db9f5f21d8a9d440cb428f2c6a188b363 (patch) | |
| tree | 637ddfb304479e055409c6a494d7961d8da1e812 /continuedev | |
| parent | 2d37d2bd1ee8022aa4eb5db1285c50feced14771 (diff) | |
| download | sncontinue-3338d05db9f5f21d8a9d440cb428f2c6a188b363.tar.gz sncontinue-3338d05db9f5f21d8a9d440cb428f2c6a188b363.tar.bz2 sncontinue-3338d05db9f5f21d8a9d440cb428f2c6a188b363.zip | |
shipped function calling
Diffstat (limited to 'continuedev')
| -rw-r--r-- | continuedev/src/continuedev/core/autopilot.py | 14 | ||||
| -rw-r--r-- | continuedev/src/continuedev/steps/chat.py | 33 | 
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) | 
