From 023df99ecc7c07da78b8f7f545685e255c20f427 Mon Sep 17 00:00:00 2001 From: Gabriel Almeida Date: Sun, 28 May 2023 16:18:33 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A8=20refactor(embeddings.py):=20move?= =?UTF-8?q?=20openai=20fields=20formatting=20to=20a=20separate=20method=20?= =?UTF-8?q?=E2=9C=85=20test(embeddings=5Ftemplate.py):=20add=20tests=20for?= =?UTF-8?q?=20openai=20fields=20formatting=20The=20openai=20fields=20forma?= =?UTF-8?q?tting=20is=20now=20done=20in=20a=20separate=20method,=20which?= =?UTF-8?q?=20improves=20the=20readability=20and=20maintainability=20of=20?= =?UTF-8?q?the=20code.=20Tests=20were=20added=20to=20ensure=20that=20the?= =?UTF-8?q?=20formatting=20is=20done=20correctly.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../template/frontend_node/embeddings.py | 21 +++++-- tests/test_embeddings_template.py | 59 +++++++++++++++++++ 2 files changed, 76 insertions(+), 4 deletions(-) create mode 100644 tests/test_embeddings_template.py diff --git a/src/backend/langflow/template/frontend_node/embeddings.py b/src/backend/langflow/template/frontend_node/embeddings.py index d21e12e73..d466b11a4 100644 --- a/src/backend/langflow/template/frontend_node/embeddings.py +++ b/src/backend/langflow/template/frontend_node/embeddings.py @@ -22,6 +22,22 @@ class EmbeddingFrontendNode(FrontendNode): field.display_name = "Jina API URL" field.password = False + @staticmethod + def format_openai_fields(field: TemplateField): + if "openai" in field.name: + field.show = True + field.advanced = True + split_name = field.name.split("_") + title_name = " ".join([s.capitalize() for s in split_name]) + field.display_name = title_name.replace("Openai", "OpenAI").replace( + "Api", "API" + ) + + if "api_key" in field.name: + field.password = True + field.show = True + field.advanced = False + @staticmethod def format_field(field: TemplateField, name: Optional[str] = None) -> None: FrontendNode.format_field(field, name) @@ -30,9 +46,6 @@ class EmbeddingFrontendNode(FrontendNode): if field.name == "headers": field.show = False - if "openai" in field.name: - field.show = True - field.advanced = "api_key" not in field.name - # Format Jina fields EmbeddingFrontendNode.format_jina_fields(field) + EmbeddingFrontendNode.format_openai_fields(field) diff --git a/tests/test_embeddings_template.py b/tests/test_embeddings_template.py new file mode 100644 index 000000000..7334c2abd --- /dev/null +++ b/tests/test_embeddings_template.py @@ -0,0 +1,59 @@ +from langflow.template.field.base import TemplateField +from langflow.template.frontend_node.embeddings import EmbeddingFrontendNode + + +def test_format_jina_fields(): + field = TemplateField(name="jina") + EmbeddingFrontendNode.format_jina_fields(field) + assert field.show is True + assert field.advanced is False + + field = TemplateField(name="auth") + EmbeddingFrontendNode.format_jina_fields(field) + assert field.password is True + assert field.show is True + assert field.advanced is False + + field = TemplateField(name="jina_api_url") + EmbeddingFrontendNode.format_jina_fields(field) + assert field.show is True + assert field.advanced is True + assert field.display_name == "Jina API URL" + assert field.password is False + + +def test_format_openai_fields(): + field = TemplateField(name="openai") + EmbeddingFrontendNode.format_openai_fields(field) + assert field.show is True + assert field.advanced is True + assert field.display_name == "OpenAI" + + field = TemplateField(name="openai_api_key") + EmbeddingFrontendNode.format_openai_fields(field) + assert field.password is True + assert field.show is True + assert field.advanced is False + + +def test_format_field(): + field = TemplateField(name="headers") + EmbeddingFrontendNode.format_field(field) + assert field.show is False + + field = TemplateField(name="jina") + EmbeddingFrontendNode.format_field(field) + assert field.advanced is False + assert field.show is True + + field = TemplateField(name="openai") + EmbeddingFrontendNode.format_field(field) + assert field.advanced is True + assert field.show is True + assert field.display_name == "OpenAI" + + field = TemplateField(name="test_field", required=True) + EmbeddingFrontendNode.format_field(field) + assert field.advanced is False + assert field.show is True + assert field.required is True