From 262dffd21c4dac88050926d72b78f7e91a5df75b Mon Sep 17 00:00:00 2001 From: Nate Sesti Date: Sat, 10 Jun 2023 07:53:31 -0400 Subject: selection step of airflow recipe --- .../src/continuedev/steps/input/nl_multiselect.py | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 continuedev/src/continuedev/steps/input/nl_multiselect.py (limited to 'continuedev/src/continuedev/steps') diff --git a/continuedev/src/continuedev/steps/input/nl_multiselect.py b/continuedev/src/continuedev/steps/input/nl_multiselect.py new file mode 100644 index 00000000..c3c832f5 --- /dev/null +++ b/continuedev/src/continuedev/steps/input/nl_multiselect.py @@ -0,0 +1,27 @@ +from typing import List, Union +from ..core.core import WaitForUserInputStep +from ...core.main import Step +from ...core.sdk import ContinueSDK + + +class NLMultiselectStep(Step): + hide: bool = True + + prompt: str + options: List[str] + + async def run(self, sdk: ContinueSDK): + user_response = (await sdk.run_step(WaitForUserInputStep(prompt=self.prompt))).text + + def extract_option(text: str) -> Union[str, None]: + for option in self.options: + if option in text: + return option + return None + + first_try = extract_option(user_response.lower()) + if first_try is not None: + return first_try + + gpt_parsed = await sdk.models.gpt35.complete(f"These are the available options are: [{', '.join(self.options)}]. The user requested {user_response}. This is the exact string from the options array that they selected:") + return extract_option(gpt_parsed) or self.options[0] -- cgit v1.2.3-70-g09d2