-
Notifications
You must be signed in to change notification settings - Fork 4.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Problema com Conectores de Saída ao Criar Text Splitters no Módulo Experimental #3833
Comments
Para resolver o problema com os conectores de saída ao criar text splitters no módulo Experimental do Langflow versão 1.0.18, você precisa garantir que o tipo de saída do método Aqui está o trecho relevante do código: def split_text(self) -> List[Data]:
separator = unescape_string(self.separator)
documents = []
for _input in self.data_inputs:
if isinstance(_input, Data):
documents.append(_input.to_lc_document())
splitter = CharacterTextSplitter(
chunk_overlap=self.chunk_overlap,
chunk_size=self.chunk_size,
separator=separator,
)
docs = splitter.split_documents(documents)
data = self._docs_to_data(docs)
self.status = data
return data Certifique-se de que os componentes aos quais você está tentando conectar a saída "Data" possam aceitar Além disso, verifique se a classe from typing import List
from langchain_text_splitters import CharacterTextSplitter
from langflow.custom import Component
from langflow.io import HandleInput, IntInput, MessageTextInput, Output
from langflow.schema import Data
from langflow.utils.util import unescape_string
class SplitTextComponent(Component):
display_name: str = "Split Text"
description: str = "Split text into chunks based on specified criteria."
icon = "scissors-line-dashed"
name = "SplitText"
inputs = [
HandleInput(
name="data_inputs",
display_name="Data Inputs",
info="The data to split.",
input_types=["Data"],
is_list=True,
),
IntInput(
name="chunk_overlap",
display_name="Chunk Overlap",
info="Number of characters to overlap between chunks.",
value=200,
),
IntInput(
name="chunk_size",
display_name="Chunk Size",
info="The maximum number of characters in each chunk.",
value=1000,
),
MessageTextInput(
name="separator",
display_name="Separator",
info="The character to split on. Defaults to newline.",
value="\n",
),
]
outputs = [
Output(display_name="Chunks", name="chunks", method="split_text"),
]
def _docs_to_data(self, docs):
data = []
for doc in docs:
data.append(Data(text=doc.page_content, data=doc.metadata))
return data
def split_text(self) -> List[Data]:
separator = unescape_string(self.separator)
documents = []
for _input in self.data_inputs:
if isinstance(_input, Data):
documents.append(_input.to_lc_document())
splitter = CharacterTextSplitter(
chunk_overlap=self.chunk_overlap,
chunk_size=self.chunk_size,
separator=separator,
)
docs = splitter.split_documents(documents)
data = self._docs_to_data(docs)
self.status = data
return data Certifique-se também de que a classe from typing import Dict, List, Optional, Type
from langflow.interface.base import LangChainTypeCreator
from langflow.services.deps import get_settings_service
from langflow.template.frontend_node.textsplitters import TextSplittersFrontendNode
from langflow.interface.custom_lists import textsplitter_type_to_cls_dict
from loguru import logger
from langflow.utils.util import build_template_from_class
class TextSplitterCreator(LangChainTypeCreator):
type_name: str = "textsplitters"
@property
def frontend_node_class(self) -> Type[TextSplittersFrontendNode]:
return TextSplittersFrontendNode
@property
def type_to_loader_dict(self) -> Dict:
return textsplitter_type_to_cls_dict
def get_signature(self, name: str) -> Optional[Dict]:
"""Get the signature of a text splitter."""
try:
return build_template_from_class(name, textsplitter_type_to_cls_dict)
except ValueError as exc:
raise ValueError(f"Text Splitter {name} not found") from exc
except AttributeError as exc:
logger.error(f"Text Splitter {name} not loaded: {exc}")
return None
def to_list(self) -> List[str]:
settings_service = get_settings_service()
return [
textsplitter.__name__
for textsplitter in self.type_to_loader_dict.values()
if textsplitter.__name__ in settings_service.settings.TEXTSPLITTERS or settings_service.settings.DEV
]
textsplitter_creator = TextSplitterCreator() Ao garantir que a classe |
stale |
Eu fiz o teste diretamente na branch 'main'. Agora fiz o teste via 'pip' e realmente não está conectando. Em breve sairá um novo release que irá corrigir isso na versão 'pip'. |
In v1.0.18 I can't connect the character splitters with any vector store either. No error message. The color of the outputs is purple instead of red. |
Hey @Banbury @moiraphill The new version 1.0.19 has been released, and the issue has been fixed. |
Bug Description
Recentemente, identifiquei um erro ao criar text splitters utilizando o módulo Experimental do Langflow. Esse problema afeta os conectores de saída, onde apenas os conectores existentes em versões anteriores do Langflow continuam funcionando corretamente. Os conectores recém-criados exibem comportamento alterado e não conseguem se conectar com outros componentes. Especificamente, o conector de saída (Data) fica com a cor rosa e exibe a mensagem de que não há componentes compatíveis disponíveis.
Exemplo Visual:
Na imagem acima:
Conector Superior: Criado em versões anteriores do Langflow, funcionando normalmente.
Conector Inferior: Criado na versão mais recente (1.0.18), não consegue se conectar com nenhum outro componente na saída "Data".
Informações Adicionais:
Versão do Langflow: 1.0.18
Ambiente:
Reproduction
Expected behavior
Comportamento Esperado: Os conectores recém-criados devem se comportar de maneira semelhante aos conectores de versões anteriores, permitindo conexões com outros componentes sem apresentar erros visuais ou mensagens de incompatibilidade.
Comportamento Atual: Os conectores novos apresentam a saída (Data) na cor rosa e indicam que não há componentes compatíveis, impedindo a conexão com outros conectores.
Who can help?
No response
Operating System
Ubuntu 24.04.1 LTS (GNU/Linux 6.8.0-44-generic x86_64)
Langflow Version
1.0.18
Python Version
3.12
Screenshot
No response
Flow File
No response
The text was updated successfully, but these errors were encountered: