Alura > Cursos de Inteligência Artificial > Cursos de IA para Programação > Conteúdos de IA para Programação > Primeiras aulas do curso Claude e Python: desenvolva assistentes com a API da Anthropic

Claude e Python: desenvolva assistentes com a API da Anthropic

Console e API da Anthropic - Apresentação

Olá, meu nome é Laís Urano, sou instrutora na Alura, e vou acompanhar você nesse curso de Python com a API da Anthropic. Para fins de acessibilidade, vou me autodescrever.

Audiodescrição: Laís Urano se identifica como uma mulher parda. Possui olhos e cabelos castanho-claros. Seus cabelos estão cacheados e volumosos e caem soltos até abaixo dos ombros. Usa delineador preto nos olhos e batom vermelho. Está sentada em uma cadeira gamer branca e rosa. Ao fundo, há uma parede lisa iluminada em tons de roxo, rosa e azul.

Pré-requisitos

Este conteúdo é para quem deseja aprender a trabalhar com a API da Anthropic e desenvolver projetos utilizando a linguagem Python. Para isso, é necessário que você tenha conhecimento nessa linguagem.

O que aprenderemos?

Aplicaremos tudo isso em um projeto de aplicativo de entregas para restaurantes, no qual desenvolveremos funcionalidades de assistência, além de testar conhecimentos em um novo contexto de detecção de possíveis fraudes de transações bancárias.

Aproveite os recursos da plataforma! Além dos vídeos, temos atividades, o fórum do curso e também a comunidade do Discord da Alura.

Console e API da Anthropic - Explorando o Workbench

Desenvolveremos um projeto utilizando a API da Anthropic, que trabalha com o modelo de linguagem da Claude.

Antes de entender como fazer esse projeto, precisamos compreender como essa API funciona. Para isso, utilizaremos o console da Anthropic, que abrimos no navegador. Esse console foi explorado melhor no vídeo de preparação do ambiente, portanto, recomendamos que assista a esse vídeo.

Conhecendo a API Anthropic

Na página do console da Anthropic, na aba "Dashboard", há uma mensagem inicial falando sobre créditos livres que receberemos se nossa conta for recém-criada. Abaixo dela, há uma mensagem de "Boa tarde" em inglês, acompanhada do nosso nome.

Todo o console está em inglês, no momento.

Temos algumas opções selecionáveis nessa tela, mas focaremos agora na guia "Workbench", à direita da guia "Dashboard".

Ao clicar em "Workbench" (bancada de trabalho), acessaremos a página de um "workbench disponível. Na barra superior, no canto esquerdo, temos um título, a versão desse projeto e o rótulo "Unsaved", dizendo que as configurações não foram salvas.

No centro dessa barra, temos as guias "Prompt" e "Evaluate", estando a primeira selecionada no momento.

Por fim, no canto direito dessa barra, temos os botões:

Nesse momento, focaremos no botão "Run".

Configurando o assistente

Abaixo da barra superior, na parte direita, há uma aba com uma mensagem inicial falando como podemos configurar as informações, mas não vamos focar nisso agora.

Já na parte esquerda, temos uma aba com o conteúdo da guia "Prompt". No topo dela, temos um campo chamado "System Prompt" (prompt do sistema), que é opcional, no momento.

Abaixo deste, temos um campo que precisamos preencher, chamado "User" (pessoa usuária), no qual enviaremos informações para a Claude. Digitaremos um "oi" dentro desse campo, e iniciaremos uma espécie de conversa com um chat.

Ou seja, a pessoa usuária enviará um "oi" e executaremos no botão "Run" para ter uma resposta do assistente na parte direita da tela, que será:

Olá, como posso ajudar você?

Nesse momento, queremos passar informações para esse assistente trabalhar. Portanto, apagaremos o "oi" e escreveremos o seguinte:

Você está responsável por traduzir todos os meus textos para inglês.

Abaixo dessa frase, escreveremos que ele pode começar:

Comece com:

Olá, tudo bem?

Queremos que ele faça a tradução da frase "Olá, tudo bem?". Para isso, executaremos novamente no "Run", e veremos a resposta na aba à direita:

Entendido. Vou traduzir seus textos para o inglês. Aqui está a tradução do primeiro texto:

"Hello, how are you?"

No entanto, não queremos que ele envie toda vez a mensagem dizendo que entendeu e vai traduzir. Queremos que ele traduza diretamente o conteúdo.

Para isso, voltaremos à aba da esquerda e clicaremos no botão "Add message pair" (adicionar um par de mensagens), abaixo do campo de pessoa usuária.

Ao clicar nele, são exibidos dois campos digitáveis em seu lugar: "Assistant" (assistente) e outro campo "User".

No campo do assistente, colaremos a frase "Hello, how are you?" fornecida pela Claude na aba da direita.

Hello, how are you?

No campo "User" escreveremos a próxima mensagem da pessoa usuária, que pode ser:

Minha cor preferida é roxo.

Feito isso, executaremos novamente com o botão "Run", e notaremos na aba da direita que ele enviou somente a mensagem traduzida, sem o texto adicional:

My favorite color is purple.

Nesse momento, sempre enviaremos a mensagem "você está responsável por traduzir os textos", adicionada no primeiro campo de pessoa usuária. Contudo, queremos que o assistente consiga compreender automaticamente qual é sua função quando enviarmos um texto como pessoa usuária.

Para isso, recortaremos essa informação inicial e colaremos dentro do campo "System Prompt".

Você está responsável por traduzir todos os meus textos para inglês.

Por fim, apagaremos a mensagem "Comece com:" do campo de pessoa usuária, mantendo somente o "Olá, tudo bem?".

Olá, tudo bem?

Com isso, enviaremos a mensagem inicial exatamente como uma pessoa usuária e o assistente saberá sua responsabilidade sem precisarmos informá-la.

Por fim, podemos apagar os dois campos adicionais que ativamos, clicando no botão "Delete both to maintain user & assistant alternation", cujo ícone é uma lixeira, localizado no canto direito do campo "Assistant".

Em seguida, clicaremos novamente em "Run" e veremos a reposta abaixo na aba da direita:

Hello, how are you?

Ou seja, ele conseguiu compreender sua função e está respondendo de acordo com o que pedimos.

Configurando o modelo

Agora, podemos configurar detalhes adicionais. Clicando em "Model settings", uma nova aba será exibida na parte direita, com três informações: "Model" (modelo), "Temperature" (temperatura), e "Max tokens to sample" (número máximo de tokens por amostra).

A temperatura corresponderá à criatividade de resposta, ou seja, o quão aleatória será essa resposta. Quando ela está no zero, indica que é uma resposta mais simples, utilizando palavras mais comuns no dia a dia, sem evoluir muito.

Contudo, ao arrastar o botão pela barra deslizante, podemos variar essa temperatura de zero até um, em intervalos de um décimo. O valor 1 será uma resposta mais complexa, com mensagens inéditas, palavras complexas, e assim por diante.

Já o campo do máximo de tokens da amostra corresponda à quantidade de mensagens de retorno que teremos. No caso, esse token se refere a um pedaço de mensagem, uma palavra inteira, ou até mesmo um caractere, de acordo com a forma na qual o modelo de resposta foi projetado.

Nesse campo, o valor máximo selecionado é de mil tokens de resposta, mas podemos arrastar o botão pela barra deslizante e selecionar até 8.192 tokens, variando de acordo com o que queremos nesse momento.

Manteremos o valor de mil, porque nossas respostas não precisarão de um espaço de retorno tão grande.

Por último, no campo de modelo, temos o "claude-3.5-sonnet-20240620", selecionado. Ao clicar nesse botão, veremos uma lista de modelos da Claude. Os modelos 1.2, 2.0 e 2.1 já são modelos legados, ou seja, não são recomendados. Por isso, focaremos nos modelos Sonnet, Opus e Haiku.

Mas como escolher qual modelo utilizar?

Fecharemos a aba "Model settings", clicando no "X" no canto superior direito, seguraremos a tecla "Ctrl" do teclado e clicaremos no botão "Docs", na barra superior, para acessar a documentação em uma nova guia do navegador.

