Lang Flow
Lang Flow
Lang Flow
SANDRO MOREIRA
LANGFLOW 1
LANGFLOW
Desenvolvimento Visual de Sistemas
Multi-Agentes com IA Generativa
SANDRO MOREIRA
LANGFLOW 3
fi
fi
À minha esposa Eveline, minhas lhas Isabela e
Isadora pelo apoio em todos os momentos
LANGFLOW 4
fi
SUMÁRIO
Capítulo 3 - Vamos criar um Chatbot com LLM usando Lang ow? Peque seu
capacete! ..................................................................................................................29
LANGFLOW 5
fl
fl
fl
fl
3.7 - Playground ........................................................................................................34
LANGFLOW 6
fl
fl
fl
9.4 - Crew AI - Um aliado poderoso! ........................................................................79
LANGFLOW 7
Capítulo 1
Introdução à IA Generativa
Há não muito tempo, o conceito de Inteligência Arti cial (IA) estava quase
exclusivamente associado à cção cientí ca. Obras de autores como Isaac Asimov e
lmes como "Perdidos no Espaço", "A Super Máquina", "O Exterminador do Futuro"
e "The Matrix" moldaram nossa percepção do que a IA poderia ser. Nessas histórias,
a IA frequentemente assumia papéis fantásticos e, por vezes, ameaçadores, gerando
uma série de mitos e especulações sobre seu potencial futuro. Entre esses mitos,
está a ideia de que uma IA poderia se tornar consciente e decidir que precisa se
defender dos humanos, um cenário apocalíptico que sempre volta às discussões
sobre o futuro da tecnologia.
LANGFLOW 8
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
Dessa forma, muitas IAs foram concebidas para tarefas isoladas como classi cação
de textos, reconhecimento de imagens, identi cação de padrões, previsões baseadas
em séries históricas de dados e detecção de anomalias. Essas IAs eram
essencialmente ferramentas especializadas, sem capacidade de criar ou inovar.
LANGFLOW 9
fi
fi
fi
fi
fi
fi
com os quais foi treinada, e às vezes pode combinar informações de maneiras que
não fazem sentido ou não são precisas. Por exemplo, uma IA treinada em um grande
conjunto de dados de texto pode gerar uma frase que é gramaticalmente correta,
mas factualmente errada.
LANGFLOW 10
fi
fi
fi
fi
1.1 - Aprendizado Profundo? Vem que eu te explico!
Imagine uma criança aprendendo a reconhecer um gato. Ele não decora uma
lista de regras como "tem bigodes", "tem quatro patas", "mia". Ao invés disso, ele
observa diversos gatos, absorvendo suas características e nuances até conseguir
diferenciá-los de outros animais.
LANGFLOW 11
fi
fi
fi
4. Os “pesos" das conexões são ajustados automaticamente para minizar o
erro entre a saída da rede e a resposta correta.
LANGFLOW 12
fi
fi
fi
Como pode imaginar, o termo “Large" não diz respeito apenas a sua grande
capacidade, pois esses modelos acabam-se por tornar grandes em quantidade de
parâmetros que a rede neural precisa calcular e processar, exigindo assim mais
recursos computacionais para serem utilizados.
LANGFLOW 13
fl
fi
fi
Na tabela acima podemos visualizar um comparativo dos modelos LLM
realizado pelo projeto LMSYS Chatbot Arena, uma plataforma aberta para avaliações
LLM que coleta mais de 1.000.000 de comparações humanas entre dois modelos
anônimos para classi car o desempenho dos modelos. Extraído em Julho de 2024.
(https://arena.lmsys.org)
LANGFLOW 14
fl
fi
fi
fi
fi
fi
fi
ff
A e cácia de um prompt depende muito de sua clareza e especi cidade.
Prompts bem formulados ajudam o LLM a entender melhor o contexto e a intenção
do usuário, resultando em respostas mais precisas e úteis. Quando um prompt é
claro, o modelo consegue identi car exatamente o que precisa ser abordado,
minimizando mal-entendidos e respostas irrelevantes.
Para ilustrar, considere dois exemplos de prompts sobre o livro "O Auto da
Compadecida". Um prompt especí co como "Escreva um resumo do capítulo três do
livro 'O Auto da Compadecida'" é detalhado e direciona o LLM a focar em uma parte
especí ca do livro, resultando em uma resposta mais precisa. Por outro lado, um
prompt vago como "Fale sobre 'O Auto da Compadecida'" é mais amplo e pode levar
a uma resposta genérica ou incompleta, já que não oferece um foco claro para o
modelo.
2. Especi que o Contexto: Para que o LLM possa fornecer uma resposta
relevante, é crucial fornecer um contexto adequado. Isso inclui
informações adicionais que podem ajudar o modelo a entender melhor o
que você está pedindo. Quanto mais contexto você fornecer, mais precisa
será a resposta.
LANGFLOW 15
fi
fi
fi
fi
fi
fi
fi
fi
3. Estruture o Prompt de Forma Lógica: A estrutura do prompt deve ser
lógica e clara. Use frases bem formuladas e organize a informação de
maneira que faça sentido.
Resposta do LLM:
Objetivo:
- Compreender e identificar diferentes figuras de linguagem.
- Aplicar as figuras de linguagem em produções textuais.
Duração: 50 minutos
Tópicos da Aula:
- Introdução e Definição
- Apresentação do tema e importância das figuras de linguagem
na comunicação.
- Explicação das principais figuras de linguagem (metáfora,
metonímia, antítese, hipérbole, personificação) com exemplos.
Exemplificação e Discussão:
LANGFLOW 16
fi
- Leitura e compartilhamento das frases, seguidos de uma
revisão dos pontos principais.
- Designação de uma tarefa de casa para reforçar o conteúdo
aprendido.
Resposta do LLM:
Objetivo:
Duração: 50 minutos
Recursos:
Plano de Aula
LANGFLOW 17
fi
Apresentação do Tema: Introduzir o objetivo da aula e a
importância de compreender os tipos de verbos para a construção
de frases corretas e expressivas.
Interatividade:
Avaliação
LANGFLOW 18
Exemplo 2: Criando uma persona para um assistente virtual
<exemplo>
Atenciosamente,
João Pereira
Gerente de Projetos
</exemplo>
LANGFLOW 19
Uma API (Interface de Programação de Aplicações) é um conjunto de regras e
protocolos que permite a comunicação entre diferentes softwares. Ela de ne os
métodos e dados que os desenvolvedores podem usar para interagir com
componentes de software, como serviços web, sistemas operacionais e bibliotecas
de software. As APIs facilitam a troca de informações e a utilização de
funcionalidades entre diferentes programas, o que é essencial para integrar um
modelo LLM.
Modelos como Google Gemini, GPT e Claude são oferecidos por meio de
APIs. Para utilizar esses modelos em suas aplicações, basta criar uma chave de API,
assinar o serviço adequado e seguir a política de preços de cada empresa. Com essa
chave, você pode fazer requisições enviando prompts aos modelos e receber suas
respostas, tornando o uso dessas tecnologias acessível e e ciente.
LANGFLOW 20
fi
fi
fi
Low Code é uma abordagem de desenvolvimento de software que minimiza
a quantidade de código manual necessário para construir uma aplicação. Em vez de
escrever linhas extensas de código, os desenvolvedores usam interfaces grá cas e
ferramentas de arrastar e soltar para criar aplicações. Plataformas Low Code
No Code vai um passo além do Low Code, permitindo que usuários criem
aplicações sem escrever nenhuma linha de código. Essas plataformas são projetadas
para ser ainda mais intuitivas, visando usuários que não têm experiência em
desenvolvimento de software. A construção é feita exclusivamente através de
interfaces visuais e con gurações, tornando a tecnologia acessível a um público
ainda maior.
LANGFLOW 21
fi
fi
fi
fi
Capítulo 2
LANGFLOW 22
fi
fl
fi
fi
2.1 - Seja bem-vindo ao Lang ow!
LANGFLOW 23
fl
fl
fl
fl
Lang ow é uma interface web para o LangChain (www.langchain.com),
projetada com react- ow e oferece uma maneira simples de experimentar e
prototipar uxos. O LangChain, foi criado por Harrison Chase e é um framework
extremamente popular para desenvolver aplicações com base em grandes modelos
de linguagem (LLMs).
LANGFLOW 24
fl
fl
fl
fi
fl
fl
fl
Obs: A versões do Lang ow utilizadas na produção desse livro fora a 1.0.10 e
1.0.14. É necessária a versão Python 3.10 ou superior instalada em seu computador
2 - Para con rmar que a versão local do Lang ow iniciou você pode acessar a
URL http://127.0.0.1:7860 de seu navegador.
LANGFLOW 25
fi
fi
fl
fl
fi
fi
fl
fl
fl
fl
fl
fl
fl
2.3 - Tour pelo Lang ow
LANGFLOW 26
fi
fl
fl
fl
fl
1 - Área de Trabalho Principal (Fluxos)
Drag and Drop: A área central da interface onde os usuários podem arrastar e soltar
componentes para construir seus uxos de trabalho. Cada componente representa
uma etapa no processo de desenvolvimento, como a importação de dados, pré-
processamento, treinamento de modelos e avaliação de resultados.
2 - Biblioteca de Componentes
3 - Painel de Propriedades:
Ajustes Dinâmicos: Modi cações em tempo real nos parâmetros, com feedback
imediato sobre como essas mudanças afetam o uxo de trabalho.
Execução de Fluxos: Botões e controles para iniciar, pausar e parar a execução dos
uxos de trabalho. Isso permite testar e ajustar rapidamente os sistemas
desenvolvidos.
LANGFLOW 27
fl
fi
fi
fi
fl
fi
fl
fl
fi
fl
4 - Teste e Distribuição:
Playground: Uma interface onde pode realizar interações com o uxo e testar seus
resultados.
API: Obtenção de códigos para integração de seu projeto com suas aplicações, sites,
etc.
LANGFLOW 28
fl
fi
fi
fl
Capítulo 3
LANGFLOW 29
fl
fi
fl
3.2 - Começando o Chatbot
Agora que nós já temos nossa chave de API, podemos criar o projeto no
Lang ow:
LANGFLOW 30
fl
fl
fl
LANGFLOW 31
3 - Um uxo inicial será criado utilizando 4 componentes conectados por
uma linhas:
LANGFLOW 32
fl
fl
fl
fl
fl
campo “Template" temos acesso a uma janela de personalização do nosso prompt
inicial. Que está personalizado como “Answer the user as if you were a pirate” (Responda
ao usuário como se fosse um pirata).
LANGFLOW 33
3.6 - Componente Chat Output
3.7 - Playground
LANGFLOW 34
fl
fi
fl
fl
Aí está, nosso primeiro chatbot utilizando o Lang ow! Você deve estar se
perguntando: Só isso? E a resposta é: Isso mesmo, só isso. Criamos nosso primeiro
chatbot interagindo com o OpenAI e não utilizamos nenhuma linha de código.
Se você ainda não tem sua chave de API do Gemini, pode criá-la facilmente
seguindo os passos abaixo:
2 - Clique sobre o botão “Criar chave de API”. Você pode criar um novo
projeto ou apenas adicionar uma nova chave a um projeto já existente.
LANGFLOW 35
fl
3.9 - Componente Google Generative AI (Gemini)
LANGFLOW 36
fl
fi
fi
fl
fl
fl
"Google API Key” e “Temperature" são semelhantes ao componente usado
anteriormente. Coloque sua nova chave e escolha o modelo desejado.
LANGFLOW 37
fi
em português? Tudo isso pode ser personalizado através do componente de Prompt
e, como deve se lembrar, está escrito em inglês no projeto padrão do Lang ow.
Então, basta que acessemos o componente para dar mais alguns direcionamentos ao
Gemini.
LANGFLOW 38
fl
seja ele OpenAI ou Google Gemini, apenas substituindo um componente. Aliás o
componente OpenAI nesse uxo cou sem utilidade e pode até ser deletado.
Para salvar seu projeto, você pode clicar no canto superior esquerdo da tela
do Lang ow (ao lado do ícone) para acessar a opção “Settings" e renomear o
projeto.
O mais legal é que podemos ainda fazer com que um uxo interaja com os
dois. E se um modelo LLM pudesse criar um texto para que o outro revise? Como
deve saber esses modelos de LLM tem custos e capacidades variadas, então eu
poderia deixar as tarefas mais simples para modelos mais baratos e mais simples e
as tarefas mais complexas para modelos mais caros, deixando meu projeto muito
mais interessante. Na verdade, vamos fazer isso nos capítulos seguintes. Let it Rip!
LANGFLOW 39
fl
fl
fi
fl
Capítulo 4
Esse novo uxo é bem parecido com o projeto que zemos anteriormente,
mas você pode observar que não tem uma entrada de interação com o usuário como
acontece em um chat, então as entradas do uxo cam por conta de “URL” e
“Instructions”.
Note que cada componente possui um ícone do tipo “play” no canto superior
direito. Isso permite que o componente pode ser executado individualmente. Você
precisa levar em conta sempre as entradas e saídas de cada um deles.
LANGFLOW 40
fl
fl
fi
fl
fl
fl
fl
fi
fi
LANGFLOW 41
4.1 - Componente URL
LANGFLOW 42
fl
fl
Nesse projeto, utilizamos
esse campo para colocar
textos que servirão como
referência de estilo de
texto para ajuste do
Prompt. Para renomear
um componente (como
foi feito com esse) basta
dar um duplo clique
sobre o nome.
LANGFLOW 43
fi
fi
fi
4.5 - Testando 1, 2, 3
Aqui está, o post para o seu blog pronto para ser postado, com o tema que
escolhemos e com o estilo literário que de nimos. Ah, se quiser em outro idioma
basta de nir isso no Prompt.
Legal, mas e se eu quiser criar um post para minha rede social como X
(antigo Twitter) ou Instagram? O funcionamento é o mesmo, apenas lembre-se de
delimitar o tamanho da resposta no seu Prompt pois nessas redes o tamanho do
texto é limitado.
LANGFLOW 44
fi
fi
fl
Capítulo 5
LANGFLOW 45
fi
fi
fi
fi
fi
fi
fi
Ao combinar um modelo de linguagem LLM com nossos próprios dados o
RAG permite o desenvolvimento de IA’s altamente personalizadas, o que pode
reduzir drasticamente a possibilidade de respostas erradas (alucinações) do modelo
e atender às necessidades especí cas do usuário.
5.2 - Embeddings
LANGFLOW 46
fi
fi
fi
A gura acima, obtida de (https://qdrant.tech/articles/what-are-
embeddings/) resume bem como funciona esse processo de Embedding. Os dados
são submetidos a modelos de Embedding que cria suas representações vetoriais
determinando sua posição, permitindo assim a
busca por similaridade no espaço multidimensional.
LANGFLOW 47
fi
fl
fl
fi
5.3 - Vector Store
LANGFLOW 48
fl
fl
fi
cassandra.apache.org/_/index.html), possui plano limitado de forma gratuita mas
pode facilmente ser ajustado para maiores capacidades sem impacto em seu projeto.
Um componente do Chroma DB (https://github.com/chroma-core/chroma)
também está disponível de forma nativa assim como outros já conhecidos.
LANGFLOW 49
fi
Capítulo 6
em um Arquivo Próprio
Nesse projeto vamos criar um chatbot que use um arquivo nosso para
responder as questões do usuário.
LANGFLOW 50
2 - O uxo do novo projeto será apresentado para que façamos nossos
ajustes:
LANGFLOW 51
fl
fl
Termine a con guração colocando suas credenciais no componente do
modelo LLM e faça o teste clicando na área de Playground:
LANGFLOW 52
fi
fi
Caso precise carregar mais de um arquivo, utilize o componente “Directory”
que pode carregar recursivamente vários arquivos, bastando informar a pasta onde
esses arquivos estão e quais os formatos permitidos.
LANGFLOW 53
fl
fl
Capítulo 7
Nesse projeto, a
título de exemplo, faremos
uso das técnicas de RAG
para criar um chatbot da
"Cartilha Dengue:
Pro ssionais da Atenção
Primária da Saúde -
Orientações para Diangóstico e Manejo Clínico”, criada pelo Ministério da Saúde em
formato PDF de 12 páginas e publicada em:
https://www.gov.br/saude/pt-br/centrais-de-conteudo/publicacoes/cartilhas/2024/
dengue-pro ssionais-da-aps-orientacoes-para-diagnostico-e-manejo-clinico/
@@download/ le
LANGFLOW 54
fi
fi
fi
fi
fl
Nesse exemplo utilizaremos como Vector Store o banco de dados AstraDB. A
primeira coisa a fazer é carregar nossos arquivos, criar nosso Embedding e
armazenar no AstraDB.
LANGFLOW 55
fl
exatamente o tamanho que podemos de nir para esses pedaços, que normalmente
são de nidos como 1000 tokens (palavras). O parâmetro “Chunk Overlap”
determina o tamanho da sobreposição de palavras no início e m de cada chunk,
com o intuito de que não seja perdido o contexto que se trata o trecho do texto. O
padrão aqui é de 200. A linguagem que será utilizada no Spitter ainda pode ser
personalizada. O padrão é a linguagem Python.
LANGFLOW 56
fi
fl
fi
fi
fi
6 - Como a saída do componente Splitter é um objeto do tipo Data,
precisamos conectá-lo a entrada do componente AstraDB, no conector “Ingest
Data”. E o componente Open AI Embeddings também será conectado ao AstraDB
no conector “Embedding or Astra Vectorize”.
Se você ainda não possui a coleção de dados criada no AstraDB, basta acessar
a URL: astra.datastax.com criar seu usuário (pode usar sua conta Google ou
GitHub).
Depois de criado o banco de dados, você poderá acessá-lo e ter clicar nas abas
de Overview (visão geral), Data Explorer (explorar dados) e Settings
LANGFLOW 57
fi
fi
(Con gurações). Mas o mais importante nesse momento de integrá-lo a nosso uxo
no Lang ow são os detalhes API Endpoint e Application Tokens
Acesse a aba Data Explorer dentro de seu database e clique sobre o botão
“Create Collection”. Dê um nome a sua coleção de dados, escolha a opção “Bring my
Own” porque faremos nosso próprio Embedding no uxo do Lang ow, escolha a
opção “1536” em Dimensions e em Similarity Metric, escolha “Cosine”.
LANGFLOW 58
fi
fl
fl
fl
fl
Vá até o quadro Application Token em Overview e clique em “Generate
Token” e copie o valor gerado e preencha o parâmetro no componente AstraDB do
Lang ow. Copie também o valor de API Endpoint e cole no componente. Preencha
também o parâmetro Collection Name com o nome que escolheu em em sua
coleção.
LANGFLOW 59
fl
fl
7.2 - Recuperando Dados em nosso Banco de Embeddings
LANGFLOW 60
fi
fl
fl
fl
fl
Parse Data encontra-se criada a variável {text}.
LANGFLOW 61
fi
7.3 - Testando Tudo
LANGFLOW 62
Parece uma resposta genérica do modelo LLM, então, como con rmar se
nosso chatbot está realmente buscando dados de nossa Cartilha? Vamos ser um
pouco mais incisivos perguntando algo direto:
O número que o chatbot respondeu parece preciso demais pra ter sido
“inventado” não acha? Vamos ver na Cartilha do Ministério da Saúde que
fornecemos ao modelo, na página 5:
Então, realmente ele está respondendo com base nas informações que
guardamos no AstraDB. Mas observe algo interessante se perguntarmos ao modelo
algo que não tenha nada relacionado à Dengue:
LANGFLOW 63
fi
Quando criamos um chatbot para um determinado domínio, queremos que
ele responda apenas a assuntos relacionados a aquele assunto, certo? Vamos
resolver isso ajustando nosso Prompt:
LANGFLOW 64
fi
Capítulo 8
Criação de Componentes no
Lang ow: Eu quero Programar!
LANGFLOW 65
fl
fi
fl
fl
fl
fl
fl
fl
fl
fi
Componentes personalizados facilitam a reutilização de código. Uma vez
criado, um componente personalizado pode ser reutilizado em múltiplos projetos,
economizando tempo e esforço de desenvolvimento e pode ser compartilhado com a
comunidade. Isso é particularmente útil em ambientes corporativos, onde diferentes
equipes podem compartilhar componentes desenvolvidos internamente,
promovendo uma cultura de colaboração e e ciência.
LANGFLOW 66
fl
fl
fi
fl
fl
fi
fi
Nessa janela poderemos escrever nosso próprio código Python com
instruções para o componente. Vamos substituir esse código padrão por esse:
class YouTubeTranscriptionComponent(Component):
display_name = "YouTube Transcription"
description = "Transcribe YouTube video using youtube-transcript-
api"
icon = "video"
inputs = [
MessageTextInput(
name="video_url",
display_name="YouTube Video URL",
info="URL of the YouTube video to transcribe.",
),
DropdownInput(
name="language",
display_name="Language",
options=["Portuguese", "English", "Spanish"],
info="Language of the transcription.",
),
]
outputs = [
Output(display_name="Transcription", name="transcription",
method="transcribe_video"),
]
LANGFLOW 67
def transcribe_video(self) -> Data:
video_url = self.video_url
language = self.language
video_id = self.extract_video_id(video_url)
language_code = self.get_language_code(language)
transcript = self.get_transcription(video_id, language_code)
LANGFLOW 68
Agora temos nosso próprio componente de transcrição de vídeos do
Yo u t u b e . E l e e s t á u t i l i z a n d o a b i b l i o t e c a d o p y t h o n c h a m a d a
youtube_transcript_api, então, ela precisa estar instalada. Caso não esteja, basta
utilizar:
LANGFLOW 69
fl
fl
fl
fl
8.2 - Criando um Componente de Geração de Imagem no
Dall-E
LANGFLOW 70
fl
2 - Vamos abrir o editor de código do componente e entrar com o seguite
código python:
class DallEImageGenerator(Component):
display_name = “Dall-E Image Generator"
description = “Generates an image using the OpenAI Dall-E model
from a text prompt."
icon = "image"
inputs = [
MessageTextInput(
name="prompt",
display_name="Text Prompt",
info=“Entre com o prompt para gerar a imagem",
),
SecretStrInput(
name="openai_api_key",
display_name="OpenAI API Key",
info="The OpenAI API Key to use for the OpenAI model.",
advanced=False,
value="OPENAI_API_KEY",
),
BoolInput(
name="activate_image_generation",
display_name="Activate Image Generation",
info="Toggle to activate or deactivate image
generation.",
),
]
outputs = [
Output(display_name="Generated Image", name="generated_image",
method="generate_image"),
]
LANGFLOW 71
return Message(text="Image generation is deactivated.")
prompt = self.prompt
openai_api_key = self.openai_api_key
client = OpenAI(api_key=openai_api_key)
try:
response = client.images.generate(
model="dall-e-3",
prompt=prompt,
size="1792x1024",
quality="standard",
n=1,
)
image_url = response.data[0].url
self.status = f"{image_url}"
return Message(text=image_url)
except Exception as e:
error_message = f"Failed to generate image: {str(e)}"
self.status = error_message
return Message(text=error_message)
LANGFLOW 72
Lembre-se de clicar no botão “Save” do menu suspenso do componente para
que seu componente esteja disponível para utilização em outros projetos.
class SaveToMarkdownComponent(Component):
display_name = "Save to Markdown"
description = "Saves the input text to a Markdown file."
icon = "file-alt"
inputs = [
MessageTextInput(
name="input_text",
display_name="Input Text",
info="Text to be saved in the Markdown file.",
),
MessageTextInput(
name="file_name",
display_name="File Name",
info="Name of the Markdown file.",
),
]
outputs = [
LANGFLOW 73
fi
Output(display_name="Status", name="status",
method="save_to_markdown"),
]
LANGFLOW 74
fi
Ao buscarmos por “lang ow”, a primeira opção que apareceu foi a versão
“Lang ow Componente Helper”, criada por um dos criados do Lang ow (Gabriel L
F Almeida); basta clicarmos sobre ela, escolher “Start Chat” para sermos levados ao
ambiente do ChatGPT mas com um conhecimento profundo de componentes no
Lang ow.
LANGFLOW 75
fl
fl
fl
fl
fl
Capitulo 9
Fluxos ou Agentes?
Um exemplo clássico de agentes físicos pode ser encontrado nos robôs, que
possuem sensores como câmeras, microfones e detectores de temperatura, que lhes
permitem perceber o ambiente. Eles também possuem atuadores, como motores e
braços mecânicos, que lhes permitem interagir sicamente com o mundo. Esses
robôs podem ser programados para realizar uma variedade de tarefas, desde a
navegação em um espaço até a manipulação de objetos, tudo isso de forma
autônoma, com base nas percepções que recebem e nas decisões que tomam.
LANGFLOW 76
fl
fl
fi
fi
fi
fl
fl
fi
fi
fl
fi
fi
fi
fl
agente de software pode ser um chatbot que interage com usuários humanos. Esse
chatbot percebe a entrada do usuário através de mensagens de texto, processa essa
entrada utilizando técnicas de processamento de linguagem natural (NLP), decide a
melhor resposta e, nalmente, envia uma mensagem de volta ao usuário.
LANGFLOW 77
fl
fi
fi
fi
fi
fl
fl
fi
fl
fl
fi
fi
fi
fl
Essa estrutura modular permite que cada parte do uxo seja con gurada e
ajustada individualmente, garantindo exibilidade e e ciência na execução das
tarefas. Em essência, um uxo no Lang ow atua como um agente inteligente,
integrando a percepção de entradas, o processamento de dados e a geração de saídas
para cumprir seus objetivos de maneira autônoma e e caz.
3 - Ação: Com base nas decisões tomadas, o uxo pode realizar ações
especí cas, como responder ao usuário, armazenar dados, fazer chamadas de API,
etc.
• Um componente de
processamento de
linguagem natural
analisa a consulta para
entender a intenção do
O fluxo recebe uma usuário. O fluxo gera uma resposta
consulta do usuário, que com as informações
pode ser uma pergunta solicitadas e a envia de
sobre um produto. • Outro componente volta ao usuário
verifica uma base de
dados para encontrar
informações relevantes
sobre o produto
mencionado.
LANGFLOW 78
fi
fl
fl
fl
fl
fl
fl
fi
fi
fl
fl
fl
fl
fi
No Lang ow, podemos criar um uxo com componentes de diferentes tipos
como: Input, recebe dados do usuário; LLM que processa a linguagem natural para
entender a intenção; Database que consulta uma base de dados; Chat Output ou
Save File, que gera e envia uma resposta ao usuário.
O Crew AI (https://www.crewai.com) é um
framework incrível criado pelo brasileiro João Moura
(https://github.com/joaomdmoura) para facilitar o
desenvolvimento e a coordenação de sistemas
multiagentes. Em um sistema multiagente, múltiplos
agentes independentes interagem e cooperam para
alcançar objetivos comuns ou resolver problemas
complexos. Esses agentes podem comunicar-se entre si, tomar decisões autônomas
e adaptar-se ao ambiente em tempo real.
LANGFLOW 79
fi
fl
fl
fi
Utilizar Crew AI integrado com Lang ow é uma abordagem poderosa para
construir sistemas multiagentes so sticados. A capacidade de criar uxos que
coordenam e integram múltiplos agentes autônomos permite o desenvolvimento de
soluções mais robustas e e cientes para problemas complexos.
Para instalar o Crew AI podemos utilizar o pip e ter Python >= 3.10 e
<=3.13:
a) Agente
LANGFLOW 80
fi
fi
fi
fl
fl
PAPEL META CONTEXTO
b) Tarefas
O Anel
Frodo deve liderar a missão para levar o
destruído na
Um Anel à Montanha da Perdição e
Montanha da
destruí-lo. Durante a jornada, ele deve Frodo
Perdição, o
manter comunicação constante com Sam Baggins
grupo retorna
para suporte moral e logístico. Frodo Sim
em segurança,
deve delegar tarefas a Aragorn e Legolas
todas as
para defender o grupo de ameaças
unidades
iminentes, enquanto Gandalf fornece
informadas e
orientação estratégica e mágica.
alinhadas.
c) Ferramentas
Exemplo:
Sting (Espada de Frodo): Ferramenta de Frodo para defesa e combate próximo.
LANGFLOW 81
fi
fi
9.6 - Criando uma Equipe
Agentes:
Tarefas:
Ferramentas:
LANGFLOW 82
Capítulo 10
Neste capítulo vamos utilizar componentes Crew AI para criar sistemas com
múltiplos agentes no Lang ow. Baseando-se os conceitos que vimos no capítulo
anterior sabemos que precisamos criar um planejamento de nossos agentes, suas
tarefas e ferramentas necessárias. No lang ow, precisaremos de componentes do
tipo Agent Crew, Componentes do tipo Sequential Task e, para agrupar esses
agentes em equipes, usaremos o Sequential Crew.
LANGFLOW 83
fl
fl
fl
10.1 - Agentes Envolvidos
LANGFLOW 84
fi
LANGFLOW 85
10.2 - Tarefas dos Agentes
LANGFLOW 86
LANGFLOW 87
10.3 - Criando os Prompts
Prompt para a Task do Comediante: Tópico: {topic} Crie uma postagem de blog
divertida sobre este tópico.
Conect a saída do Input Text (Tópico) à variável “topic" que criamos nos
prompts e conecte-os aos conectores “Description” de suas tarefas.
LANGFLOW 88
fi
LANGFLOW 89
10.4 - Sequential Crew
Pronto, agora você tem uma equipe com 3 agentes criando posts com uma
pitada de humor baseado no tópico que de nir pra eles.
LANGFLOW 90
fi
fl
fl
fi
fi
fi
fl
Capítulo 11
LANGFLOW 91
fl
fl
fl
fl
fi
fi
fl
fl
fi
fi
fi
fi
coletar os dados corretamente, o Langwatch pode ajudar a identi car onde ocorreu a
falha, seja em uma decisão errada do agente, uma falha na comunicação com a fonte
de dados ou um erro na lógica do uxo. Com essa análise detalhada, poderemos
ajustar o uxo ou corrigir o agente para melhorar a e ciência e a precisão da coleta
de dados.
LANGFLOW 92
fl
fl
fi
fi
fl
fl
fl
fi
fi
fi
fl
fi
fi
2 - Crie sua conta utilizando sua conta GMail ou Github (processo mais
simpli cado). A conta gratuita permite gerenciar apenas um projeto, se precisar de
mais projetos, pode escolher um plano de pagamento adequado.
4 - Na tela de Dashboard que abrir, capture a API Key gerada para realizar a
integração:
LANGFLOW 93
fi
fi
5 - Crie um arquivo .env em seu editor de textos com o seguinte conteúdo:
Agora, abra ou crie um novo uxo e interaja com o seu modelo pelo Playground,
acesse o Langwatch e veri que que os dados da sua interação agora esão registrados
em “Messages" podemos visualizar:
LANGFLOW 94
fi
fl
fi
fl
fl
Ao clicar sobre uma interação, podemos ver toda a cadeia de comunicação
entre os componentes, os tempos de execução, as mensagens trafegadas
LANGFLOW 95
fl
Capítulo 12
LANGFLOW 96
fl
fl
fl
fl
fl
fl
fl
Tweaks - Referem-se a ajustes ou personalizações, parâmetros como as
chaves de API, que você pode aplicar aos componentes
Se você acionar a opção “Tweaks” (no canto superior da janela de códigos) os
parâmetros ocultos serão adionados ao script gerado para integração. Tenha cuidado
ao compartilhar um código gerado assim porque as chaves de API carão visíveis.
<script src="https://cdn.jsdelivr.net/gh/logspace-ai/
langflow-embedded-chat@v1.0.3/dist/build/static/js/
bundle.min.js""></script>
<langflow-chat
window_title="Chatbot Pirata"
flow_id="cb8c5e6e-92cf-45e8-86f0-dd4403051e6c"
host_url="http://localhost:7860"
LANGFLOW 97
fl
fi
></langflow-chat>
Para projetos de agentes que executem tarefas mas não há interação com
usuário ou mesmo que quem em execução por tempo indeterminado, o ideal pode
ser criar um script python. Vamos da execução de um desses uxos feitos no
Lang ow:
Primeiro, certi que-se de que você o o equipameno que vai executar nosso
programa python tenha a versão superior a 3.11 instalada. Depois, basta criarmos
um script com o código que copiamos na aba Python Code do uxo desejado, nesse
exemplo será nosso uxo Gerador de Posts:
result = run_flow_from_json(flow="BlogWriter.json",
input_value="message",
fallback_to_env_vars=True, #
False by default
tweaks=TWEAKS)
Esse script precisa estar na mesma pasta onde salvei o uxo exportado do
Lang ow (BlogWriter.json). Lembre-se de que os valores TWEAKS estão ocultados
por padrão, mas você precisará preenchê-los no seu script:
LANGFLOW 98
fl
fl
fl
fi
fi
fl
fl
fl
Na aba “Python API” você pode marcar o seletor para que esses valores sejam
preenchidos e assim poderá levá-los ao seu script python. No meu caso, ele cou
assim:
TWEAKS = {
"URL-U7U4k": {
"urls": [
"https://ai.google/why-ai/"
]
},
"ParseData-sin6M": {
"sep": "\n",
"template": "{text}"
},
"Prompt-nF5Q9": {
"instructions": "",
"references": "",
"template": "Agora você é um redator de blog
especialista em colunas que tratam sobre Inteligência
Artificial para pessoas leigas. Escreva um texto para um
blog com base nas referências {references} e com os estilos
de escrita dos exemplos abaixo.\n\n---\n\n{instructions}
\n\n\n"
},
"TextInput-q1Nk4": {
"input_value": "Sempre descreva os recursos técnicos de
maneira didática"
},
"ChatOutput-mVIYJ": {
"data_template": "{text}",
"input_value": "",
"sender": "Machine",
"sender_name": "AI",
"session_id": "",
"store_message": True
},
"OpenAIModel-b7BFj": {
"input_value": "",
"json_mode": False,
"max_tokens": 1000,
"model_kwargs": {},
"model_name": "gpt-4o",
"openai_api_base": "",
"openai_api_key": "sk-proj-XXXXXXXXXXXXXXXXXXXXX",
"output_schema": {},
LANGFLOW 99
fi
"seed": 1,
"stream": False,
"system_message": "",
"temperature": 0.1
},
"CustomComponent-IPecb": {
"file_name": "posts.md",
"input_text": ""
}
}
Mensagem Final
LANGFLOW 100
fl
fi
fl
fi
fl
fi
fi
Referências e Links
Crew AI - https://www.crewai.com
LangChain - https://python.langchain.com
centrais-de-conteudo/publicacoes/cartilhas/2024/dengue-pro ssionais-da-aps-
https://openai.com/index/dall-e-3
LANGFLOW 101
fl
fl
fl
fl
fi
fi
Sandro Moreira
@SandroEnsinaAI
LANGFLOW 102