Programa
A Dify é uma plataforma fácil de usar que ajuda você a criar aplicativos de IA com pouco ou nenhum código necessário. Ele funciona arrastando e soltando blocos com diferentes funções. As informações fluem pelos blocos e são processadas e combinadas para gerar respostas.
Neste artigo, explicarei os fundamentos da Dify, orientando você nas etapas para criar um agente de viagens com IA.
Mantemos nossos leitores atualizados sobre as últimas novidades em IA enviando o The Median, nosso boletim informativo gratuito de sexta-feira que detalha as principais histórias da semana. Inscreva-se e fique atento em apenas alguns minutos por semana:
O que é a Dify?
A Dify é uma plataforma projetada para simplificar o desenvolvimento de aplicativos de IA sem a necessidade de grandes habilidades de codificação. Ele oferece um ambiente amigável e com pouco código, no qual os usuários podem criar aplicativos arrastando e soltando diferentes componentes.
Imagine a Dify como uma caixa de ferramentas digital repleta de blocos prontos que podem ser unidos para criar um software funcional. Essa abordagem torna a tecnologia mais acessível, permitindo que pessoas com conhecimento limitado de programação deem vida às suas ideias.
Cada tipo de bloco tem entradas e as transforma em saídas diferentes, dependendo do tipo de bloco. As informações são transmitidas e transformadas de bloco para bloco, produzindo o resultado final.
Como começar a usar a Dify
Temos duas maneiras de usar a Dify:
- Configuração local.
- Usando a versão em nuvem.
Neste tutorial, usaremos a versão em nuvem. A versão em nuvem da Dify oferece um plano gratuito, portanto, é possível que você siga este tutorial sem precisar de uma assinatura paga.
Se você estiver interessado na configuração local, a maneira mais fácil é:
- Faça o download ou clone do Dify no repositório oficial.
- Execute o Dify usando o Docker, conforme descrito na seção seção Início rápido do LEIAME do repositório.
Criando um fluxo de chat com a Dify
A Dify oferece vários tipos de aplicativos. Vamos nos concentrar na criação de um aplicativo Chatflow, que é um fluxo de IA em que os usuários usam uma interface de bate-papo para interagir com o agente.
Para criar um novo aplicativo Chatflow, primeiro clique em "Criar a partir do branco" e selecione a opção "Chatflow".
Para criar o fluxo, definimos um nome e, em seguida, pressionamos o botão "Create" (Criar):
Isso criará o seguinte fluxo padrão:
Esse fluxo tem três blocos:
- O bloco de início é responsável por iniciar o fluxo. No caso de um Chatflow, o fluxo é iniciado com o envio de uma mensagem pelo usuário.
- O nó do LLM recebe como entrada a mensagem do usuário e a envia para um LLM, neste caso,
gpt-4
. - O nó final é usado para exibir uma mensagem no bate-papo. Neste exemplo, ele está conectado ao nó LLM, de modo que a saída do nó LLM é enviada para o chat.
Esses três nós juntos criam efetivamente um chat de IA semelhante ao ChatGPT. Antes de executar esse aplicativo, precisamos instalar e configurar o plug-in OpenAI.
Instalando e configurando o plug-in OpenAI
Para instalar o plug-in OpenAI, faça o seguinte:
- Clique no botão "Plugins" no canto superior direito.
- Clique em "Instalar do Marketplace".
- Digite "openai" na caixa de pesquisa e clique no plug-in OpenAI.
- Selecione o plug-in OpenAI e clique em "Instalar".
Em seguida, precisamos configurar a chave da API da OpenAI. Se você ainda não tem um, crie-o aqui. Observe que o uso da API da OpenAI não é gratuito, portanto, você precisará associar um método de pagamento à chave da API.
Quando tivermos uma chave, poderemos configurá-la:
- Selecione o nó LLM.
- Clique no ícone de configuração ao lado do nome do modelo.
- Clique na lista suspensa de modelos na parte superior.
- Clique em "Model Provider Settings" (Configurações do provedor de modelo) na parte inferior da lista.
- Clique em "Setup" (Configuração) na seção de chave de API.
- Cole a chave da API e clique em "Save" (Salvar).
Executar o aplicativo
Agora você pode executar o aplicativo clicando no botão de visualização:
No momento, ele não é muito interessante, pois é apenas um chatbot de IA. Lembre-se de que ele não fará nada até que o usuário envie uma mensagem.
Criação de variáveis
A Dify permite que você armazene o estado do aplicativo atribuindo valores a variáveis que são acessíveis a todos os blocos.
Para criar uma variável, clique no botão de variável:
Vamos criar uma variável para armazenar o nome do usuário:
Essa configuração criou uma variável chamada name
que armazena uma string (texto). Deixamos o valor padrão vazio, portanto, inicialmente a variável será uma string vazia.
Há várias maneiras de preenchê-lo, mas a mais comum é usar um bloco de IA para descobri-lo automaticamente a partir da conversa. Você aprenderá a fazer isso mais tarde. Primeiro, aprendemos a verificar o valor de uma variável para controlar o fluxo do aplicativo.
Blocos IF/ELSE
Para verificar o valor de uma variável, podemos usar um bloco IF/ELSE. Esse bloco é usado para executar ações diferentes, dependendo do valor de uma variável.
Para adicionar um novo bloco, clique no botão "+" na parte inferior:
Em seguida, selecione o bloco que você deseja adicionar. Nesse caso, selecionamos "IF/ELSE":
Em seguida, clicamos no bloco para configurá-lo, selecionando a variável name
que criamos anteriormente.
Para testá-lo, adicionamos dois blocos Answer. Esses blocos são usados para exibir uma mensagem no bate-papo. Conectamos um deles à saída IF
(que é executada quando a condição é verdadeira) e o outro à saída ELSE
(que é executada quando a condição é falsa).
Para a saída IF
, defino a string "Sorry, I don't know your name" (Desculpe, não sei seu nome), enquanto para ELSE
, defino "Hello, {name}!" (Olá, {nome}!). Podemos usar as chaves para injetar uma variável em uma string. Isso também será útil mais tarde, quando você estiver criando prompts.
Você pode experimentar esse Chatflow clicando no botão "Preview" (Visualizar). Observe que um Chatflow é acionado por uma mensagem do usuário, portanto, precisamos enviar uma mensagem primeiro, como "Hi". Aqui estão os resultados, dependendo se o nome está definido ou não (eu o defini manualmente na variável de interface para o segundo exemplo):
Blocos de atribuição de variáveis e de extração de parâmetros
Podemos usar a IA para identificar e extrair os valores das variáveis usando um bloco Parameter Extractor. Esse bloco usa um LLM para extrair informações da conversa.
Primeiro, adicionamos um bloco Parameter Extractor conectado à ramificação IF
. Aqui está a configuração do bloco:
- O
INPUT VARIABLE
é definido comosys.query
, que corresponde à mensagem do usuário. Isso significa que o bloco Parameter Extractor tentará extrair o valor da mensagem do usuário. - Em
EXTRACTION PARAMETERS
, definimos as informações que estamos tentando extrair. Infelizmente, não podemos especificar diretamente uma variável aqui, portanto, precisamos redefinir essas informações clicando no botão "+".
- O campo
INSTRUCTION
é o prompt que orienta o LLM sobre o que você deve fazer. - Em seguida, adicionamos um bloco Variable Assigner para atribuir o valor extraído pelo Parameter Extractor (se houver) à variável
name
.
Certifique-se de atribuir o name
extraído à variável name
.
Após essa etapa, a variável name
pode ainda estar indefinida, pois pode ser que o usuário não tenha fornecido seu nome. Portanto, adicionamos outro bloco IF/ELSE para verificar. Se o nome estiver definido, cumprimentamos o usuário. Caso contrário, pedimos seu nome.
Aqui está um exemplo de interação:
Esse fluxo ilustra os fundamentos dos fluxos de trabalho da Dify. Não importa qual seja a mensagem do usuário, se o nome não estiver definido, ele tentará extrair o nome da mensagem. Se falhar, você o solicitará. Caso contrário, ele apenas cumprimenta o usuário pelo nome.
Nesse momento, não há bloqueio de LLM, portanto, o agente não fará mais nada.
Bloco de código
Os blocos de código podem ser usados para executar código Python personalizado. Vamos modificar o fluxo anterior para extrair a localização do usuário em vez do nome de usuário. Em seguida, usaremos um bloco de código para fazer uma solicitação a uma API de clima e enviar a previsão do tempo ao usuário.
- Crie uma nova variável chamada
location
. - Modifique os blocos IF/ELSE para verificar
location
em vez dename
. - Modifique o bloco Parameter Extractor para extrair o local em vez do nome.
- Modifique o bloco Variable Assigner para atribuir o valor extraído à variável
location
. - Modifique os blocos Answer para solicitar a localização e exibir a localização, respectivamente.
Após essas etapas, o fluxo deve ter a seguinte aparência:
Aqui está um exemplo de interação:
A próxima etapa é adicionar um bloco de código depois que você tiver o local. Esse bloco faz uma solicitação à API do OpenWeather para solicitar a previsão do tempo para esse local.
O uso dessa API é gratuito, desde que você não faça muitas solicitações.
Substitua o segundo bloco Answer por um bloco Code.
Configure-o para receber um único parâmetro com o valor location
.
Para o código Python, veja como podemos usar o pacote requests
para obter o clima da API OpenWeather:
import requests
API_KEY = "PASTE_YOUR_API_KEY_HERE"
def main(location: str) -> str:
base_url = "http://api.openweathermap.org/data/2.5/weather"
params = {
"q": location,
"appid": API_KEY,
"units": "metric",
}
response = requests.get(base_url, params=params)
data = response.json()
if response.status_code == 200:
weather_desc = data["weather"][0]["description"]
temp = data["main"]["temp"]
return {
"result": f"Current weather in {location}: {weather_desc}, Temperature: {temp}°C"
}
else:
return {
"result": "Could not retrieve weather data",
}
Por fim, conectamos a saída do nó Code a um nó Answer para exibi-la ao usuário.
Agora temos um Chatflow que pode nos informar a previsão do tempo:
Projeto: Criação de um agente de IA do planejador de viagens
Agora temos todas as ferramentas necessárias para criar um agente de viagens com IA. As possibilidades são infinitas, mas para não complicar demais este tutorial, vamos mantê-lo simples.
O agente se concentrará no planejamento de um único dia da viagem. Ele começará coletando a localização do usuário e os tipos de atividades que ele gosta de fazer. Para isso, usamos duas variáveis:
location
: Armazene o local para onde o usuário está viajando.activities
: Uma matriz de cadeias de caracteres que armazena as atividades que o usuário deseja realizar.
Veja como podemos criar um fluxo para extrair ambas as variáveis:
Neste exemplo, começamos com um bloco de extração de variáveis para extrair tanto o location
quanto a lista de activities
.
Em seguida, usamos blocos IF/ELSE para verificar se cada um desses parâmetros foi extraído e atualizar as variáveis, caso tenham sido. Ao contrário de nossos exemplos anteriores, isso permite que o usuário atualize os valores.
No final da extração de valores e da atribuição de variáveis, adicionamos outro bloco IF/ELSE para verificar se há valores ausentes. Se algo estiver faltando, pedimos explicitamente ao usuário que o forneça.
Se ambos location
e activities
estiverem definidos, usaremos o bloco de código que criamos anteriormente para obter o clima no local fornecido. Por fim, fornecemos o clima, o local e as atividades a um bloco LLM para planejar o dia do usuário.
O bloco LLM é configurado com um prompt do sistema que informa ao modelo o que fazer. O local, as atividades e o clima são injetados nele. Aqui está a parte final do fluxo:
Aqui está um exemplo de interação com o agente:
Vemos na resposta que, por causa do nó Code, o agente pode fornecer o clima ao usuário e levá-lo em consideração ao planejar as atividades.
Devido à forma como o fluxo foi configurado, se o usuário fornecer as informações imediatamente na primeira mensagem, o agente fornecerá diretamente um plano para o dia.
Definição de uma saudação personalizada
Você pode notar que o agente começou cumprimentando o usuário com uma mensagem:
Para ativar isso, precisamos ativar o recurso Conversation Opener.
Ferramentas Dify
Neste tutorial, aprendemos os blocos de construção fundamentais da Dify. Um aspecto que não abordamos foram as ferramentas.
Na Dify, as ferramentas são extensões poderosas que permitem que seus agentes de IA interajam com o mundo externo além das limitações de um modelo de linguagem. Embora um LLM possa raciocinar e gerar respostas com base em seus dados de treinamento e contexto de solicitação, ele não tem acesso em tempo real a dados ativos ou serviços externos.
As ferramentas resolvem isso permitindo que seu agente faça chamadas de API, consulte bancos de dados, realize cálculos, recupere documentos e muito mais, atuando essencialmente como uma ponte entre sua IA e as fontes de informações externas.
Você pode configurar ferramentas na Dify por meio da interface visual da plataforma, especificando o tipo de ferramenta (como solicitações HTTP, interpretadores de código ou plug-ins de terceiros), o esquema de entrada/saída e quaisquer requisitos de autenticação. Depois de configuradas, essas ferramentas podem ser usadas no fluxo do agente por meio de blocos de ferramentas, que permitem que você passe dados de e para a ferramenta e alimente os resultados em nós LLM ou em outros blocos lógicos.
Isso torna seus agentes não apenas mais inteligentes, mas também orientados para a ação, capazes de fornecer respostas atualizadas e contextualmente relevantes por meio da interação com serviços do mundo real.
Em nosso exemplo, usamos um bloco de código para fazer uma solicitação à API de clima. Uma alternativa teria sido criar uma ferramenta e fornecê-la ao LLM.
Conclusão
Neste tutorial, exploramos alguns dos blocos fundamentais de que você precisará para começar a trabalhar com a Dify. No entanto, a Dify oferece muito mais recursos e capacidades para você descobrir.
Para solidificar seu entendimento, um ótimo exercício seria aprimorar a agência de viagens que criamos. Considere adicionar recursos como os de pesquisa na Internet para encontrar atividades locais on-line, o que pode enriquecer a funcionalidade do agente e fornecer sugestões mais dinâmicas.
Se você estiver interessado em criadores de agentes de IA como a Dify, recomendo que confira nossos outros tutoriais para aprender mais: