From cc5e491d8ad2e002810463886f830f9027d998fe Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Wed, 7 Feb 2024 20:28:29 -0300 Subject: [PATCH] Add PromptComponent to langflow prompts --- .../langflow/components/prompts/Prompt.py | 28 +++++++++++++++++++ .../langflow/components/prompts/__init_.py | 0 2 files changed, 28 insertions(+) create mode 100644 src/backend/langflow/components/prompts/Prompt.py create mode 100644 src/backend/langflow/components/prompts/__init_.py diff --git a/src/backend/langflow/components/prompts/Prompt.py b/src/backend/langflow/components/prompts/Prompt.py new file mode 100644 index 000000000..803a9170b --- /dev/null +++ b/src/backend/langflow/components/prompts/Prompt.py @@ -0,0 +1,28 @@ +from langchain_core.prompts import PromptTemplate +from langflow import CustomComponent +from langflow.field_typing import Prompt, TemplateField, Text + + +class PromptComponent(CustomComponent): + display_name: str = "Prompt" + description: str = "A component for creating prompts using templates" + beta = True + + def build_config(self): + return { + "template": TemplateField(display_name="Template"), + "code": TemplateField(advanced=True), + } + + def build( + self, + template: Prompt, + **kwargs, + ) -> Text: + prompt_template = PromptTemplate.from_template(template) + try: + formated_prompt = prompt_template.format(**kwargs) + except Exception as exc: + raise ValueError(f"Error formatting prompt: {exc}") from exc + self.status = f'Prompt: "{formated_prompt}"' + return formated_prompt diff --git a/src/backend/langflow/components/prompts/__init_.py b/src/backend/langflow/components/prompts/__init_.py new file mode 100644 index 000000000..e69de29bb