Todos os produtos
Search
Central de documentação

Platform For AI:Referência de nós de workflow

Última atualização: Jun 27, 2026

O LangStudio oferece nós de workflow pré-construídos para controle de fluxo, LLMs, agentes, recuperação de dados, análise de documentos, reconhecimento de fala e scripts Python.

Controle de fluxo

Start

Nota

Um application flow pode ter apenas um nó Start.

O nó Start marca o início da execução e declara os parâmetros de entrada do application flow.

  • Em fluxos conversacionais, o sistema fornece dois campos padrão: histórico da conversa e entrada do usuário. Adicione variáveis personalizadas conforme necessário. Para aceitar arquivos enviados pelo usuário, defina uma variável de entrada com o tipo de arquivo. Para mais detalhes, consulte Entrada e saída do tipo arquivo.

    image

  • Ao executar o application flow, configure os parâmetros de entrada da sessão atual no painel de conversa.

    image

Conditional branch

Este nó implementa a lógica if-else para controle de fluxo. Ele avalia condições e direciona a execução para a primeira branch correspondente. Caso nenhuma condição seja verdadeira, a else branch é executada. Combine este nó com o nó Variable aggregate para unificar os resultados de diferentes branches.

  • Configuração

    image

  • Entrada

    Ao configurar as condições das branches, observe o seguinte:

    • Cada branch representa um caminho de execução. A última branch é a else branch, executada quando nenhuma outra condição corresponde; ela não pode ser editada.

    • Uma branch pode conter múltiplas condições, combináveis por meio de lógica AND/OR.

    • Verifique as saídas dos nós anteriores, os operadores (como =, , is empty e does not include) e os valores para garantir que as condições sejam precisas e válidas.

  • Saída

    Este nó não gera saída.

  • Exemplo de uso

    Ao conectar o nó Conditional branch a nós subsequentes, cada branch possui uma porta de conexão correspondente. Se a condição de uma branch for atendida, o sistema executa os nós subsequentes dessa branch e ignora as demais. Utilize um nó Variable aggregate para coletar os resultados de execução da branch ativa.

    image

Variable aggregate

Este nó unifica os resultados de saída de diferentes branches em variáveis consolidadas. Quando um nó Conditional branch ou Intent recognition é executado, apenas uma branch roda. Este nó permite que os nós subsequentes referenciem uma única variável agregada, independentemente da branch executada, evitando lógica redundante.

  • Configuração

    image.png

  • Entrada

    Ao configurar grupos de variáveis, considere os pontos abaixo:

    • Os nós anteriores geralmente são múltiplas branches de execução geradas por um nó Conditional branch ou Intent recognition.

    • As variáveis dentro do mesmo grupo devem ser do mesmo tipo. O primeiro valor não vazio torna-se a saída desse grupo.

    • Como apenas uma branch anterior é executada, cada grupo terá no máximo um valor não vazio. O nó Variable aggregate extrai esse valor para uso pelos nós subsequentes.

    • Se cada branch tiver múltiplas saídas a serem coletadas, adicione vários grupos para extrair cada valor de saída correspondente.

  • Saída

    As variáveis de saída do nó dependem dos grupos configurados. Se houver vários grupos, o nó gera um par chave-valor para cada grupo, onde a chave é o nome do grupo e o valor é a primeira variável não vazia desse grupo.

  • Exemplo de uso

    Consulte o caso de uso do nó Conditional branch.

Loop

O nó Loop executa tarefas repetitivas em que cada iteração depende do resultado anterior. O loop continua até que uma condição de saída seja atendida ou o número máximo de iterações seja alcançado. Dentro do nó Loop, configure um subfluxo que o sistema executa repetidamente com base na variável de loop.

  • Configuração

    image

  • Entrada

    • Variáveis de loop: Transferem dados entre iterações. Seus valores finais permanecem disponíveis para os nós subsequentes após a conclusão do loop. Configure múltiplas variáveis de loop cujos valores podem ser inseridos manualmente ou selecionados a partir das saídas de nós anteriores.

    • Condição de saída do loop: Configure uma condição de saída baseada nas variáveis de loop. O loop termina quando uma variável especificada atende à condição predefinida.

    • Número máximo de iterações: Limita a quantidade máxima de execuções do loop para evitar loops infinitos.

  • Saída

    A saída do nó corresponde ao valor das variáveis de loop após a última iteração. As variáveis de loop só podem ser atualizadas por um nó Variable Assigner. Sem esse nó, a saída do loop permanecerá idêntica à sua entrada inicial, independentemente do número de iterações.

  • Nós relacionados

    Os nós relacionados ao loop só podem ser usados dentro de um loop. Adicione os seguintes nós relacionados clicando em no ícone + à direita de um nó dentro do loop:

    • Break Loop

      Encerra o loop imediatamente. Geralmente é precedido por um nó Conditional branch.

    • Variable Assigner

      Atribui a saída dos nós dentro do loop às variáveis de loop, avançando o estado do loop.

    image

Direct output

O nó Direct output configura o conteúdo de resposta direta usando um modelo de saída. Ele suporta a referência a saídas de nós anteriores com a sintaxe {{node.variable}} e saída em streaming.

Exemplo: Adicione um nó Direct output antes de um nó LLM para enviar uma mensagem inicial ao usuário, como "Pensando...", enquanto a tarefa principal é processada.

image

image

Batch processing

O nó Batch processing processa dados de lista em paralelo. Ele aplica o mesmo subfluxo a cada elemento da lista, o que melhora significativamente a eficiência. Para tarefas iterativas em que cada etapa depende da anterior, utilize o nó Loop.

Input

  • Lista de entrada: A lista de dados a ser processada. O nó envia cada elemento ao subfluxo para execução como um item independente.

  • Campo de saída: Selecione uma variável de saída de um nó dentro do subfluxo para servir como resultado da tarefa de cada item.

  • Contagem paralela: Opcional. Controla o número de tarefas executadas simultaneamente. O padrão é 4, com um intervalo válido de 1 a 10.

Output

result: Uma lista contendo os resultados de saída de todas as tarefas em lote, na mesma ordem da lista de entrada. Ela agrega os valores reais de saída do "Campo de saída" especificado na entrada.

Related nodes

Batch Start

O nó Batch Start é o ponto de entrada para o subfluxo de processamento em lote. Ele fornece as seguintes variáveis de saída para referência pelos nós subsequentes no subfluxo:

  • item: O item de dados atualmente em processamento, correspondente a um elemento da lista de entrada.

  • index: O índice do item de dados atual na lista de entrada (começando em 0).

Batch Break

O nó Batch Break encerra prematuramente o processamento do item de dados atual quando uma condição específica é atendida.

Nota: O nó Batch Break encerra apenas a iteração atual e não afeta o processamento de outros itens de dados.

Exemplo de uso

Análise de documentos em lote e processamento inteligente

Cenário: Uma empresa precisa analisar vários arquivos de documentos em lote, chamar um LLM para processamento de conteúdo nos documentos analisados com sucesso e pular automaticamente aqueles cuja análise falhar.

Configuração do nó Batch processing:

Parâmetro

Valor

Descrição

Lista de entrada

Start / files

Referencia a saída da lista de arquivos do nó Start anterior.

Campo de saída

LLM / output

Selecione o campo de saída do nó LLM como a saída do nó Batch processing.

Contagem paralela

4

Processa 4 arquivos simultaneamente.

image.png

Exemplo de saída:

{
  "result": [
    "This document is the user manual for product XX, which includes product feature introductions, installation steps...",
    "This is a software service procurement contract with a term of 12 months...",
    null,
    "Value-added tax ordinary invoice, dated January 15, 2026..."
  ]
}

Nota: Um valor null na saída indica que a análise do arquivo falhou e o nó Batch Break pulou o processamento subsequente.

Observações

  1. Ordem garantida dos resultados: A ordem da lista de saída é consistente com a ordem da lista de entrada.

  2. Flexibilidade do subfluxo: Dentro do subfluxo, diferentes itens de dados podem acionar diferentes caminhos de execução.

  3. Tratamento de valores nulos: Se o fluxo de execução de um item for encerrado prematuramente ou sua saída estiver vazia, a posição correspondente na lista de saída será nula.

End

O nó End marca a conclusão de um application flow e define seus parâmetros de saída. Um application flow pode ter apenas um nó End.

  • Configuração de parâmetros de saída

    A saída do application flow pode referenciar as saídas de qualquer nó anterior. Por exemplo, no exemplo abaixo, a saída 'answer' do application flow usa a saída do nó LLM, enquanto 'search_results' usa a saída do nó de busca.

    image

    Nota
    • Um fluxo conversacional possui um campo de saída padrão 'Chat', que serve como a saída conversacional do application flow.

    • Um application flow deve incluir os nós Start e End. Apenas os nós conectados entre eles são executados; nós isolados são ignorados.

