Usando o Gemini Pro da Google para analisar o sentimento do mercado de ações

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

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *