From 6cc31da766cc1fdc1ac484c0bdf28f5471b6c2c8 Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Mon, 10 Jun 2024 21:26:21 -0300 Subject: [PATCH] feat: Add EmbedComponent and PromptComponent to langflow components --- .../langflow/components/experimental/Embed.py | 15 ++++++++++++ .../langflow/components/prompts/Prompt.py | 24 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 src/backend/base/langflow/components/experimental/Embed.py create mode 100644 src/backend/base/langflow/components/prompts/Prompt.py diff --git a/src/backend/base/langflow/components/experimental/Embed.py b/src/backend/base/langflow/components/experimental/Embed.py new file mode 100644 index 000000000..88de23486 --- /dev/null +++ b/src/backend/base/langflow/components/experimental/Embed.py @@ -0,0 +1,15 @@ +from langflow.custom import CustomComponent +from langflow.schema import Record +from langflow.field_typing import Embeddings + + +class EmbedComponent(CustomComponent): + display_name = "Embed Texts" + + def build_config(self): + return {"texts": {"display_name": "Texts"}, "embbedings": {"display_name": "Embeddings"}} + + def build(self, texts: list[str], embbedings: Embeddings) -> Embeddings: + vectors = Record(vector=embbedings.embed_documents(texts)) + self.status = vectors + return vectors diff --git a/src/backend/base/langflow/components/prompts/Prompt.py b/src/backend/base/langflow/components/prompts/Prompt.py new file mode 100644 index 000000000..ca421b395 --- /dev/null +++ b/src/backend/base/langflow/components/prompts/Prompt.py @@ -0,0 +1,24 @@ +from langflow.custom import CustomComponent +from langflow.field_typing import TemplateField +from langflow.field_typing.prompt import Prompt + + +class PromptComponent(CustomComponent): + display_name: str = "Empty Prompt" + description: str = "Create a prompt template with dynamic variables." + icon = "prompts" + + def build_config(self): + return { + "template": TemplateField(display_name="Template"), + "code": TemplateField(advanced=True), + } + + async def build( + self, + template: Prompt, + **kwargs, + ) -> Prompt: + prompt = await Prompt.from_template_and_variables(template, kwargs) + self.status = prompt.format_text() + return prompt