Capacidades de IA

LLM

O nó LLM é um componente central de um application flow que chama um large language model para tarefas de linguagem natural, como geração de texto, respostas a perguntas e processamento de entradas complexas. Ele oferece opções de configuração para ajustar parâmetros do modelo, gerencie o histórico de conversas e personalizar prompts.

  • Casos de uso

    • Geração de texto: Gera conteúdo textual com base em tópicos e palavras-chave.

    • Classificação de conteúdo: Classifica automaticamente tipos de e-mail (por exemplo, consulta, reclamação ou spam).

    • Tradução de texto: Traduz texto para um idioma especificado.

    • RAG: Responde a perguntas dos usuários combinando conhecimento recuperado com o raciocínio do modelo.

  • Configuração

    image

  • Entrada

    • Configurações do modelo: Suporta modelos implantados do ModelGallery, serviços de modelo personalizados e modelos de provedores como Dashscope e DeepSeek. Para melhor desempenho, escolha um modelo de alta capacidade. Configure os seguintes parâmetros do modelo:

      • Temperature: Um valor geralmente entre 0 e 1 que controla a aleatoriedade da saída. Valores próximos de 0 produzem saídas mais determinísticas, enquanto valores próximos de 1 geram resultados mais diversos.

      • Top P: Limiar de amostragem de núcleo. O modelo amostra a partir do menor conjunto de tokens cuja probabilidade cumulativa excede o limiar P, influenciando a diversidade da saída.

      • Top K: Limita os tokens candidatos aos K mais prováveis. Isso reduz a aleatoriedade e torna a saída mais focada, restringindo a criatividade de forma mais direta que o Top P.

      • Presence penalty: Reduz a repetição das mesmas entidades ou informações. Penaliza tokens já presentes no texto gerado. Valores mais altos reduzem a repetição de forma mais agressiva.

      • Frequency penalty: Penaliza tokens com base em sua frequência no texto gerado, reduzindo palavras ou frases excessivamente frequentes. Valores mais altos incentivam maior diversidade lexical.

      • Max tokens: Comprimento máximo de saída (em tokens) por execução. Valores menores podem truncar a saída, enquanto valores maiores permitem respostas mais longas.

      • Seed: Quando especificado, o modelo tenta amostragem determinística. Solicitações repetidas com a mesma seed e parâmetros devem produzir o mesmo resultado, mas o determinismo completo não é garantido. Consulte o parâmetro de resposta system_fingerprint para monitorar alterações.

      • Stop sequences: Até quatro sequências que instruem o modelo a parar de gerar mais saídas. Quando o modelo encontra uma dessas sequências, ele interrompe a geração de tokens. O texto retornado não inclui a sequência de parada.

    • Histórico de conversas: Se ativado, o histórico de chat do application flow é inserido automaticamente no prompt.

    • Variáveis de entrada: As variáveis podem referenciar as saídas de todos os nós anteriores.

    • Prompt: Um prompt contém o conteúdo personalizado para System (SYSTEM), User (USER) ou Assistant (ASSISTANT). O prompt é um modelo Jinja2 onde você pode referenciar variáveis de entrada usando chaves duplas {{}}.

  • Saída

    O nó tem como padrão a saída String, mas suporta json. O tipo json suporta variáveis de saída personalizadas, e o modelo gera a saída com base nos nomes das variáveis.

  • Casos de uso

Intent recognition

O nó Intent recognition destina-se principalmente ao controle de fluxo. Ele usa um large language model para analisar a intenção do usuário e direciona a execução para a branch correspondente com base no resultado. Suporta configuração de múltiplas intenções e histórico de conversas.

  • Configuração

    image.png

  • Entrada

    • Entrada do usuário: Selecione a entrada do usuário a ser usada para reconhecimento de intenção.

    • Configuração de múltiplas intenções: Configure as intenções conforme necessário, garantindo que a descrição de cada intenção seja clara e que não haja sobreposição semântica entre elas. A última intenção assume o padrão "Other", correspondida quando nenhuma outra intenção se aplica; ela não pode ser editada.

    • Configurações do modelo: Configure o large language model para reconhecimento de intenção. Para melhor desempenho, escolha um modelo mais capaz, como qwen-max.

    • Histórico de conversas: Quando ativado, o large language model insere automaticamente o histórico de chat do application flow no prompt durante o raciocínio.

    • Prompt adicional: Este conteúdo é anexado ao prompt do sistema para ajudar o modelo a realizar o reconhecimento de intenção com mais precisão.

  • Saída

    Este nó não gera saída.

  • Exemplo de uso

    Ao conectar o nó Intent recognition a nós subsequentes, cada branch de intenção possui uma porta de conexão correspondente no nó. Quando uma intenção é reconhecida, os nós subsequentes conectados a essa branch são executados, enquanto os nós de outras branches são ignorados. Em seguida, use um nó Variable aggregate para coletar os resultados de execução de cada branch.

    image.png

Agent

O nó Agent permite que um large language model (LLM) planeje, selecione ferramentas e aja autonomamente. Ele suporta estratégias de raciocínio e capacidades de uso de ferramentas. Ao integrar estratégias como FunctionCalling e ReAct, ele permite que o LLM chame autonomamente ferramentas compatíveis com o Model Context Protocol (MCP) em tempo de execução para realizar raciocínio em múltiplas etapas.

Node parameters

  • Estratégia do agente: Selecione a estratégia de raciocínio do agente desejada. Atualmente, as estratégias FunctionCalling e ReAct são suportadas.

    FunctionCalling

    Este recurso permite a interação entre um Large Language Model (LLM) e ferramentas externas com base na definição estruturada de tool call (no formato json) da api OpenAI Chat. O LLM analisa as instruções em linguagem natural do usuário para identificar automaticamente a intenção, selecionar a ferramenta apropriada e extrair parâmetros. O sistema então chama a ferramenta correspondente e retorna o resultado ao modelo para realizar raciocínios adicionais e gerar a resposta final.

    Casos de uso e vantagens:

    • Chamadas estruturadas, forte compatibilidade: Usa dados estruturados para definir claramente nomes de ferramentas e parâmetros de chamada, tornando-o compatível com todos os modelos que suportam chamadas de ferramentas.

    • Desempenho estável: Adequado para tarefas com objetivos claros e etapas bem definidas, como verificar o clima, buscar informações ou consultar dados.

    ReAct

    ReAct (Reasoning + Acting) é uma estratégia de raciocínio flexível que usa prompts para guiar um modelo a gerar explicitamente Pensamentos e Ações, criando um ciclo fechado para raciocínio em múltiplas etapas e chamadas de ferramentas. Essa estratégia geralmente usa linguagem natural para descrever o processo de chamada. Ela aciona a execução de ferramentas de backend ao gerar textos como "Action=xxx, Action Input=xxx" e injeta os resultados de volta na cadeia de raciocínio do modelo. Este método não requer tool_calls no nível da api, o que o torna adequado para modelos e frameworks mais genéricos.

    Casos de uso e vantagens:

    • Capacidade de raciocínio aprimorada: Guia o modelo a pensar passo a passo, com cada etapa expressando explicitamente a lógica de raciocínio.

    • Estratégia transparente: Ideal para aplicações de agente que exigem forte depuração e interpretabilidade.

    • Não requer suporte a Tool Calling: Pode ser usado mesmo com modelos que não suportam saída estruturada.

  • Configurações do modelo: A estratégia FunctionCalling requer um modelo que suporte nativamente chamadas de ferramentas. A estratégia ReAct não tem essa limitação, mas recomendamos escolher um modelo com fortes capacidades de raciocínio.

  • Histórico de conversas: Ativar o histórico de conversas fornece memória contextual ao agente. O sistema inclui automaticamente mensagens anteriores no prompt, permitindo que o agente compreenda e referencie partes anteriores da conversa. Por exemplo, um agente com histórico de conversas ativado pode resolver pronomes (como "ele" ou "isso") sem exigir que o usuário repita informações.

  • Planejamento de tarefas: Quando ativado, o sistema adiciona automaticamente a ferramenta integrada write_todos às ferramentas disponíveis do agente. Para perguntas complexas do usuário, o agente chama automaticamente a ferramenta write_todos para planejar a tarefa e executá-la passo a passo, atualizando dinamicamente o plano com base nas informações mais recentes.

  • Ferramentas MCP e ferramentas: Suporta a configuração de ferramentas MCP e não-MCP. Para mais informações, consulte Configurar ferramentas para um Agent.

  • Configuração de Prompt

    • Variáveis de Entrada: Para referenciar uma variável de um nó anterior de um application flow em um prompt, defina uma variável de entrada correspondente no nó atual e configure seu valor como uma referência à variável do nó anterior. Em seguida, na seção Prompt abaixo, use a sintaxe de modelo Jinja2, indicada por chaves duplas ({{}}), para referenciar essas variáveis de entrada definidas e permitir a passagem dinâmica de dados.

    • Prompt do sistema: Especifica os objetivos da tarefa e o contexto do agente, fornecendo ao modelo o cenário necessário para guiar a geração de respostas. É opcional para a estratégia ReAct.

    • Prompt do usuário: Recebe a entrada ou consulta do usuário, servindo como base para a geração de respostas do modelo.

  • Contagem de loops: Define o número máximo de ciclos de execução para o agente, variando de 1 a 99. O agente repete a tarefa para gerar uma resposta até que uma das seguintes condições seja atendida:

    • O LLM determina que reuniu informações suficientes chamando ferramentas para gerar um resultado completo.

    • A contagem máxima de loops definida é atingida.

    Definir uma contagem de loops razoável ajuda a equilibrar a completude da resposta com a eficiência da execução. Se o Planejamento de tarefas estiver ativado, recomendamos usar a contagem máxima de loops padrão para garantir que o modelo possa executar totalmente todas as etapas conforme planejado.

  • Variáveis de saída:

    • intermediate_steps: Uma string contendo as etapas intermediárias da execução do agente.

    • text: Uma string contendo a saída final do agente.

Traces and logs

Após clicar em Run no canto superior direito da página do application flow, visualize o trace ou log abaixo do resultado da execução na caixa de diálogo exibida.

  • Visualizar saída intermediária: Clique em no ícone de status de execução no canto superior direito do nó Agent no workflow. Na gaveta abaixo, encontre intermediate_steps na Saída para visualizar o processo de raciocínio do agente.

  • Visualizar trace: Visualize as informações de trace da execução atual para entender a entrada e saída do agente para cada solicitação ao modelo (incluindo chamadas de ferramentas e parâmetros de solicitação), custos de tokens e consumo de tempo.

  • Visualizar log: Se um application flow encontrar um erro, visualize o log da execução atual para obter mais detalhes sobre o processo de execução do nó.

Além disso, clique em no ícone à direita do botão Run no canto superior direito da página do application flow para visualizar o Run History. Selecione um registro de execução específico para visualizar seu trace ou log.

Document parsing

Suporta o uso do analisador inteligente de documentos integrado ao sistema e os serviços de análise de documentos da AI Search Open Platform.

  • Analisador integrado: Extrai conteúdo estruturado e metadados de documentos, suportando vários formatos principais, incluindo PDF, DOCX, PPTX, TXT, HTML, CSV, XLSX, XLS, JSONL e MD.

  • AI Search Open Platform: Realiza análise estruturada de documentos de alta precisão, suportando a extração de informações hierárquicas lógicas, como títulos e parágrafos, além de conteúdo como texto, tabelas e imagens. Isso melhora a eficácia e a precisão da extração de documentos. É necessário configurar primeiro uma conexão de serviço de modelo da AI Search Open Platform. Os formatos de arquivo suportados incluem PDF, DOCX, PPTX, TXT e HTML.

Esta ferramenta suporta cenários de RAG, resumo e respostas a perguntas. A interface de configuração é a seguinte: image.png

  • Arquivo de documento: O arquivo de documento a ser analisado. Selecione um campo do tipo arquivo de um nó anterior.

  • Configurações do modelo: (Opcional) Selecione uma conexão de serviço de modelo da AI Search Open Platform criada no LangStudio. Se não configurado, o sistema usa o método básico de análise integrado por padrão.

  • Saída:

    • file_id: O identificador único do arquivo de entrada.

    • content: O conteúdo de texto estruturado analisado, incluindo informações hierárquicas como títulos e parágrafos.

    • status: O status da análise, que pode ser SUCCESS ou FAIL.

    • metadata: Os metadados do documento e detalhes da análise.

      • file_name: O nome do arquivo.

      • file_type: O tipo do arquivo.

      • source_uri: O URI original do arquivo.

      • download_url: A url para download do arquivo.

      • analysis_method: O método de análise utilizado. "opensearch" indica análise estruturada usando a AI Search Open Platform, enquanto "builtin" indica o uso do método básico de análise integrado.

