Spaces:
Running
Running
| from typing import cast | |
| from langchain_community.retrievers import MetalRetriever | |
| from metal_sdk.metal import Metal | |
| from langflow.custom import CustomComponent | |
| from langflow.field_typing import Retriever | |
| class MetalRetrieverComponent(CustomComponent): | |
| display_name: str = "Metal Retriever" | |
| description: str = "Retriever that uses the Metal API." | |
| name = "MetalRetriever" | |
| legacy: bool = True | |
| def build_config(self): | |
| return { | |
| "api_key": {"display_name": "API Key", "password": True}, | |
| "client_id": {"display_name": "Client ID", "password": True}, | |
| "index_id": {"display_name": "Index ID"}, | |
| "params": {"display_name": "Parameters"}, | |
| "code": {"show": False}, | |
| } | |
| def build(self, api_key: str, client_id: str, index_id: str, params: dict | None = None) -> Retriever: # type: ignore[type-var] | |
| try: | |
| metal = Metal(api_key=api_key, client_id=client_id, index_id=index_id) | |
| except Exception as e: | |
| msg = "Could not connect to Metal API." | |
| raise ValueError(msg) from e | |
| return cast("Retriever", MetalRetriever(client=metal, params=params or {})) | |