Spaces:
Running
Running
| from langchain_community.embeddings.cloudflare_workersai import CloudflareWorkersAIEmbeddings | |
| from langflow.base.models.model import LCModelComponent | |
| from langflow.field_typing import Embeddings | |
| from langflow.io import BoolInput, DictInput, IntInput, MessageTextInput, Output, SecretStrInput | |
| class CloudflareWorkersAIEmbeddingsComponent(LCModelComponent): | |
| display_name: str = "Cloudflare Workers AI Embeddings" | |
| description: str = "Generate embeddings using Cloudflare Workers AI models." | |
| documentation: str = "https://python.langchain.com/docs/integrations/text_embedding/cloudflare_workersai/" | |
| icon = "Cloudflare" | |
| name = "CloudflareWorkersAIEmbeddings" | |
| inputs = [ | |
| MessageTextInput( | |
| name="account_id", | |
| display_name="Cloudflare account ID", | |
| info="Find your account ID https://developers.cloudflare.com/fundamentals/setup/find-account-and-zone-ids/#find-account-id-workers-and-pages", | |
| required=True, | |
| ), | |
| SecretStrInput( | |
| name="api_token", | |
| display_name="Cloudflare API token", | |
| info="Create an API token https://developers.cloudflare.com/fundamentals/api/get-started/create-token/", | |
| required=True, | |
| ), | |
| MessageTextInput( | |
| name="model_name", | |
| display_name="Model Name", | |
| info="List of supported models https://developers.cloudflare.com/workers-ai/models/#text-embeddings", | |
| required=True, | |
| value="@cf/baai/bge-base-en-v1.5", | |
| ), | |
| BoolInput( | |
| name="strip_new_lines", | |
| display_name="Strip New Lines", | |
| advanced=True, | |
| value=True, | |
| ), | |
| IntInput( | |
| name="batch_size", | |
| display_name="Batch Size", | |
| advanced=True, | |
| value=50, | |
| ), | |
| MessageTextInput( | |
| name="api_base_url", | |
| display_name="Cloudflare API base URL", | |
| advanced=True, | |
| value="https://api.cloudflare.com/client/v4/accounts", | |
| ), | |
| DictInput( | |
| name="headers", | |
| display_name="Headers", | |
| info="Additional request headers", | |
| is_list=True, | |
| advanced=True, | |
| ), | |
| ] | |
| outputs = [ | |
| Output(display_name="Embeddings", name="embeddings", method="build_embeddings"), | |
| ] | |
| def build_embeddings(self) -> Embeddings: | |
| try: | |
| embeddings = CloudflareWorkersAIEmbeddings( | |
| account_id=self.account_id, | |
| api_base_url=self.api_base_url, | |
| api_token=self.api_token, | |
| batch_size=self.batch_size, | |
| headers=self.headers, | |
| model_name=self.model_name, | |
| strip_new_lines=self.strip_new_lines, | |
| ) | |
| except Exception as e: | |
| msg = f"Could not connect to CloudflareWorkersAIEmbeddings API: {e!s}" | |
| raise ValueError(msg) from e | |
| return embeddings | |