Exemplo de uso downstream: Nos nós subsequentes, referencie os campos de resultado do nó de análise de documentos conforme necessário. Para usar os resultados da análise de documentos em um nó LLM, inclua o conteúdo analisado no prompt do usuário conforme mostrado abaixo:

image.png

Speech recognition

Use o nó Speech recognition para converter arquivos de áudio ou vídeo em texto. Ele suporta múltiplos formatos de áudio e reconhecimento de idiomas.

Input

  • Configurações do modelo: Configure o modelo de reconhecimento de fala. O serviço de reconhecimento de fala fornecido pelo Alibaba Cloud Model Studio é atualmente suportado. Recomendamos usar paraformer-v2 para melhor desempenho de reconhecimento e suporte multilíngue.

  • Arquivo de áudio/vídeo: Selecione o arquivo de áudio ou vídeo a ser reconhecido. Para formatos suportados, consulte Entrada e saída do tipo arquivo.

  • Idioma de Reconhecimento: Especifique o idioma para reconhecimento de áudio. Os idiomas suportados são Chinês, Inglês, Japonês, Cantonês, Coreano, Alemão, Francês, Russo ou detecção automática. Nota: Este recurso é suportado apenas pelo modelo paraformer-v2. Outros modelos usam detecção automática de idioma por padrão.

Output

  • file_id: O identificador único do arquivo de entrada.

  • status: O status do reconhecimento. Os valores possíveis são SUCCESS ou FAIL.

  • content: O conteúdo de texto transcrito.

  • segments: Uma lista de informações de fragmentos de sentenças, incluindo timestamps, fragmentos de texto e outros detalhes.

  • metadata: Os metadados do arquivo, incluindo:

    • file_name: O nome do arquivo.

    • file_type: O tipo do arquivo.

    • source_uri: O URI do arquivo.

    • download_url: A url de download do arquivo.

Recuperação de dados

Para configurar os seguintes nós, consulte Nó de recuperação de dados:

  • Recuperação de base de conhecimento

  • Alibaba Cloud IQS - busca web

  • SerpAPI - busca genérica

  • Solicitação HTTP

Processamento de dados

Desenvolvimento Python (Python)

Os application flows suportam nós com código Python personalizado para processamento complexo de dados. Esses nós suportam entrada e saída em streaming. A página de configuração é a seguinte:

image

Basta preencher o código Python. Entradas e saídas são analisadas automaticamente a partir do código. Observe o seguinte:

  • A função de entrada deve ser decorada com @tool para ser carregada como um nó.

    Nota

    Para habilitar entrada em streaming para um nó Python, configure @tool(properties={"streaming_pass_through": True}). Caso contrário, as entradas para o nó Python, como as de um LLM, serão texto de saída completo em vez de um stream.

  • A função suporta os seguintes tipos de entrada/saída: int, float, bool, str, dict, TypedDict, dataclass (apenas saída), list e File.

  • Os parâmetros da função de entrada são analisados dinamicamente como as entradas do nó. A saída é colocada em um dicionário output e pode ser referenciada por outros nós.

    Importante

    A análise automática de parâmetros de entrada e saída para um nó Python depende do runtime. Se o runtime não for iniciado, não será possível configurar as informações de entrada e saída do nó.

  • Se seu código Python exigir dependências, selecione Install Dependencies no canto superior direito do canvas e insira os pacotes necessários. O arquivo requirements.txt é salvo com o application flow. As dependências são instaladas quando você inicia o runtime ou implanta o serviço.

    image

    image

Caso de uso 1: Insira o seguinte código na área de código. O código é mapeado para as entradas e saídas do nó:

from langstudio.core import tool
from dataclasses import dataclass

@dataclass
class Result:
    output1: str
    output2: int

@tool
def invoke(foo: str, bar: int) -> Result:    
    return Result(
        output1="hello" + foo,
        output2=bar + 10
    )

image

Caso de uso 2: Entrada e saída em streaming. Use um nó Python para aparar um stream de texto de um nó LLM ou agente que inclua processos de pensamento. Ao descartar o conteúdo dentro da seção <think>\n\n</think>, você obtém um stream de texto final do resultado. Veja um exemplo abaixo:

import re
from typing import Iterator
from langstudio.core import tool