A primeira coisa que devemos entender é que a escolha do modelo virá da pessoa desenvolvedora nesse momento.

Acessando a guia da documentação, no menu lateral esquerdo, buscaremos a seção "Learn about Claude" (aprenda sobre Claude), na qual clicaremos na opção "Models".

Na área principal, a seção "Models" fornecerá uma introdução do que são esses modelos, quais os modelos disponíveis no momento e uma breve contextualização de cada um.

Descendo essa página, veremos a seção "Model names" (nomes de modelos), com uma tabela de nomes. Precisaremos do nome do modelo ao trabalhar diretamente com a API, que não tem aqueles pontos disponibilizados.

Na tabela temos o nome completo dos modelos, com números que dizem respeito às suas atualizações.

Descendo mais a página, precisaremos focar na seção "Model comparison" (comparação de modelos). Ela exibe um gráfico indicando cada modelo por custo e inteligência.

Esse gráfico informa que o custo do modelo "3 Haiku" é o mais barato, porém não tão inteligente quanto os outros modelos, enquanto o "3.5 Sonnet", o qual utilizamos na execução daquela resposta, é o modelo mais inteligente disponível no momento. Já o "3 Opus" é o mais custoso, mas também possui nível de inteligência muito elevada.

Para saber como cada modelo se comporta, podemos acessar a tabela abaixo do gráfico, que informa sobre as configurações de modelo. Nela, o campo de descrição informa que o modelo "3.5" é o mais inteligente disponível atualmente na Anthropic.

Já o modelo "3 Opus", apesar de ser o mais caro, é o mais poderoso para tarefas mais complexas. Portanto, se precisarmos utilizar um modelo para tarefas mais complexas, este é o recomendado.

Por fim, o "3 Sonnet" tem atributos balançeados entre inteligência e velocidade, e o "3 Haiku", apesar de ser o mais barato, também possui a resposta mais rápida.

Outro aspecto que devemos levar em consideração é que cada modelo têm seus pontos fortes e fracos. Ao escolher um deles, precisamos levá-los em consideração também.

A tabela também informa os pontos de máximo output, ou seja, de saída máxima de tokens. Nesse quesito, o "Sonnet" tem 8.192 tokens de resposta, conforme já verificamos, enquanto os outros possuem 4.096.

Além disso, o campo "Cost" informa o custo por cada modelo, considerando respostas de entrada e saída. Isso é calculado por milhões de tokens, variando entre 3 e 15 dólares, no caso do "3.5", de 0.25 dólares a 1.25 dólares no modelo mais barato, e entre 15 dólares e 75 dólares no mais caro, "3 Opus".

Outro ponto de atenção a considerar é que esse curso está sendo gravado em agosto de 2024, ou seja, esses modelos são os disponíveis nessa data. Possivelmente, quando você estiver assistindo esse vídeo, haja outras informações nessa tabela, caso outros modelos tenham sido lançados.

Agora que sabemos essas informações, dependerá da nossa escolha decidir qual modelo utilizar. No caso desse curso, utilizaremos o modelo "3.5 Sonnet", mas, caso queira utilizar outro modelo, não tem problema nenhum, contanto que leve em consideração as informações de pontos fortes e custo de cada um.

Próximos passos

Voltando à guia do console da Anthropic, veremos que o título do prompt foi modificado de "Untitled" para "Ambiguous Greeting" automaticamente.

A seguir, exploraremos a guia "Evaluate", à direita de "Prompt", a qual ainda não acessamos.

Console e API da Anthropic - Trabalhando com variáveis

Aprendemos como desenvolver um prompt e trabalhar tanto com o prompt de sistema quanto com a pessoa usuária, utilizando a API da Anthropic no console. No entanto, há uma guia chamada "Evaluate" (avaliar) informando que precisamos de, pelo menos, uma variável para utilizar, e que não está disponível para nós.

No canto superior esquerdo da aba de prompt, se clicarmos no botão "Your prompts", uma aba é exibida na lateral esquerda com todos os prompts que temos. Na parte inferior da aba, há o botão "Create New Prompt" (criar novo prompt).

