File size: 5,863 Bytes
9462c3e
1
{"description": "Classifies an input phrase based on similarity to defined routes.", "icon": null, "icon_bg_color": null, "updated_at": "2024-08-28T23:08:09+00:00", "webhook": false, "id": "30c8825b-6a70-445c-a93f-19e3b521e9c7", "name": "Bloxplot_Router", "is_component": true, "endpoint_name": null, "data": {"edges": [], "nodes": [{"data": {"type": "RouterComponent", "node": {"template": {"_type": "Component", "routes_data": {"trace_as_metadata": true, "list": true, "trace_as_input": true, "required": false, "placeholder": "", "show": true, "name": "routes_data", "value": "", "display_name": "Routes Data", "advanced": false, "input_types": ["Data"], "dynamic": false, "info": "Data from Route components.", "title_case": false, "type": "other", "_input_type": "DataInput"}, "aggregation_method": {"trace_as_metadata": true, "options": ["mean", "max", "min"], "combobox": false, "required": false, "placeholder": "", "show": true, "name": "aggregation_method", "value": "max", "display_name": "Aggregation Method", "advanced": false, "dynamic": false, "info": "Method to aggregate similarity scores.", "title_case": false, "type": "str", "_input_type": "DropdownInput", "load_from_db": false}, "api_key": {"load_from_db": false, "required": false, "placeholder": "", "show": true, "name": "api_key", "value": null, "display_name": "API Key", "advanced": false, "input_types": ["Message"], "dynamic": false, "info": "", "title_case": false, "password": true, "type": "str", "_input_type": "SecretStrInput"}, "code": {"type": "code", "required": true, "placeholder": "", "list": false, "show": true, "multiline": true, "value": "from langflow.custom import Component\r\nfrom langflow.io import DataInput, MessageTextInput, SecretStrInput, DropdownInput\r\nfrom langflow.template import Output\r\nfrom langflow.schema.message import Message\r\nfrom langflow.schema import Data\r\nfrom semantic_router import Route\r\nfrom semantic_router.encoders import OpenAIEncoder\r\nfrom semantic_router.layer import RouteLayer\r\n\r\nclass RouterComponent(Component):\r\n    display_name = \"Router Component\"\r\n    description = \"Classifies an input phrase based on similarity to defined concepts.\"\r\n    icon = \"\ud83d\udd00\"\r\n\r\n    inputs = [\r\n        DataInput(\r\n            name=\"routes_data\", \r\n            display_name=\"Routes Data\", \r\n            info=\"Data from Route components.\", \r\n            is_list=True\r\n        ),\r\n        MessageTextInput(\r\n            name=\"input_text\",\r\n            display_name=\"Input Text\",\r\n            info=\"The primary text input for the operation.\",\r\n        ),\r\n        SecretStrInput(\r\n            name=\"api_key\",\r\n            display_name=\"API Key\"\r\n        ),\r\n        DropdownInput(\r\n            name=\"aggregation_method\", \r\n            display_name=\"Aggregation Method\", \r\n            options=[\"mean\", \"max\", \"min\"], \r\n            info=\"Method to aggregate similarity scores.\"\r\n        ),\r\n    ]\r\n\r\n    outputs = [\r\n        Output(\r\n            display_name=\"Route\", \r\n            name=\"route_output\", \r\n            method=\"build_route\"\r\n        ),\r\n    ]\r\n\r\n    def build_route(self) -> Message:\r\n        # Construa os objetos Route usando os dados de entrada\r\n        routes = [\r\n            Route(name=route_data.data['route_name'], utterances=route_data.data['example_phrases'])\r\n            for route_data in self.routes_data\r\n        ]\r\n        \r\n        encoder = OpenAIEncoder(\r\n            openai_api_key=self.api_key\r\n        )\r\n        \r\n        route_layer = RouteLayer(\r\n            encoder=encoder, \r\n            routes=routes, \r\n            aggregation=self.aggregation_method\r\n        )\r\n        \r\n        message = Message(text=route_layer(self.input_text).name)\r\n        self.status = message\r\n        return message\r\n", "fileTypes": [], "file_path": "", "password": false, "name": "code", "advanced": true, "dynamic": true, "info": "", "load_from_db": false, "title_case": false}, "input_text": {"trace_as_input": true, "trace_as_metadata": true, "load_from_db": false, "list": false, "required": false, "placeholder": "", "show": true, "name": "input_text", "value": "Pessoal.  Estamos precisando de duas m\u00e1quinas adicionais na reda\u00e7\u00e3o do Esporte.  Uma designada para Sergio Pinheiro, m\u00e1quina de uso padr\u00e3o, com instala\u00e7\u00e3o de iNews, Teams, leitor de PDF, player de v\u00eddeo, acesso ao p\u00fablico (pasta WhatsApp).  Outra para Tiago Lemos, ge.globo, com os programas:  - Premiere - ANews - Chrome - Acesso \u00e0 pasta p\u00fablico/WhatsApp - Acessos ao Aspera e Backstage (publica\u00e7\u00f5es da globo)     Abs", "display_name": "Input Text", "advanced": false, "input_types": ["Message"], "dynamic": false, "info": "The primary text input for the operation.", "title_case": false, "type": "str", "_input_type": "MessageTextInput"}}, "description": "Classifies an input phrase based on similarity to defined concepts.", "icon": "\ud83d\udd00", "base_classes": ["Message"], "display_name": "Router", "documentation": "", "custom_fields": {}, "output_types": [], "pinned": false, "conditional_paths": [], "frozen": false, "outputs": [{"types": ["Message"], "selected": "Message", "name": "route_output", "display_name": "Route", "method": "build_route", "value": "__UNDEFINED__", "cache": true}], "field_order": ["routes_data", "input_text", "api_key", "aggregation_method"], "beta": false, "edited": true, "lf_version": "1.0.17", "official": false}, "id": "RouterComponent-YdGzw"}, "id": "RouterComponent-YdGzw", "position": {"x": 0, "y": 0}, "type": "genericNode"}], "viewport": {"x": 1, "y": 1, "zoom": 1}}, "user_id": "5d4de74a-c7c6-45e3-a567-78ef1c3df3f3", "folder_id": "8facaf57-d395-4405-9e8a-5aa0778e5d0b"}