refactor: cleanup

This commit is contained in:
Florian Hönicke
2023-05-10 17:38:55 +02:00
parent a382129a4b
commit 304fb08e58
4 changed files with 51 additions and 13 deletions

View File

@@ -1,6 +1,14 @@
from dev_gpt.apis.gpt import ask_gpt from dev_gpt.apis.gpt import ask_gpt
from dev_gpt.options.generate.parser import boolean_parser from dev_gpt.options.generate.parser import boolean_parser
def is_question_true(question):
def fn(text):
return answer_yes_no_question(text, question)
return fn
def is_question_false(question):
return lambda context: not is_question_true(question)(context)
def answer_yes_no_question(text, question): def answer_yes_no_question(text, question):
prompt = question_prompt.format( prompt = question_prompt.format(
@@ -14,3 +22,4 @@ question_prompt = '''\
{question} {question}
Note: You must answer "yes" or "no". Note: You must answer "yes" or "no".
''' '''

View File

@@ -0,0 +1,27 @@
from dev_gpt.apis.gpt import ask_gpt
from dev_gpt.options.generate.parser import identity_parser
def translation(from_format: str, to_format: str):
def fn(text_to_translate):
return translate(from_format, to_format, text_to_translate)
return fn
def translate(from_format, to_format, text_to_translate):
prompt = translation_prompt.format(
from_format=from_format,
to_format=to_format,
text_to_translate=text_to_translate
)
return ask_gpt(prompt, identity_parser)
translation_prompt = '''\
Translate the following {from_format} to a {to_format}:
```
{text_to_translate}
```
Note: You must not output anything else - just the translation.
Note: You must not add any formatting.'''

View File

@@ -1,10 +0,0 @@
from dev_gpt.options.generate.chains.question_answering import answer_yes_no_question
def is_question_true(question):
def fn(text):
return answer_yes_no_question(text, question)
return fn
def is_question_false(question):
return lambda context: not is_question_true(question)(context)

View File

@@ -1,8 +1,9 @@
from dev_gpt.apis import gpt from dev_gpt.apis import gpt
from dev_gpt.apis.gpt import ask_gpt from dev_gpt.apis.gpt import ask_gpt
from dev_gpt.options.generate.chains.auto_refine_description import auto_refine_description from dev_gpt.options.generate.chains.auto_refine_description import auto_refine_description
from dev_gpt.options.generate.chains.question_answering import is_question_true
from dev_gpt.options.generate.chains.translation import translation
from dev_gpt.options.generate.chains.user_confirmation_feedback_loop import user_feedback_loop from dev_gpt.options.generate.chains.user_confirmation_feedback_loop import user_feedback_loop
from dev_gpt.options.generate.condition import is_question_true
from dev_gpt.options.generate.chains.get_user_input_if_needed import get_user_input_if_needed from dev_gpt.options.generate.chains.get_user_input_if_needed import get_user_input_if_needed
from dev_gpt.options.generate.parser import identity_parser from dev_gpt.options.generate.parser import identity_parser
from dev_gpt.options.generate.ui import get_random_employee from dev_gpt.options.generate.ui import get_random_employee
@@ -61,10 +62,19 @@ Description of the microservice:
condition_question='Does the microservice send requests to an API?', condition_question='Does the microservice send requests to an API?',
question_gen='Generate a question that asks for the endpoint and an example of a request and response when interacting with the external API.', question_gen='Generate a question that asks for the endpoint and an example of a request and response when interacting with the external API.',
extension_name='Example of API usage', extension_name='Example of API usage',
post_transformation_fn=translation(from_format='api instruction', to_format='python code snippet')
) )
return microservice_description, test_description return microservice_description, test_description
def user_input_extension_if_needed(self, context, microservice_description, condition_question, question_gen, extension_name): def user_input_extension_if_needed(
self,
context,
microservice_description,
condition_question,
question_gen,
extension_name,
post_transformation_fn=None
):
user_answer = get_user_input_if_needed( user_answer = get_user_input_if_needed(
context={ context={
'Microservice description': microservice_description, 'Microservice description': microservice_description,
@@ -77,6 +87,8 @@ Description of the microservice:
question_gen_prompt_part=question_gen, question_gen_prompt_part=question_gen,
) )
if user_answer: if user_answer:
if post_transformation_fn:
user_answer = post_transformation_fn(user_answer)
return f'\n{extension_name}: {user_answer}' return f'\n{extension_name}: {user_answer}'
else: else:
return '' return ''