@tool(properties={"streaming_pass_through": True})
def strip_think(
    stream: Iterator[str],
) -> Iterator[str]:  # The input is a streaming string iterator, and the output is a filtered streaming string iterator.
    # Match the <think>\n...\n</think> structure and capture the text after the closing tag.
    pattern = re.compile(r"<think>\n[\s\S]*\n</think>(.*)")
    in_thinking = True  # Flag to indicate if the current position is inside a <think> block.
    think_buf = ""      # Buffer to store unprocessed content.

    for chunk in stream:
        if in_thinking:
            think_buf += chunk
            m = pattern.search(think_buf)  # Check if the buffer contains a complete thought block.
            if m:
                in_thinking = False
                result_part = m.groups()[0]
                if result_part:
                    yield result_part  # If the result text exists, yield it immediately.
        else:
            yield chunk  # After exiting the thought block, directly yield all subsequent chunks.

Transformação de modelo

A ferramenta Template transformation usa a sintaxe de modelo Jinja2 para permitir formatação flexível de texto e transformação de dados.

Input

O modo de transformação suporta Modo Jinja2 e Modo de referência de nó.

  • Modo Jinja2: Usa a sintaxe completa de modelo Jinja2 para personalizar o formato de saída. Este modo é adequado para saídas estruturadas complexas, lógica condicional e renderização de loops.

    • Variáveis de modelo: Defina as variáveis usadas no modelo.

      Importante

      Os nomes das variáveis não podem ser nomes de métodos integrados do Python, como items, keys ou values. Use nomes de campos específicos, como item_list ou product_list.

    • Conteúdo do modelo: Uma string de modelo escrita na sintaxe Jinja2. Suporta a sintaxe completa, incluindo substituição de variáveis {{ variable }}, loops {% for %}, declarações condicionais {% if %} e filtros {{ value | filter }}.

      Importante

      Todas as variáveis referenciadas no modelo devem estar definidas na lista de variáveis. Caso contrário, ocorrerá um erro.

  • Modo de referência de nó: Referencia diretamente a saída de nós anteriores e a concatena automaticamente em uma string. Este modo é adequado para cenários simples de combinação de texto.

    • Conteúdo do modelo: Selecione os campos de saída dos nós anteriores. O sistema os concatena automaticamente em ordem.

Output

output: O resultado em texto após a renderização do modelo. Nota: O comprimento do conteúdo do modelo de entrada e saída é limitado a 100.000 caracteres. Qualquer conteúdo que exceda esse limite será truncado.

Usage examples

Exemplo 1: Gerar um e-mail de confirmação de pedido

Configuração de variáveis:

Nome da variável

Valor da variável

customer_name

"John Doe"

order_id

"ORD-2025-001"

products

[{"name": "Laptop", "price": 8999}, {"name": "Wireless Mouse", "price": 199}]

total

9198

Conteúdo do modelo:

Dear {{ customer_name }}:

Your order {{ order_id }} has been confirmed. The details are as follows:

{% for product in products %}
- {{ product.name }}: ¥{{ product.price }}
{% endfor %}

Total: ¥{{ total }}

Thank you for your purchase!

Resultado da saída:

Dear John Doe:

Your order ORD-2025-001 has been confirmed. The details are as follows:

- Laptop: ¥8999
- Wireless Mouse: ¥199

Total: ¥9198

Thank you for your purchase!

Exemplo 2: Formatar resultados de recuperação de base de conhecimento

Configuração de variáveis:

Nome da variável

Valor da variável

chunks

[{"title": "Product Introduction", "content": "This is a detailed introduction to the product...", "score": 0.95}]

Conteúdo do modelo:

{% for chunk in chunks %}
### Relevance: {{ "%.2f" % chunk.score }}
#### {{ chunk.title }}
{{ chunk.content }}
---
{% endfor %}

Resultado da saída:

### Relevance: 0.95
#### Product Introduction
This is a detailed introduction to the product...
---

List operations

A ferramenta List operations permite realizar filtragem e ordenação flexíveis em vários tipos de dados de lista para processamento e seleção refinados de dados.