Ao clicar nele, um novo prompt chamado "Untitled" é gerado, e a mensagem de boas-vindas inicial, que já havíamos verificado anteriormente, aparece na aba da direita.

Na terceira parte dessa mensagem, é informado que, para escrever variáveis, devemos utilizar dois pares de chaves e o nome da variável entre eles.

Write variables like this: {{VARIABLE_NAME}}

Vamos fazer isso agora.

Criando variáveis

Clicando novamente em "Your prompts", no canto superior esquerdo, selecionaremos o prompt "Ambiguous Greeting" e adicionaremos uma variável nele.

Clicando nesse nome, renomearemos esse prompt para "Tradutor" na janela exibida e clicaremos em "Save".

Para utilizar uma variável, no lugar de escrever "Você está responsável por traduzir todos os meus textos para inglês" no campo "System Prompt", vamos apagar a palavra "inglês" e adicionar dois pares de chaves, abrindo e fechando, inserindo variavel entre eles.

Você está responsável por traduzir todos os meus textos para {{variavel}}

Após escrever, perceberemos que a variável será exibida em vermelho e um pequeno ícone de lápis aparece à sua direita. Ao clicar nele, uma aba na lateral direita é exibida, na qual há um campo para inserir um valor para essa variável.

Fechando essa aba no "X" do canto superior esquerdo e clicando em "Run", a aba aparece novamente, exatamente com o prompt que configuramos. No campo do valor da variável, vamos inserir "inglês".

inglês

Como sabemos, essa variável pode assumir qualquer valor que determinarmos. Ao definir que ela assumiu o valor "inglês" e clicar no botão "Run" na parte inferior dessa aba, é exibida a aba de resposta acima desta, com a mensagem "Hello, how are you?", traduzindo corretamente.

Hello, how are you?

Mas podemos alterar o valor da variável para "espanhol".

espanhol

Fazendo isso e executando novamente, a frase é exibida em espanhol.

Hola, ¿cómo estás?

Portanto, essa variável é utilizada para testar nosso prompt e verificar se ele está funcionando corretamente de acordo com as várias alterações que fazemos.

Testando os prompts

Com a variável criada, podemos acessar a guia "Evaluate" (avaliar), clicando nela, no centro da barra superior. Essa guia mostra as variáveis que utilizamos - "inglês" e "espanhol" - e quais foram as respostas de cada uma delas de acordo com o que inserimos.

Ou seja, como nosso prompt reagiu com aquele modelo e com a condição que definimos.

#{{variavel}}Model response#Add Comparison
1inglêsHello, how are you?-
2espanholHola, ¿cómo estás?-

Ao lado de cada linha da coluna de resposta do modelo, temos uma coluna com botões de lista suspensa contendo opções de avaliação entre 1 e 5, onde podemos definir se a resposta foi boa ou ruim.

Se definirmos que a resposta da variável "inglês" é 5 (Excelente), a média 5 é exibida no topo, no campo onde haveria o título dessa coluna. Contudo, se não gostarmos da resposta da variável "espanhol", podemos definir que ela possui a nota 3 (boa) e, com isso, diminuir a média para 4 (calculado entre os valores 5 e 3).

#{{variavel}}Model response4.00Add Comparison
1inglêsHello, how are you?5
2espanholHola, ¿cómo estás?3

Ou seja, podemos introduzir um processo de teste dos prompts no console por meio desse sistema de avaliação presentena guia "Evaluate".

Clicando no botão de alternância "Show Prompt", no canto superior esquerdo, mostraremos acima das variávels o prompt no qual estávamos trabalhando e suas condições - ou seja, o modelo, a temperatura e o limite de tokens configurados para essa resposta.

claude-3-5-sonnet-20240620 1.0 1000
Você está responsável por traduzir todos os meus textos para {{variavel}}.
Olá, tudo bem?

Além disso, podemos adicionar linhas na tabela de variáveis, clicando no botão "Add Row". Por exemplo, podemos inserir a variável "francês" no campo da variável e executar a resposta, clicando no botão "Run" da coluna "Model response".

Isso exibirá uma resposta em francês para o prompt, para qual podemos inserir a nota que quisermos (como 4, por exemplo) para calcular a média, e assim por diante.

#{{variavel}}Model response4.00Add Comparison
1inglêsHello, how are you?5
2espanholHola, ¿cómo estás?3
2francêsBonjour, comment allez-vous ?4

À direita do botão "Add Row", temos os botões "Generate Test Case" para gerar esses casos de teste e "Import Text Cases" para importar testes feitos em outros prompts. Já o botão "Export to CSV" permite exportar esses testes para utilizá-los em outro teste ou criar outro prompt de acordo com ele.

Voltando a selecionar a guia "Prompt", poderemos testar variáveis tanto no prompt de sistema quanto no da pessoa usuária. Clicando em "Your prompts", vamos acessar o prompt "Untitled" que criamos, renomeá-lo como "Listagem de alimentos" e salvar.

No campo "System Prompt", adicionaremos o prompt abaixo:

Responsável por listar apenas os nomes dos alimentos, sem adicionar descrição.

No campo "User", passaremos duas informações. Diremos que terá um prompt com a {{variavel_quantidade}}, e logo em seguida, alimentos com, passando o tipo de alimento que queremos com a {{variavel)alimento}}.

{{variavel_quantidade}} alimentos com {{variavel_alimento}}

Clicando no lápis no canto de uma das variáveis e acessaremos a aba da direita para colocar no campo {{variavel_quantidade}} a quantidade de três alimentos, e no campo {{variavel_alimento}}, definiremos o alimento como brócolis, por exemplo.

Ou seja, teremos três alimentos com brócolis e queremos que ele liste esses alimentos.

Clicaremos em "Run" para executar esse prompt, e nos resultados, ele informa que existem três elementos com brócolis: salada, sopa e quiche.

Aqui estão 3 alimentos com brócolis:

  1. Salada de brócolis

  2. Sopa de brócolis

  3. Quiche de brócolis

Se acessarmos a guia "Evaluate" e criarmos uma nova linha de variáveis clicando em "Add Row", podemos dizer, por exemplo, que teremos um alimento com carne.

Ao executar, clicando em "Run", ele informa um alimento com carne, como o hambúrguer.

#{{variavel_quantidade}}{{variavel_alimento}}Model response#Add Comparison
13brócolisAqui estão 3 alimentos com brócolis: 1. Salada de brócolis 2. Sopa de brócolis 3. Quiche de brócolis
 | -    | …              |

| 2 | 1 | carne | Aqui está uma lista de 1 alimento com carne:

1. Hambúrguer | - | … |

A variável é muito importante para compreender como elaborar cada prompt, o que mudar, como avaliar a informação que estamos passando, e assim por diante.

Agora que entendemos como trabalhar com o console da Anthropic, queremos saber como passar isso para uma linguagem como Python, a qual utilizaremos.

Clicando no botão superior direito, "Get Code", à esquerda de "Run" para exibir uma janela com uma mensagem de um código em Python. Acima deste, há um botão de lista no qual podemos escolher outras linguagens além dessa, como TypeScript.

Nessa mensagem de Python, ele mostra exatamente como colocar esse projeto trabalhado no console num projeto em Python. No interior do código, nas linhas 8 e 9, ele informa que as variáveis não poderão ser utilizadas nesse processo, porque não existe suporte para isso ainda.

# Replace placeholders like {{variavel_quantidade}} with real values
# because the SDK does not support variables.

Próximos passos

A seguir, faremos todo esse projeto sem utilizar variáveis, mas utilizando o Python.

Sobre o curso Claude e Python: desenvolva assistentes com a API da Anthropic

O curso Claude e Python: desenvolva assistentes com a API da Anthropic possui 107 minutos de vídeos, em um total de 47 atividades. Gostou? Conheça nossos outros cursos de IA para Programação em Inteligência Artificial, ou leia nossos artigos de Inteligência Artificial.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda IA para Programação acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas