A análise de sentimentos é uma aplicação da inteligência artificial muito interessante que permite inferir o sentimento predominante com base num conjunto de informações. Neste artigo vamos criar uma aplicação Python acessando a API da IA generativa Gemini PRO da Google para inferir o sentimento existente no mercado de ações em relação a determinada ação de uma empresa.
Vamos precisar de uma API KEY , ou chave secreta para ter acesso à API do
Gemini Pro, você a pode obter em https://makersuite.google.com/app/apikey
Vamos testar nossa aplicação dentro do ambiente do Google Colab onde já existe
uma versão do Python superior à 3.9, necessária para poder usar os modelos de IA
generativa disponíveis no Gemini Pro (Gemini Pro e Gemini Pro Vision)
Dentro do ambiente do Google Colab na pastinha de SECRETS (com o ícone de uma chave) armazenar a api key (chave) obtida anteriormente dentro de uma variável,
por exemplo “GOOGLE_API_KEY” e habilitar a opção de “Acesso ao Notebook”,
para ela ficar disponível dentro de sua aplicação quando recuperar os dados do
usuário.
Vamos começar fazendo a importação das bibliotecas necessárias:
import pathlib
import textwrap
import google.generativeai as genai
Importo minhas variáveis de usuário do ambiente do Google Colab mantendo a privacidade de minha chave (GOOGLE API KEY):
from google.colab import userdata
from IPython.display import display
from IPython.display import Markdown
Em alguns caso o uso da instrução response.text é suficiente para imprimir um texto de forma legível. Em outros casos, quando queremos uma formatação melhor do texto utilizamos o formato MARKDOWN. Criamos uma função simples para converter texto sem formatação para o formato Markdown.
def to_markdown(text):
text = text.replace(•, *)
return Markdown(textwrap.indent(text, > , predicate=lambda _: True))
Recupera dos dados do usuário a variável GOOGLE_API_KEY, com sua chave (API key) de acesso ao modelo escolhido do Gemini Pro. No nosso caso o modelo é o Gemini Pro mesmo para trabalhar com prompts de texto, ao invés do Gemini Pro View que permite trabalhar com imágens.
GOOGLE_API_KEY=userdata.get(GOOGLE_API_KEY)
# Caso deseje listar todos os modelos de IA generativa disponíveis pode utilizar
# o seguinte trecho de código, dentro do FOR, caso contrário, não precisa.
#for m in genai.list_models():
# if generateContent in m.supported_generation_methods:
# print(m.name)
##
Selecionamos o modelo de IA Generativo a ser utilizado, no caso gemini-pro para prompts em modo texto.
model = genai.GenerativeModel(gemini-pro)
O gemini-pro não trabalha com textos multimodais mas existe a opção de trabalhar
com o recurso de embeddings que permitiria quebrar esta restrição do gemini-pro.
Neste exemplo para manter a coisa simples coloquei todo o string de texto numa
linha só, desta forma driblo a restrição do texto não ser multimodal e mantenho
o exemplo simples. Claro que para textos maiores o recurso de embeddings é a
única alternativa possível. Em um futuro exemplo vou mostrar como trabalhar com
embeddings.
meu_prompt = "Qual o sentimento do mercado em relação às ações da Petrobras com base nas seguintes informações? Petrobras (PETR4) paga hoje 2a parcela de R$ 15. Petrobras desiste da venda de suas ações da Usina Elétrica a Gás de Araucária. Petrobras (PETR4): ações fecham em alta em dia de pregão volátil, As ações preferenciais da Petrobras (PETR4) subiram 0,23% nesta sexta-feira (15/12/2023), cotadas a R$ 35,40. O Ibovespa, por sua vez, recuou 0,49%, aos 130.197,10 pontos. Petróleo fecha em baixa, com dólar impulsionando a sessão. Perspectivas sobre o relaxamento monetário nas principais economias ajudaram a conter a queda hoje (15/12/2023). Os contratos futuros de petróleo fecharam com modestas perdas nesta sexta-feira (15/12/2023), em correção após os ganhos das duas últimas sessões, mas de forma insuficiente para impedir uma valorização semanal. Dados mistos e a recuperação do dólar amplificaram a pressão, embora perspectivas por relaxamento monetário nas principais economias ajudem a conter queda."
As informações sobre o exemplo, no caso a Petrobras, ações e noticias do mercado do petróleo foram extraidas dos principais veículos de comunicação. A ideia é analisar o sentimento do mercado com base nas informações disponíveis.
E agora, as instruções para exibir o resultado desta análise, ou seja, o sentimento do mercado no momento em relação às ações da Petrobras. Claro que com base nas informações que eu disponibilizei para ele, que podem ser incompletas ou não.
response = model.generate_content(meu_prompt)
print(response.text)
Não foi necessário o uso da função criada anteriormente, to_markdown, ela gerou um texto com formatação falha. A instrução response.text já foi suficiente para gerar um texto legível.A análise de sentimento do mercado dele foi a seguinte:
O mercado está otimista em relação às ações da Petrobras.
A empresa pagou hoje a segunda parcela de R$ 15,2 bilhões de dividendos, o que é um sinal de solidez financeira. A Petrobras também desistiu da venda de suas ações da Usina Elétrica a Gas de Araguaína, o que indica que a empresa está confiante em seu potencial de geração de caixa.
As ações preferenciais da Petrobras (PETR4) subiram 0,23%, a R$ 35,40, enquanto o Ibovespa recuou 0,49%, aos 130.197,10 pontos. Isso indica que os investidores estão mais confiantes nas ações da Petrobras do que no mercado como um todo.
A seguir, o código completo:
import pathlib
import textwrap
import google.generativeai as genai
from google.colab import userdata
from IPython.display import display
from IPython.display import Markdown
def to_markdown(text):
text = text.replace(•, *)
return Markdown(textwrap.indent(text, > , predicate=lambda _: True))
GOOGLE_API_KEY=userdata.get(GOOGLE_API_KEY)
# Caso deseje listar todos os modelos de IA generativa disponíveis pode utilizar
# o seguinte trecho de código, dentro do FOR, caso contrário, não precisa.
#for m in genai.list_models():
# if generateContent in m.supported_generation_methods:
# print(m.name)
model = genai.GenerativeModel(gemini-pro)
meu_prompt = "Qual o sentimento do mercado em relação às ações da Petrobras com base nas seguintes informações? Petrobras (PETR4) paga hoje 2a parcela de R$ 15. Petrobras desiste da venda de suas ações da Usina Elétrica a Gás de Araucária. Petrobras (PETR4): ações fecham em alta em dia de pregão volátil, As ações preferenciais da Petrobras (PETR4) subiram 0,23% nesta sexta-feira (15/12/2023), cotadas a R$ 35,40. O Ibovespa, por sua vez, recuou 0,49%, aos 130.197,10 pontos. Petróleo fecha em baixa, com dólar impulsionando a sessão. Perspectivas sobre o relaxamento monetário nas principais economias ajudaram a conter a queda hoje (15/12/2023). Os contratos futuros de petróleo fecharam com modestas perdas nesta sexta-feira (15/12/2023), em correção após os ganhos das duas últimas sessões, mas de forma insuficiente para impedir uma valorização semanal. Dados mistos e a recuperação do dólar amplificaram a pressão, embora perspectivas por relaxamento monetário nas principais economias ajudem a conter queda."
response = model.generate_content(meu_prompt)
print(response.text)
O Gemini Pro se saiu muito bem fazendo a análise de sentimento do mercado, com base nas informações fornecidas. Aprovado com louvor. Espero que tenham gostado.
Autor: Ernesto Villafuerte Oyola
Mestre em Ciências da Computação / IA