Input

  • Lista de entrada: Os dados de lista a serem processados. Suporta qualquer subtipo, como strings, números, booleanos, objetos de arquivo e dicionários.

  • Operações: Uma sequência de operações encadeadas executadas em ordem. Suporta dois tipos de operações: filtragem e ordenação.

    • Operação de filtro (filter): A operação de filtro fornece dinamicamente diferentes métodos de filtragem com base no tipo da lista de entrada. Nota: Todas as operações de filtro diferenciam maiúsculas de minúsculas.

      Chave de filtro

      Descrição

      Escopo

      Index

      Filtra com base na posição do elemento na lista.

      Aplica-se a todos os tipos de lista.

      Element value

      Filtra com base no valor do próprio elemento.

      Aplica-se a todos os tipos de lista.

      Custom attribute

      Filtra com base em um atributo personalizado.

      Aplica-se apenas a listas de dicionários.

      File attribute

      Filtra com base nos atributos de um arquivo.

      Aplica-se apenas a listas de arquivos.

      Atributos disponíveis:

      • file_id: O ID do arquivo.

      • file_name: O nome do arquivo.

      • file_type: O tipo MIME do arquivo.

      • source_uri: O URI do arquivo.

      • download_url: A url de download do arquivo.

      • category: A categoria do arquivo. Valores válidos: document, image, audio e video.

      • extension: A extensão do arquivo, como .jpg.

    • Operação de ordenação (sort): A operação de ordenação fornece diferentes métodos de classificação com base no tipo da lista de entrada.

      Chave de ordenação

      Descrição

      Escopo

      Element value

      Ordena com base no valor do próprio elemento.

      Aplica-se apenas a listas de strings, números ou booleanos.

      Custom attribute

      Ordena com base em um atributo personalizado.

      Aplica-se apenas a listas de dicionários.

      File attribute

      Ordena com base nos atributos de um arquivo.

      Aplica-se apenas a listas de arquivos. Os atributos disponíveis são os mesmos da operação de filtro.

Output

  • result: O resultado da lista processada.

  • first_item: O primeiro elemento da lista de resultados. Se a lista estiver vazia, o valor é None.

  • last_item: O último elemento da lista de resultados. Se a lista estiver vazia, o valor é None.

Usage examples

Exemplo 1: Classificação de arquivos - Filtrar por arquivos de imagem, ordenar pelo comprimento do nome do arquivo e pegar os 3 primeiros

Cenário: Um usuário faz upload de uma lista mista de vários tipos de arquivos. Você precisa filtrar por arquivos de imagem, ordená-los pelo comprimento do nome do arquivo e manter apenas os 3 primeiros para processamento subsequente de reconhecimento de imagem.

Configuração da operação:

Operation 1 - Filter (by file category):
  Filter key: item.category
  Filter operator: equals
  Filter value: image

Operation 2 - Sort (by file name length):
  Sort key: item.file_name
  Sort direction: asc

Operation 3 - Filter (take top 3):
  Filter key: index
  Filter operator: less than
  Filter value: 3

image.png

Exemplo 2: Análise de dados - Filtrar usuários com alta pontuação e obter os 5 melhores

Cenário: De uma lista de avaliações de usuários, filtre aqueles com pontuação igual ou superior a 80, ordene-os por pontuação em ordem decrescente e pegue os 5 melhores.

Lista de entrada:

[
  {"name": "Zhang San", "score": 95, "department": "Tech Dept"},
  {"name": "Li Si", "score": 72, "department": "Marketing Dept"},
  {"name": "Wang Wu", "score": 88, "department": "Tech Dept"},
  {"name": "Zhao Liu", "score": 91, "department": "Product Dept"},
  {"name": "Qian Qi", "score": 65, "department": "Marketing Dept"},
  {"name": "Sun Ba", "score": 98, "department": "Tech Dept"}
]

Configuração da operação:

Operation 1 - Filter (high-scoring users):
  Filter key: item.score
  Filter operator: greater than or equal to
  Filter value: 80

Operation 2 - Sort (by score descending):
  Sort key: item.score
  Sort direction: desc

Operation 3 - Filter (take top 5):
  Filter key: index
  Filter operator: less than
  Filter value: 5

image.png

Resultado da saída:

[
  {"name": "Sun Ba", "score": 98, "department": "Tech Dept"},
  {"name": "Zhang San", "score": 95, "department": "Tech Dept"},
  {"name": "Zhao Liu", "score": 91, "department": "Product Dept"},
  {"name": "Wang Wu", "score": 88, "department": "Tech Dept"}
]

Observações:

  • Se a entrada da ferramenta referenciar uma variável de saída do tipo list personalizada em um nó Python, defina um tipo de elemento claro para a lista no nó Python, como list[str]. Isso garante uma correspondência de operadores mais precisa no nó List operations.