Closed amiartint closed 2 months ago
Hello @amiartint! I'm here to help you with any issues or questions you have. I can also assist in becoming a contributor. Let's get to the bottom of this together!
O erro "Error building Component Prompt: not enough values to unpack (expected 2, got 1)" na versão 1.0.14 do Langflow provavelmente está relacionado a um problema no método build_prompt
da classe PromptComponent
. Esse erro sugere que uma operação de desempacotamento de tupla está esperando dois valores, mas apenas um foi fornecido.
Para resolver esse problema, você pode verificar o seguinte:
template
e as variables
estão corretamente instanciados e passados para o método build_prompt
.from_template_and_variables
da classe Message
está retornando a saída esperada.Aqui está um exemplo de código que adiciona informações de depuração para ajudar a identificar onde o problema pode estar:
from langflow.base.prompts.api_utils import process_prompt_template
from langflow.custom import Component
from langflow.io import Output, PromptInput
from langflow.schema.message import Message
from langflow.template.utils import update_template_values
class PromptComponent(Component):
display_name: str = "Prompt"
description: str = "Create a prompt template with dynamic variables."
icon = "prompts"
trace_type = "prompt"
inputs = [
PromptInput(name="template", display_name="Template"),
]
outputs = [
Output(display_name="Prompt Message", name="prompt", method="build_prompt"),
]
async def build_prompt(
self,
) -> Message:
try:
prompt = await Message.from_template_and_variables(**self._attributes)
self.status = prompt.text
return prompt
except Exception as e:
print(f"Error in build_prompt method: {e}")
raise
def post_code_processing(self, new_build_config: dict, current_build_config: dict):
frontend_node = super().post_code_processing(new_build_config, current_build_config)
template = frontend_node["template"]["template"]["value"]
_ = process_prompt_template(
template=template,
name="template",
custom_fields=frontend_node["custom_fields"],
frontend_node_template=frontend_node["template"],
)
update_template_values(frontend_template=frontend_node, raw_template=current_build_config["template"])
return frontend_node
Esse código adiciona um bloco try-except para capturar e imprimir quaisquer exceções que ocorram durante a execução do método build_prompt
. Isso ajudará a identificar a localização exata e a causa do erro [1][2].
Além disso, a versão 1.0.14 do Langflow introduziu várias mudanças que podem afetar a funcionalidade dos fluxos multimodais, como a necessidade de definir Inputs e Outputs, suporte a múltiplas saídas, e a capacidade de gerenciar múltiplas sessões de memória [3][4]. Certifique-se de que seu fluxo está atualizado para refletir essas mudanças.
To continue talking to Dosu, mention @dosu.
Olá @Dosu
Já usei o GPT do Langflow para analisar esta mensagem de erro e encontrei estas respostas também. Os componentes do fluxo estão atualizados, o que gostaria de saber é se preciso mudar a estrutura do fluxo, trocando componentes por outros, por exemplo. Ou adicionando novos, o que seja.
Sou novato no Langflow e estou em busca de uma ferramenta para utilizar multimodais em chatbots e outros app, encontrando esta ferramenta será a que vou usar junto aos meus clientes. Vocês tem outras pessoas enfrentando o mesmo problema que eu, ontem mesmo encontrei outro usuario na mesma situação no Discord, começamos a conversar e trocar experiências sobre a questão. Me parece que se vocês nos disserem o que fazer em um fluxo simples como o meu, por exemplo, ou se for um problema no framework que ele seja acertado o mais rápido possível (tem mais de semana que venho relatando o problema no Discord), será bom para todos nós, vocês e seus usuários.
Sou brasileiro, orgulhoso do trabalho dos meus compatriotas, mas preciso prestar serviços e ganhar dinheiro. Quero muito, mas muito mesmo, virar o usuário número 1 do Langflow no Brasil, tenho clientes na Europa e na América do Sul esperando minha resposta sobre a ferramenta que vamos utilizar.
Para evitar o erro "Error building Component Prompt: not enough values to unpack (expected 2, got 1)" na versão 1.0.14 do Langflow ao usar capacidades multimodais, você deve garantir que os componentes do seu fluxo estejam corretamente estruturados com os inputs e outputs apropriados. Aqui está uma estrutura simples que você pode seguir:
Defina Inputs e Outputs: Certifique-se de que cada componente no seu fluxo tenha inputs e outputs claramente definidos. Isso ajuda a gerenciar o fluxo de dados e evitar erros relacionados ao desempacotamento de valores.
Use Múltiplos Outputs Corretamente: Se um componente tiver múltiplos outputs, certifique-se de que cada output esteja corretamente conectado aos componentes subsequentes. Isso evita o problema de ter menos valores do que o esperado.
Verifique a Configuração dos Componentes: Verifique se cada componente está configurado corretamente, especialmente ao lidar com dados multimodais (por exemplo, texto, imagens). Certifique-se de que os tipos de dados e os valores esperados correspondam aos requisitos do componente.
Valide e Corrija Prompts: Use as funções validate_prompt
e fix_prompt
para garantir que seus prompts estejam corretamente formatados. Isso pode ajudar a evitar problemas relacionados às variáveis de input.
Aqui está um exemplo de estrutura de fluxo simples:
# Defina o componente de input
input_component = InputComponent(data_type="text")
# Defina um componente de processamento com múltiplos outputs
processing_component = ProcessingComponent()
processing_component.add_output("text_output")
processing_component.add_output("image_output")
# Defina os componentes de output
text_output_component = OutputComponent(data_type="text")
image_output_component = OutputComponent(data_type="image")
# Conecte os componentes
input_component.connect_to(processing_component)
processing_component.connect_output("text_output", text_output_component)
processing_component.connect_output("image_output", image_output_component)
# Valide e corrija prompts se necessário
prompt = "Seu prompt aqui"
validated_prompt = validate_prompt(prompt)
# Execute o fluxo
flow = Flow()
flow.add_component(input_component)
flow.add_component(processing_component)
flow.add_component(text_output_component)
flow.add_component(image_output_component)
flow.execute()
Além disso, certifique-se de que seu PromptComponent
esteja corretamente implementado. Aqui está um exemplo baseado no código-fonte do Langflow:
from langflow.base.prompts.api_utils import process_prompt_template
from langflow.custom import Component
from langflow.io import Output, PromptInput
from langflow.schema.message import Message
from langflow.template.utils import update_template_values
class PromptComponent(Component):
display_name: str = "Prompt"
description: str = "Create a prompt template with dynamic variables."
icon = "prompts"
trace_type = "prompt"
inputs = [
PromptInput(name="template", display_name="Template"),
]
outputs = [
Output(display_name="Prompt Message", name="prompt", method="build_prompt"),
]
async def build_prompt(self) -> Message:
prompt = await Message.from_template_and_variables(**self._attributes)
self.status = prompt.text
return prompt
def post_code_processing(self, new_build_config: dict, current_build_config: dict):
frontend_node = super().post_code_processing(new_build_config, current_build_config)
template = frontend_node["template"]["template"]["value"]
_ = process_prompt_template(
template=template,
name="template",
custom_fields=frontend_node["custom_fields"],
frontend_node_template=frontend_node["template"],
)
update_template_values(frontend_template=frontend_node, raw_template=current_build_config["template"])
return frontend_node
Essa estrutura garante que cada componente tenha os inputs e outputs necessários definidos, e as conexões entre os componentes estejam corretamente estabelecidas. Além disso, validar e corrigir prompts pode ajudar a evitar o erro de desempacotamento que você encontrou [1].
Se precisar de mais ajuda ou tiver outras dúvidas, estou à disposição!
To continue talking to Dosu, mention @dosu.
Não entendi nada. É para fazer o que? Não sou programador, se eu tiver que ter este conhecimento, vou desistir do Langflow.
It looks like this issue needs your expertise, @ogabrielluiz, could you please take a look?
To continue talking to Dosu, mention @dosu.
@ogabrielluiz, tudo bem? Estamos eu e muitos usuários do Langflow com um grande problema. Olha acima, por favor.
@amiartint
Estou tentando replicar seu problema, mas sem sucesso. Consegue me informar se esse problema persiste na atual versão 1.0.15?
Se estiver persistindo pra você, consegue compartilhar o flow?
Persiste, ontem pelo menos persistia, dia 13/08. Fluxo absolutamente simplório, básico.
Persiste hoje também, acabei de rodá-lo (print).
Onde o erro aparece no fluxo.
@amiartint
Consegue me enviar o seu flow?
@carlosrcoelho , acima o flow
Oi Carlos, enviei lá
Carlos Coelho @.***> escreveu (quarta, 14/08/2024 à(s) 16:17):
@amiartint https://github.com/amiartint
Consegue me enviar o seu flow?
— Reply to this email directly, view it on GitHub https://github.com/langflow-ai/langflow/issues/3209#issuecomment-2289661012, or unsubscribe https://github.com/notifications/unsubscribe-auth/BELUBZMC5E3KOVSOP33KH23ZROUNPAVCNFSM6AAAAABMBG7Y3WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEOBZGY3DCMBRGI . You are receiving this because you were mentioned.Message ID: @.***>
@amiartint
Testei seu flow e deu certo. Estou usando a versao 1.0.15.
Segue o video:
https://github.com/user-attachments/assets/e5193122-f182-4a8a-b1e0-2719062d1eb6
Também, versão 1.0.15, no VSCODE, Python 3.12.2. Tem alguma ideia do que pode estar errado? Tentei inclusive trocar o prompt por um novo, como no print, mesmo erro.
[image: image.png]
[image: image.png]
[image: image.png]
[image: image.png]
Carlos Coelho @.***> escreveu (sexta, 16/08/2024 à(s) 09:32):
@amiartint https://github.com/amiartint
Testei seu flow e deu certo. Estou usando a versao 1.0.15.
Segue o video:
https://github.com/user-attachments/assets/e5193122-f182-4a8a-b1e0-2719062d1eb6
— Reply to this email directly, view it on GitHub https://github.com/langflow-ai/langflow/issues/3209#issuecomment-2293428105, or unsubscribe https://github.com/notifications/unsubscribe-auth/BELUBZMIDDJKRGNCKNCUFLLZRXWPJAVCNFSM6AAAAABMBG7Y3WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEOJTGQZDQMJQGU . You are receiving this because you were mentioned.Message ID: @.***>
O que você quer dizer usando VSCODE?
Eu usei a versão main
do Langflow. Se puder gravar um pequeno video do processo que está realizando, me ajuda.
E também mandar um print dos logs do backend apontando o erro.
Thank you for your contribution! This issue will be closed. If you have any questions or encounter another problem, please open a new issue and we will be ready to assist you.
I had the same issue on Windows 11 and resolved it. It seems to be an issue with slashes being different between linux and windows. Anyway, I simply replaced a line in the image.py file.
From: flow_id, file_name = file.split("/")
To: flow_id, file_name = re.split(r"[\\/]", file, maxsplit=1)
I added import re
to the file as well.
FYI, I'm not a real developer. I just poked around and used ChatGPT.
Bug Description
Pessoal, desde as novas versões 1.x os fluxos com as as multimodais (uso Gemini 1.5 flash, GPT 4o e GPT 4o mini) não funcionam mais, olhem o print. Meu fluxo de teste é super simples (print também), parou de funcionar quando tive que atualizar alguns componentes dele.
Por favor ajuda aê, tem alguns bons dias isto e não sou o único, vi outras pessoas com o mesmo problema no Dircord.
Reproduction
Envio imagem no Playground, o erro aparece. Quando também escrevo alguma coisa ou não escrevo nada.
Expected behavior
Multimodais funcionando
Who can help?
No response
Operating System
Windows 10
Langflow Version
1.0.14
Python Version
3.12
Screenshot
Flow File
No response