Você não terá perdido o frenesi de emoção em torno do ChatGPT (Chat Generative-Pre-Trained Transformer). Ele pode criar imagens, escrever códigos, canções, poesias e tentar resolver nossos problemas, grandes ou pequenos. Pode não saber como vencer a simulação Kobayashi Maru de Star Trek, mas pode escrever código Python e Bash com facilidade. Com um push, também pode ser usado para escrever Código G para o melhores impressoras 3D embora ainda tenhamos que experimentá-lo em nosso Creality Ender 2 Pro.
Normalmente, interagimos com o ChatGPT pelo navegador, mas neste tutorial usaremos uma biblioteca Python especial que conectará nosso humilde Raspberry Pi à poderosa IA e nos fornece uma ferramenta para responder a quase todas as perguntas. Este projeto não é exclusivo do Raspberry Pi; também pode ser usado com PCs Windows, macOS e Linux. Se você puder executar o Python nele, é provável que esse projeto também funcione.
Se você estiver usando um Raspberry Pi, poderá usar quase qualquer modelo com este projeto, pois estamos simplesmente fazendo solicitações por meio de uma conexão com a Internet. No entanto, para um desempenho geral mais suave, recomendamos um Raspberry Pi 4 ou Raspberry Pi 3B+.
Configurando a chave API ChatGPT para Raspberry Pi
Antes de podermos usar o ChatGPT com nosso Raspberry Pi e Python, primeiro precisamos configurar uma chave de API. Essa chave permitirá que nosso código se conecte à nossa conta OpenAI e use AI para responder a perguntas, escrever código, escrever poesia ou criar a próxima música de sucesso.
1. Faça login na sua conta OpenAI.
2. Clique no menu e selecione Exibir chaves de API.
3. Clique em Criar nova chave secreta para gerar uma chave de API. Certifique-se de copiar e colar esta chave em algum lugar seguro, ela não será exibida novamente. Nunca compartilhe suas chaves de API, elas são exclusivas de sua conta, quaisquer custos incorridos virão de sua conta.
Instalando a API ChatGPT Python no Raspberry Pi
Com nossa chave de API em mãos, agora podemos configurar nosso Raspberry Pi e especificamente o Python para usar a API por meio da biblioteca openAI Python.
1. Abra um Terminal e atualize o software em seu Raspberry Pi. Este comando é duplo. Primeiro ele executa uma atualização, verificando se a lista de repositórios de software em nosso Pi está atualizada. Caso contrário, ele baixa os detalhes mais recentes. O “&&” significa que, se o primeiro comando (atualização) for executado corretamente, o segundo comando onde atualizaremos o software será iniciado. O sinalizador “-y” é usado para aceitar a instalação sem entrada do usuário.
sudo apt update && sudo apt upgrade -y
2. Instale a biblioteca openai Python usando o gerenciador de pacotes pip.
pip3 install openai
3. Abra o arquivo bashrc oculto em seu diretório inicial. Este arquivo é onde precisamos definir um caminho, um local onde o Raspberry Pi OS e o Python podem procurar arquivos executáveis/de configuração.
nano ~/.bashrc
4. Usando o teclado, role até o final do arquivo e adicione esta linha.
export PATH="$HOME/.local/bin:$PATH"
5. Salve o arquivo pressionando CTRL + X, depois Y e Enter.
6. Recarregue a configuração do bashrc para concluir a configuração. Em seguida, feche o terminal.
source ~/.bashrc
Criando um ChatGPT Chatbot para Raspberry Pi
O objetivo do nosso chatbot é responder às questões colocadas pelo utilizador. Contanto que a resposta possa estar no formato de texto, esse código de projeto funcionará. Quando o usuário terminar, ele pode digitar uma palavra para sair ou pressionar CTRL+C para interromper o código. Nós o testamos com fatos e perguntas triviais, depois pedimos para escrever código Python, Bash e um pouco de G-Code para uma impressora 3D.
1. Lançamento Thonnyum editor Python embutido. Você pode encontrá-lo no menu Raspberry Pi, em Programação >> Thonny.
2. Importe a biblioteca openai. Isso permite que nosso código Python fique online e ChatGPT.
import openai
3. Crie um objeto, model_engine e nele armazene seu modelo preferido. davinci-003 é o mais capaz, mas também podemos usar (em ordem de capacidade) “text-curie-001”, “text-babbage-001” e “text-ada-001”. O modelo ada tem o menor custo de token.
model_engine = "text-davinci-003"
4. Crie um objeto, open.api_key e armazene sua chave de API. Cole sua chave de API entre as aspas.
openai.api_key = "YOUR API KEY HERE”
5. Crie uma função, GPT() que recebe a consulta (pergunta) do usuário como um argumento. Isso significa que podemos reutilizar a função para qualquer pergunta.
def GPT(query):
6. Crie um objeto de resposta que passará os detalhes de nossa consulta ao ChatGPT. Ele usa nosso modelo e consulta escolhidos para fazer a pergunta. Definimos o gasto máximo de token para 1024, mas, na realidade, gastaremos muito menos para que isso possa ser ajustado. A “temperatura” controla o quão criativas as respostas podem ser. Quanto maior o valor, digamos 0,9, mais criativo o modelo tentará ser. 0.5 é uma boa mistura de criativo e factual.
response = openai.Completion.create(
engine=model_engine,
prompt=query,
max_tokens=1024,
temperature=0.5,
)
7. Retorne os dados do ChatGPT, removendo o texto da resposta e o número de tokens usados. Os dados retornados estão em um formato de dicionário/JSON, portanto, precisamos direcionar especificamente os dados corretos usando as chaves. Essas chaves retornam os valores associados.
return str.strip(response['choices'][0]['text']), response['usage']['total_tokens']
8. Crie uma tupla e use-a para armazenar uma lista de strings que podem ser usadas para sair do chat. As tuplas são imutáveis, o que significa que podem ser criadas e destruídas, mas não atualizadas pelo código em execução. Eles fazem configurações perfeitas de “definir e esquecer”.
exit_words = ("q","Q","quit","QUIT","EXIT")
9. Use try, seguido por while True: para instruir o Python a tentar executar nosso código e fazê-lo para sempre.
try:
while True:
10. Imprimir uma instrução para o usuárioneste caso como sair do chat.
print("Type q, Q, quit, QUIT or EXIT and press Enter to end the chat session")
11. Capture a consulta do usuário, usando um prompt personalizado e armazene em um objeto chamado consulta.
query = input("What is your question?> ")
12. Use um teste condicional para verificar se alguma das exit_words está presente exclusivamente na consulta. Podemos usar essas palavras em uma consulta, mas se forem as únicas palavras, o bate-papo será encerrado.
if query in exit_words:
13. Defina-o para que, se exit_words estiverem presentes, o código imprimirá “ENDING CHAT” e então use break para parar o código.
print("ENDING CHAT")
break
14. Crie uma outra condição. Essa condição sempre será executada se nenhuma exit_words for encontrada.
else:
15. Execute a consulta ChatGPT e salve a saída em dois objetos, res (resposta) e uso (tokens usados).
(res, usage) = GPT(query)
16. Imprima a resposta ChatGPT para o shell Python.
print(res)
17. Imprima 20 = em uma linha para criar uma barreira entre o texto do ChatGPT e imprima o número de tokens usados.
print("="*20)
print("You have used %s tokens" % usage)
print("="*20)
18. Crie um manipulador de exceção que será ativado se o usuário pressionar CTRL+C. Ele imprimirá uma mensagem de saída para o shell do Python antes que o código seja encerrado.
except KeyboardInterrupt:
print("\nExiting ChatGPT")
19. Salve o código como ChatGPT-Chatbot.py e clique em Executar para iniciar. Faça suas perguntas ao chatbot e, quando terminar, digite uma das exit_words ou pressione CTRL+C para sair.
Listagem de código completa
import openai
model_engine = "text-davinci-003"
openai.api_key = "YOUR API KEY HERE"
def GPT(query):
response = openai.Completion.create(
engine=model_engine,
prompt=query,
max_tokens=1024,
temperature=0.5,
)
return str.strip(response['choices'][0]['text']), response['usage']['total_tokens']
exit_words = ("q","Q","quit","QUIT","EXIT")
try:
while True:
print("Type q, Q, quit, QUIT or EXIT and press Enter to end the chat session")
query = input("What is your question?> ")
if query in exit_words:
print("ENDING CHAT")
break
else:
(res, usage) = GPT(query)
print(res)
print("="*20)
print("You have used %s tokens" % usage)
print("="*20)
except KeyboardInterrupt:
print("\nExiting ChatGPT")