Brincando com as Orquídeas, os Rótulos e a Gemini
Todo mundo já deve estar ouvindo falar da Gemini, nome derivado do latim que representa a constelação de Gêmeos e também a nova IA do Google, lançada em Dezembro de 2023. Atualmente ela está disponível como chat, substituindo o Bard, então agora você conversa com a Gemini. Outra forma de utilizar é através da Google Cloud onde você pode criar suas próprias aplicações. Uma forma de testar esses prompts, para que você possa desenvolvê-los, é no Google AI Studio. Através dele é possível testar vários cenários, alterar parâmetros e até gerar código em Python, Javascript, Kotlin, entre outros. Esse post tem o objetivo te ajudar a utilizar a Gemini com a SDK Python na sua máquina local e te mostrar umas coisas legais que dá para fazer.
Configurações Básicas
Primeiro de tudo você precisa gerar a chave de API da Google Cloud. Para isso vai em https://aistudio.google.com/ e clica em Get API Key. Detalhe importante: é necessário ter algum projeto na sua conta da Google Cloud para vincular a chave.
Após gerar a chave você vai salvá-la em uma variável de ambiente ou local. Uma dica importante, não coloque a sua chave de API diretamente no código, principalmente se você vai disponibilizar esse código para alguém. Ao invés disso você pode utilizar o dotenv, uma biblioteca python que permite criar um arquivo .env para salvar suas constantes e variáveis, dentro do projeto ele aparece como oculto.
# Uso de .env para armazenar a Google API Key como variável local
from dotenv import load_dotenv
load_dotenv()
Após essa configuração, você precisa instalar a Google AI Python SDK para poder trabalhar. Outro detalhe importante, use a versão 3.9 do Python para cima, versões menores não funcionam bem. Se você tem a versão 3.8, crie um ambiente virtual 3.9 e instale tudo nele. Dito isso, basta instalar via PyPi.
pip install -q -U google-generativeai
Como última configuração necessária é indicar para a aplicação a sua chave de API. Lembre das dicas que passei sobre não colocar diretamente no código. Atribua a sua chave a uma variável local e passe o nome da variável como parâmetro. Dessa forma as configurações estão feitas, agora é utilizar o modelo.
# Carregando variável Local .env
genai.configure(api_key=os.getenv('GOOGLE_API_KEY'))
Brincando com as Orquídeas e os Rótulos
A Gemini é uma IA multi-prompt, ou seja, ela aceita que você não envie somente textos, mas também imagens como prompt. O que torna ela bem mais poderosa e te permite muito mais aplicações. Para isso você vai trabalhar com o modelo Gemini Pro Vision. Utilize o código abaixo indicar qual modelo você vai utilizar, pois existem outras possibilidades.
import google.generativeai as genai
model_vision = genai.GenerativeModel('gemini-pro-vision')
Eu utilizei a imagem de umas orquídeas (foto autoral), é um tipo de flor que eu gosto bastante, claramente ele a identificou sem eu dizer que flor era, além disso pedi dicas de como cuidar delas, o modelo me passou uma lista de coisas. Detalhe importante: modelos de IA generativa são modelos probabilísticos, ou seja, a primeira resposta é a que possui maior probabilidade, por isso a cada execução pode vir um texto diferente. Mexendo em alguns parâmetros dá para deixar bem legal. Segue a imagem e o código que utilizei para gerar o prompt e a requisição.
img = Image('imagens/imagem.jpg')
img
# Obtendo informações de como cuidar das flores
response = model_vision.generate_content(["Como devo cuidar destas flores? Descreva-me em detalhes.", img], stream=True)
response.resolve()
Outra aplicação legal que fiz com a Gemini foi com relação a rótulos de produtos. Eu não sou da área de química, então às vezes leio alguns rótulos de produtos e não entendo o que de fato tem naquele produto. Por isso tirei foto de um rótulo de um produto que uso, não coloquei a marca, só para constar, enviei como prompt e perguntei o que tinha. Realizei alguns testes com várias formas de perguntar para obter a resposta que eu queria e o melhor prompt foi o que apresento a seguir.
response = model_vision.generate_content(["Quais itens temos neste rótulo? Descreva cada substância.", img], stream=True)
response.resolve()
O que mais gostei foi a resposta:
Água: É o principal componente da maioria dos produtos cosméticos. É usada para hidratar a pele e dar textura ao produto.
Tricетеareth-4 Phosphate: É um emoliente que ajuda a amaciar e suavizar a pele.
Glycol Stearate: É um emoliente que ajuda a hidratar e amaciar a pele.
PEG-2 Stearate: É um emoliente que ajuda a hidratar e amaciar a pele.
Sílica: É um pó mineral que ajuda a absorver o excesso de oleosidade da pele.
Methylene Bis-Benzotriazolyl Tetramethylbutylphenol: É um filtro solar que ajuda a proteger a pele dos raios UVB e UVA.
Dicaprylyl Carbonate: É um emoliente que ajuda a hidratar e amaciar a pele.
Ethylhexyl Triazone: É um filtro solar que ajuda a proteger a pele dos raios UVB.
Butylene Glycol: É um umectante que ajuda a hidratar a pele.
Cetyl Alcohol: É um emoliente que ajuda a hidratar e amaciar a pele.
Dibutyl Adipate: É um emoliente que ajuda a hidratar e amaciar a pele.
Isnonyl Isononanoate: É um emoliente que ajuda a hidratar e amaciar a pele.
C12–15 Alkyl Benzoate: É um emoliente que ajuda a hidratar e amaciar a pele.
Diethylamino Hydroxybenzoyl Hexyl Benzoate: É um filtro solar que ajuda a proteger a pele dos raios UVB.
Caprylyl Glycol: É um emoliente que ajuda a hidratar e amaciar a pele.
Ethylhexylglycerin: É um emoliente que ajuda a hidratar e amaciar a pele.
Glycerin: É um umectante que ajuda a hidratar a pele.
Disodium Cetearyl Sulfosuccinate: É um agente de limpeza que ajuda a remover a sujeira e o excesso de oleosidade da pele.
Pentylene Glycol: É um umectante que ajuda a hidratar a pele.
Hydroxphenyl Propamidobenzoic Acid: É um filtro solar que ajuda a proteger a pele dos raios UVB.
Xanthan Gum: É um espessante que ajuda a dar textura ao produto.
Disodium EDTA: É um conservante que ajuda a prevenir o crescimento de bactérias e fungos no produto.
Conclusão
Fazer as configurações básicas é simples, porém é preciso se atentar a alguns detalhes, o tutorial tem esse objetivo principal. No entanto, o mais importante dos experimentos realizados é mostrar como podemos utilizar a Gemini para aplicações do nosso cotidiano, principalmente com informações úteis. Espero que vocês possam ter mais ideias com este tutorial.
Todo o código desse tutorial e experimento está disponível no Github. É um repositório que manterei e vale a pena acompanhar. Lá eu coloco algumas funções para deixar o texto mais formatado.
Até breve!
#GeminiSprint
Google Cloud credits are provided for this project.