Apresentação: Como resultado de minhas experiências com as IA generativas, como o ChatGPT e outros, pedi para ele escrever um conto do tipo romance ao estilo do escritor peruano-espanhol Mario Vargas Llosa. Em breves linhas dei para ele os pontos principais que deveriam constar no romance assim como a época em que deveria acontecer. O resultado, para mim que gosto de escrever, me agradou muito, ficou um conto bonito, espero que vocês gostem e ilustra a capacidade criativa da inteligência artificial generativa.
“Era o século XVIII em Lima, uma cidade onde as sombras da Cordilheira dos Andes se estendiam sobre as vidas dos habitantes. Em uma humilde casa nos Andes peruanos, vivia Quilla, uma jovem de alma selvagem, livre como as águias que pairavam nos céus. Seu coração bateu em ritmo acelerado quando, em uma visita à capital, ela conheceu Diego, o filho da proeminente família González.
O amor entre Quilla e Diego floresceu como uma flor rara em um terreno árido, mas não passou despercebido. A aristocracia limeña, rígida em suas tradições, repudiou o romance. A família de Diego, temerosa de manchar sua reputação, ergueu barreiras intransponíveis. O patriarca, Don González, de voz firme e olhar austero, proclamou que a linhagem dos González não se misturaria com sangue indígena.
A sociedade limenha murmurava, ecoando o preconceito enraizado. Quilla, resistente como a terra dos Andes, enfrentou a adversidade com dignidade. Ela representava a resistência dos indivíduos frente à opressão social.
Diego, dividido entre o amor e a lealdade à sua família, encontrou-se em um dilema angustiante. A Cordilheira dos Andes, que outrora parecia intransponível, tornou-se uma barreira entre os amantes. Quilla, enfrentando o preconceito, buscou suas raízes, e Diego, confrontando sua própria identidade, lutou contra as correntes da tradição.
O conto de amor proibido ecoou pelas vielas de Lima, ganhando tons épicos. Nas festividades da cidade, mascarados celebravam e dançavam, enquanto os amantes secretamente trocavam olhares furtivos. Quando perguntados a respeito do romance o casal apaixonado respondia: “Cada um de nós é uma resistência viva”.
O desfecho do romance proibido tornou-se uma tragédia, ecoando os elementos dramáticos de uma sociedade dividida com grandes barreiras sociais. A sociedade implacável e a família obstinada forçaram os amantes a escolherem entre o amor e a submissão às convenções sociais. O sacrifício de Quilla e Diego tornou-se um elogio à resistência individual em face da opressão, uma narrativa que ressoava nas montanhas dos Andes e nas ruas de Lima.
A história de Quilla e Diego, como outros grandes romances épicos, transcendeu as fronteiras do tempo. Um testemunho da luta contra a rigidez social, o conto permaneceu gravado nas páginas da história de Lima, uma cidade onde os suspiros dos amantes proibidos se misturaram aos ecos das montanhas que testemunharam seu amor impossível.”
Autor do artigo:
Ernesto Villafuerte Oyola Professor de IA Generativa www.aomega.com.br
Este ano foi um ano disruptivo, com o surgimento do ChatGPT, modelo de inteligência artificial generativa ou LLM (Large Language Model), a inteligência artificial chegou de maneira avassaladora ao usuário final , de uma forma que surpreendeu todo mundo com sua facilidade de uso, a qualidade de suas respostas a perguntas das mais variadas em linguagem completamente coloquial, interagindo conosco de forma semelhante a uma conversação com um ser humano.
Agora o ChatGPT já se encontra na sua última versão, o ChatGPT-4 que é muito superior a versão anterior e que está disponível gratuitamente, o ChatGPT 3.5 . A Google que até então despontava na área de inteligência artificial , foi surpreendida pela OpenAI, criadora do ChatGPT, mas não demorou muitos meses para dar sua resposta, o Bard, que também apresenta respostas de muita qualidade e é um concorrente à altura do ChatGPT. Tanto o ChatGPT como o Bard entretanto ainda tem um problema, as “alucinações”, que acontecem quando estes não sabem a resposta e tentam responder dando respostas não baseada nos fatos, passam a “alucinar”, e dar respostas mirabolantes. Isto já está procurando ser corrigido.
Mas o que eu queria abordar é outro assunto, o que tão seguras são essas IAs generativas? A Microsoft incorporou o ChatGPT no Bing, que por sua vez já colhia e armazenava dados relacionados com nossas pesquisas podendo traçar um perfil do usuário. O Bing com ChatGPT vai continuar colhendo dados nossos, com ajuda agora da inteligência artificial? Práticamente certo que sim, assim como o Google faz, embora a empresa criadora do Bing com ChatGPT incorporado se esforce para tranquilizar os usuários dizendo que vai ser respeitada sua privacidade… “Morde aqui!” 😊 E isso também vale para o Google Bard e o próprio ChatGPT. Não por acaso existe a recomendação para empresas de não usar dados sigilosos nas interações com a nova inteligência artificial. Já houve denuncias de empresas que tiveram seus dados vazados fora do ambiente corporativo após interação de seus funcionários com o ChatGPT. Muitas empresas passaram a proibir o uso do ChatGPT dentro das empresas.
Mas tem como evitar que isto aconteça? Bom, primeiro você tem que entender que tanto o ChatGPT como o Bard respondem rapidamente a nossas requisições (prompts) porque eles estão hospedados em servidores muito poderosos com grande capacidade de computação. Então, como a maioria dos usuários e empresas não possui servidores com essa capacidade computacional, depende dos servidores do ChatGPT e Bard (agora com nova LLM embutida, o novo Gemini Pro).
Poderiamos ter uma versão do ChatGPT ou do Bard (com Gemini pro) hospedada nos servidores das próprias empresas usuárias? Não creio que a OpenAI ou a Google vão permitir isso. E mesmo que permitissem, quem garante que eles não vão continuar enviando informações sigilosas para fora da rede interna da empresa? Qual a saída então?
O uso de software livre! O software livre tem como característica não ser proprietário, ou seja não pertence a nenhuma empresa especificamente, mas é desenvolvido e mantido por uma comunidade de usuários. Ele permite também acesso ao código fonte, que pode ser auditado para detectar possíveis comportamentos indesejados como os que mencionei anteriormente. Pode ser instalado nos servidores internos da própria empresa, na sua intranet. Ah legal, você vai me dizer. Mas existe algum software livre de qualidade que possa competir com o ChatGPT ou o Bard? A resposta é SIM!!!
Embora menos conhecidos existem as LLMs de código aberto como o Llama do Facebook mas que embora seja de código aberto não garante que o Facebook decida em algum momento torná-lo proprietário. O Llama tem mostrado excelente qualidade nas suas respostas podendo compreender e responder em vários idiomas. Tem ainda subconjuntos dele cuja proposta é criar LLMs especializadas em determinadas tarefas em vez de tentar abarcar qualquer assunto. O Codellama-34b-instruct é um exemplo, que pretende se especializar na compreensão criação de código e trabalha com 34 bilhões de parâmetros.
Outra LLM, que considero ainda mais interessante é o MISTRAL, projeto da Fundação Apache, com muitas subvariantes. Testei recentemente o mixtral-8x7b-instruct que apresentou excelente qualidade nas suas respostas. O projeto do MISTRAL é um autêntico projeto de software livre, com código aberto, que pode ser alterado pelo usuário, e que pode ser distribuído livremente, com alterações ou não. Melhor ainda, ele pode ser instalado nos servidores de uma intranet de uma empresa ou até mesmo no computador de um usuário! Claro que você vai precisar ter capacidade computacional instalada poderosa e suficiente para poder rodar a LLM. Não tanto quanto nos servidores do ChatGPT ou Bard porque sua proposta não vai ser atender solicitações do mundo inteiro mas apenas os funcionários de sua empresa ou um usuário individual, dependendo do caso.
Para rodar o Mistral localmente no seu computador já aviso que o mínimo é um processador com poder computacional semelhante a um Core i7 de 12 geração, com 16 Gb de RAM e 1 Tb de espaço e disco no mínimo. Uma placa gráfica poderosa vai tornar sua vida mais fácil, como a serie de placas NVIDIA RTX-080 ou superior, com uma boa memória RAM.
Existe o site da Perplexity Labs (https://labs.perplexity.ai/ ), que permite testar online via prompt várias destas LLMS como as variantes da Llama, do Mistral e outros projetos. Você pode comparar a performance de cada uma delas, lembrando que alguma delas são especializadas, podendo se sair melhor realizando o tipo de tarefa para a qual foram especializadas em relação a outras tarefas. Pelos testes que a comunidade já realizou, na qual me incluo, o Mistra tem desempenho semelhante ao ChatGPT 3.5 , só que é LIVRE (ou LIBRE como prefere a comunidade).
Tem ainda a possibilidade de você baixar uma dessas LLMs para seu computador e rodar localmente como já tinha mencionado. Uma maneira fácil de fazer isso é com ajuda do LM Studio (https://lmstudio.ai). Você pode baixar a versão do LM Studio apropriada para seu sistema operacional, existem versões para Windows, para Mac e para Linux.
Uma vez instalado você pode escolher qual a LLM que você gostaria de baixar e instalar como sua LLM de trabalho. Além das versões do Llama e Mistral existem muitas outras disponíveis. Eu baixei e instalei a versão do Mistral, mixtral-8x7b-instruct. Embora minha máquina tenha 16 Gb de RAM, meu processador seja o Core i7 de 12ª. geração e tenha 1Tb para armazenar dados, minha placa gráfica é NVIDIA mas não é a RTX 080. Também não tenho GPUs instaladas. Mas mesmo com essas limitações consegui enviar alguns prompts localmente no meu computador para o mixtral e obter respostas. Perguntei em português e ele respondeu em português. Em outra ocasião ele respondeu em inglês mas pedi para ele traduzir sua resposta para o português, o que ele fez. O tempo de resposta foi de vários minutos mas não importa, eu tinha uma IA generativa morando no meu computador e respondendo minhas solicitações. Foi uma experiência libertadora, foi como se uma IA tivesse se mudado da nuvem para meu notebook. Pelo menos foi isso que eu senti, sei que essa sensação foi emocional apenas, mas eu estava muito contente. Por outro lado sei que uma IA de código aberto como a do projeto Mistral, da Fundação Apache era confiável e não estaria transmitindo meus dados pelo ciberespaço. Num ambiente corporativo, é claro que seria possível montar um ambiente computacionalmente poderoso o suficiente para rodar o Mistral ou outra LLM com uma boa performance. Espero que tenham gostado. No momento que escrevo este artigo, não sabia se seria o meu último artigo de 2023 ou o primeiro de 2024, vai depender de quando você o ler. Abraços e um bom 2024 para todos!
Ernesto Villafuerte Oyola
Analista de Dados e Engenheiro de Software Mestrado em Inteligência Artificial – COPPE/UFRJ Aomega Consultoria e Treinamento https://www.aomega.com.br
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.
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.
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
Vamos criar um script em Python para utilizar o módulo deep-translator junto com o ChatGptTranslator da OpenAI API para mostrar de uma forma simples como traduzir um arquivo texto em qualquer linguagem para outra linguagem, no nosso exemplo, para o português.
É importante observar que o tamanho do texto tem uma limitação do ChatGptTranslator assim que textos muito grandes precisam ser divididos em segmentos menores no script em Python para ir gerando iterativamente um arquivo maior traduzido. Não vamos fazer isso aqui porque queremos mostrar o processo de tradução de uma forma simples e direta.
Precisamos primeiro instalar o módulo deep-translator:
pip install deep-translator[ai]
precisaremos também importar a biblioteca ChatGptTranslator. O código ficaria assim:
from deep_translator import (ChatGptTranslator)
translated = ChatGptTranslator(api_key='minha-key-da-openai_api', target='portuguese').translate_file('zdnet.txt')
with open('zdnet_traduzido.txt', 'w', encoding='UTF-8') as f:
f.write(translated)
Como fica evidente no código também precisamos ter uma chave de acesso (api key) da OpenAI, que pode ser obtida no próprio site da OpenAI.
Em nosso exemplo utilizei um arquivo que denominei “zdnet.txt” contendo um artigo em inglês da publicação online ZdNet e via programação o traduzi para o português gerando o arquivo “zdnet_traduzido.txt”.
Tem causado muita polêmica os recentes eventos na OpenAI com a demissão e posterior retorno de Sam Altman ao cargo de CEO. O estopim da crise, que já começou há mais de um ano, foi aparentemente os avanços no desenvolvimento de uma nova ferramenta, a Q* (Q Star ou Q Estrela). A nova ferramenta seria muito boa nos cálculos com algoritmos matemáticos. Um exemplo desse tipo de algoritmo seria a determinação de rotas ótimas entre vários pontos. O uso da inteligência artificial permitiria por exemplo o uso de conhecimento do mundo real ou também podemos dizer que permite o uso de conhecimento heurístico, termo mais utilizado na área de IA na resolução de problemas com algoritmos matemáticos. O que não foi dito ainda é que o uso da IA para este tipo de problema já era amplamente utilizado com sucesso antes do uso massivo do machine learning e da IA generativa. A deficiência do machine learning é a tal “caixa preta”, ele consegue obter soluções mas na maioria das vezes não sabemos como ele fez exatamente para chegar a essa solução, coisa que não existia nos primeiros métodos de resolução de problemas utilizados pela IA. A IA generativa por sua vez também é deficiente na resolução de problemas matemáticos embora seja fantástica na análise de textos e predição de resultados com base no texto disponível. Então a IA generativa até certo ponto pode se dizer que estava “incompleta” caso a pretensão fosse chegar a IA Geral, com capacidade de raciocinio semelhante ao ser humano. Teria que se criar uma técnica de integrar a capacidade de resolver problemas matemáticos complexos do início da IA com as técnicas de machine learning e deep learning e da IA generativa. Mas isto não quer dizer que fazer esta integração permita chegar à IA Geral, mas teoricamente seria um passo a mais nessa direção. Uma técnica muito utilizada em IA na resolução de problemas era o uso do A* (A Star ou A Estrela) que permitia o uso de heurísticas ou conhecimento do mundo real na resolução de problemas. Quando vi o nome da nova ferramenta da OpenAI, Q*, automaticamente me veio à lembrança o uso da classe de algoritmos A*, que eu utilizei na minha tese de mestrado de IA, décadas atrás para a determinação de caminhos ótimos entre vários pontos, levando em consideração conhecimento sobre o mundo real. Coincidência dos nomes Q* e A* ? Desconfio que não.
Mas voltando ao título deste artigo, as ferramentas existentes de IA e mais recentemente de IA generativa tem permitido realizar e automatizar processos antes restritos aos seres humanos de uma forma muito eficiente e com resultados de boa qualidade. O objetivo da automação sempre foi esse, criar algoritmos, técnicas e sistemas que consigam nos fazer economizar tempo, superar nossas limitações como seres humanos e obter soluções confiáveis, de boa qualidade. Isso tem sido possível cada vez mais desde o início da computação e o desenvolvimento dos primeiros sistemas de informação. Temos evoluído cada vez mais e os bons resultados obtidos com o uso da IA nos permitiram continuar progredindo nessa evolução, agora em novas áreas de atuação. A IA generativa ao disponibilizar ferramentas de fácil utilização pela maioria dos usuários, com excelentes resultados, que, olho vivo… ainda estamos explorando incipientemente, nos permitirão milhares de novas formas de utilização na medida em que estas ferramentas forem cada vez mais aplicadas no dia a dia das pessoas e estas descobrirem novas utilidades. Grandes avanços tem sido conseguidos. Então a pergunta de se existe alguma razão para ansiedade por ainda não termos chegado na IA Geral, com inteligência supostamente semelhante ou superior à de um ser humano? Não, claro que não. Já temos muito que explorar com as ferramentas disponíveis e com isso obter novas formas de nos beneficiar.
Autor: Ernesto Villafuerte Oyola
Mestre em Ciências de Computação e CEO da Aomega Treinamento
Mas o Bing já tinha essa funcionalidade há vários meses atrás. E pessoalmente gosto mais da interface do Bing, é só clicar no microfone e perguntar. Ele automaticamente responde em texto e via voz.
O recurso de voz do ChatGPT foi liberado para todos, incluindo usuários gratuitos, nesta terça-feira (21). A ferramenta permite interagir com o chatbot tal como um assistente virtual do tipo Google Assistente ou Amazon Alexa.
Basicamente, a ferramenta dispensa totalmente as interações por texto. O recurso torna a interação mais natural, prática e útil para o dia a dia.
Em uma demonstração divulgada no X, a OpenAI mostrou como o chatbot responde ao ser questionada sobre quantas pizzas pedir para cerca de 800 pessoas. A resposta ponderou o tamanho de cada fatia e a quantidade de pedaços por convidado e concluiu que seriam necessárias 195 pizzas.
Neste primeiro momento, a ferramenta é exclusiva do aplicativo para celular (Android ou iOS). O recurso pode ser acessado a partir do atalho ilustrado com ícone de fones de ouvido e a gravação pode acontecer de forma manual, com o toque sobre a tela, ou automática.
Dentro do ChatGPT, usuários podem escolher entre cinco vozes: Breeze, Cove, Sky, Ember e Juniper. As vozes foram geradas a partir da colaboração com profissionais e é alimentado pelo Whisper, um sistema de reconhecimento de fala de código aberto da OpenAI.
Recurso do ChatGPT está em fase de teste desde setembro
As interações por voz do ChatGPT estão em experimentação desde setembro deste ano. A ferramenta foi inaugurada com usuários pagantes, mas agora pode ser utilizada por qualquer pessoa com acesso ao app.
Vale ressaltar que a ferramenta não é o mesmo que a entrada de comandos de texto por voz (também disponível no app). Essa outra ferramenta permite inserir texto a partir do reconhecimento de voz, mas as respostas são impressas na tela.
Na praia já há um bom tempo e o pensamento voou para o ChatGPT. Vou chamar o ChatGPT pelo meu celular mesmo.
Queria que ele gerasse o código em Python de um algoritmo de pesquisa binária. Logo tenho que ser bem claro em meu prompt sobre o resultado que desejo, o tipo de processamento que desejo seja realizado, assim como as informações que vão servir de entrada.
Prompt: Gerar o código em Python de uma classe de nome PesquisaBinaria que possui o método “pesquisar”. Este método recebe dois argumentos, um é um array contendo nomes e o outro é o nome a ser pesquisado. Este método realiza pesquisa binária e vai retornar True caso o valor pesquisado seja achado e False caso contrário.
Resposta do ChatGPT :
simplesmente comece a usá-lo abaixo!
class pesquisaBinaria: def init(self, lista): self.lista = lista
def pesquisar(self, nome):
inicio = 0
fim = len(self.lista) – 1
while inicio <= fim:
meio = (inicio + fim) / 2
if self.lista[meio] == nome:
return True
elif self.lista[meio] < nome:
inicio = meio + 1
else:
fim = meio – 1
return False
Ele gerou ainda uns dados para teste e um exemplo para teste do código:
Mas para confirmar se tudo estava certo copiei o código gerado no Google Colab e executei o teste. O resultado foi “True” como esperado. Rodei novamente o teste com meu nome:
print(pesquisa.pesquisar(“Ernesto”))
O resultado foi False. O CHATGPT fez um trabalho perfeito. Obrigado CHATGPT!
Compartilho com vocês este pequeno projeto de minha autoria. Consegui integrar uma aplicação PHP com a OPENAI API e ainda realizar uma customização para conseguir fazer com que o ChatGPT embutido na minha aplicação respondesse perguntas específicas sobre minha empresa após “treinar” ele com minha “base de conhecimento”. Para os que preferem assistir em video segue a seguir o video que criei no Youtube:
Neste artigo ensinarei como acessar a API da OpenAI dentro de nossa aplicação. Mas eu quero que ele responda mensagens específicas sobre a minha empresa. Para isso eu preciso “ensinar” ele, passando informações sobre minha empresa que eu quero que ele esteja apto para responder a um visitante do meu site.
Eu desenvolvo há vários anos em PHP e gosto muito. O PHP já nasceu sendo uma linguagem de desenvolvimento Web , não preciso aprender muitas tecnologias nem frameworks para criar uma aplicação Web além de HTML ,CSS e o próprio PHP. Assim que foi disponibilizado a API criada pela OpenAI para fazer uso do ChatGPT dentro de várias linguagens meu interesse foi saber se já existia alguma coisa para o PHP. O próprio site da OpenAPI exibe uma forma de se conectar com a API via Curl no PHP. Mas não consegui fazê-la funcionar e vi que a solução adotada por muitos passava longe do uso do Curl e sim pelo uso de uma biblioteca desenvolvida por uma comunidade de software livre bastante divulgada, no projeto “openai_php/client” que permite criar no PHP um cliente para a OpenAI API.
Vamos precisar trabalhar com o PHP versão 8.1 ou superior e ter o Composer instalado em nossa máquina.
Instalar o Composer é muito simples (em ambos os casos você deve ter o comando PHP disponível no terminal):
Se você estiver no Windows, só precisa baixar o arquivo composer-setup.exe que adicionará automaticamente o comando Composer ao PATH do seu sistema.
No UNIX/Linux você deve baixar composer.phar digitando a linha curl -sS https://getcomposer.org/installer | php no seu terminal. Você pode então executar o compositor utilizando php composer.phar
Também precisaremos utilizar nossa chave (Key) para autorizar o nosso acesso à OpenAI API. Se você não possui uma Key precisa obter uma se registrando em https://chat.openai.com.O Composer é amplamente utilizado pela comunidade de desenvolvedores PHP para instalar pacotes adicionais no PHP. Em nosso caso, precisaremos do Composer para instalar o pacote do cliente da OpenAI API, denominado de OPENAI_PHP/CLIENT. A seguir o comando para instalar o pacote na pasta raiz de nosso site.
composer require openai-php/client
Agora vamos criar um arquivo PHP, por exemplo aomegachatgpt_000.php, para criar o cliente do OPENAI API em nosso código:
require “vendor/autoload.php”; $yourApiKey = “xp-Tuskdk2993wo\eldldlXQ”; // chave fake $client = OpenAI::client($yourApiKey); $response = $client->chat()->create([‘model’ => ‘gpt-3.5-turbo’, ‘messages’ => [ [‘role’ => ‘user’, ‘content’ => ‘Qual é a atividade principal da “Aomega Treinamento e Consultoria” cujo site está em “http://www.aomega.com.br” ?’], ], ]);
$yourApiKey – variável para armazenar nossa KEY pessoal obtida após nosso registro no site da OpenAI. A nossa KEY não pode ficar visível para o mundo, lembre que o uso de nossa KEY da OpenAI API é pago se exceder o limite gratuito para testes, e o valor pago varia de acordo com o tráfego acumulado de nossa aplicação. Algumas pessoas armazenam a KEY dentro de um arquivo de ambiente do tipo .ENV mas esse arquivo poderia ser acessado por alguém externamente e “roubar” nossa KEY. Então é melhor nossa KEY estar apenas no servidor, no caso dentro de nosso script PHP, assim ela fica mais protegida.
$client – cliente da API obtido instanciando o método client da classe OpenAI do pacote instalado por nós utilizando o Composer.
Existem vários modelos disponíveis na API da OpenAI que podemos utilizar segundo a nossa conveniência. Não vou entrar aqui em detalhes sobre cada um desses modelos, alguns podem ser mais rápidos e outros mais poderosos, dependendo a finalidade que desejamos obter. Entre os modelos temos : gpt-3.5-turbo, da-vinci, curie, babbage, ada. O modelo da-vinci costuma ser mais rápido e com menor custo e atender em muitos casos as nossas necessidades. Em nosso exemplo estamos usando o modelo gpt-3.5-turbo mais versátil e poderoso, mais apropriado para um chat, embora acarrete num custo levemente maior.
$response – Objeto gerado após a criação com nosso cliente de um chat com o modelo gpt.3-5.turbo.
messages – array atributo de nosso cliente contendo a chave “role” ou papel, que no caso é o usuário interagindo (“user”), a chave “content” com o texto de nosso prompt com nossa solicitação ao chatgpt.
E logo depois inseri o texto de minha solicitação:
Qual é a atividade principal da “Aomega Treinamento e Consultoria” cujo site está em http://www.aomega.com.br ?
Para capturar e visualizar a resposta do ChatGPT a minha solicitação posso acrescentar o seguinte código no final:
foreach ($response->choices as $result) { $result->index; // 0 $result->message->role; // ‘assistant’ $result->message->content; // ‘ $result->finishReason; // ‘stop’ } echo echo $result->message->content; // resposta do chatgpt a ser exibida na tela de resposta ao usuário.
Repare que depois de instanciado nosso cliente com nosso prompt, o valor do “role” muda de “user” para “assistant”. O assistente é que vai fornecer a resposta no atributo “content” atualizando o valor desta com a resposta do chatgpt à solicitação do usuário.
Bom, com esse código já dá para testar, mas reparem que eu forneci no código o texto do prompt, ele está fixo. O ideal seria ter uma tela com um formulário para que o usuário possa digitar o texto de sua solicitação em um formulário de um script PHP contendo o código mostrado anteriormente e exibisse a resposta na tela.
Vamos incrementar nosso script que vou denominar de aomegachatgpt2.php acrescentando o código HTML necessário no final.
<?php // código PHP mostrado anteriormente ?> <!DOCTYPE html> <html> <head> <title>Converse com o Aomega-GPT e esclareça suas dúvidas sobre nossos treinamentos</title> </head>
<body> <h1>Converse com o Aomega-GPT e esclareça suas dúvidas sobre nossos treinamentos</h1> <form method=”POST” action=”aomegachatgpt2.php”> <?php if (isset($result)) { echo $result->message->content.”<br/><br/>”; } ?>
<h3>O que você gostaria de saber?</h3><br> <textarea id=”duvida” name=”duvida” rows=”4″ cols=”50″> </textarea><br>
Agora nosso código PHP está perfeito, temos o ChatGPT embutido em nossa aplicação funcionando. Mas não é isso que quero apenas. Quero que o ChatGPT possa responder perguntas específicas sobre minha empresa…
O problema é que o ChatGPT não acessa a web e sua base de dados não engloba conhecimento até o dia atual. Além disso provavelmente ele não poderá responder perguntas muito específicas sobre minha empresa, apenas de cunho geral com sorte. Entretanto o modelo de Chat da OpenAI API permite que possamos “ensinar” o ChatGPT sobre minha empresa, basta para isso passar para ele as informações que gostaríamos que fossem disponibilizadas. Lembre que ele tem inteligência artificial e ele saberá fornecer as informações corretas mesmo que perguntado de maneiras diferentes, ele vai “entender” o que você quer e procurar a resposta correta dentro das informações que foram “ensinadas” para ele. Isso será um processo interativo, de “aprendizado”, você irá aperfeiçoar o texto com as informações fornecidas a ele várias vezes até atingir o ideal, quando você ficar satisfeito com o nível de qualidade das respostas fornecidas pelo ChatGPT.
Vamos acrescentar então nossa “base de conhecimento” sobre nossa empresa:
$empresa = “Aomega Treinamento e Consultoria”; $url = “http://www.aomega.com.br”; $empresa_nick = “Aomega”; $conhecimento = “Nós da $empresa, também conhecida como $empresa_nick, oferecemos serviços de treinamento em Excel níveis básico, intermediário e avançado, Excel VBA, Análise de Dados com Power BI, SQL e Inteligência artificial, engenharia de PROMPTS no CHATGPT e uso da API. Ministramos treinamentos online individuais e para grupos via videoconferência ou presencias para empresas (in company) . A URL de nosso site é $url . Para solicitar informações adicionais entre em contato conosco através de nosso formulário na página FALE CONOSCO . A duração dos treinamentos pode ser consultada nos links de aulas de nosso site. A duração pode variar para os treinamentos personalizados. Entre em contato conosco através de nosso formulário na página FALE CONOSCO “;
$prompt = "Responder a dúvida $duvida com base nas informações a seguir: $conhecimento ";
Criamos algumas variáveis como $empresa e $empresa_nick e $url para armazenar o nome de nossa empresa, o nome abreviado e a url de nosso website.
Nossa base de conhecimento ficou armazenada na variável $conhecimento.
A variável $duvida irá armazenar o texto com a dúvida/solicitação feita pelo usuário. Ele irá armazenar o valor do campo “duvida” do meu formulário HTML que criei após ser submetido o formulário.
A variável $prompt será utilizada durante a criação dos atributos do objeto cliente do tipo Chat da OpenAI API e recebe como valor um texto instruindo ao Chat que deve responder as dúvidas com base nas informações da base de conhecimento que armazenei na variável $conhecimento. Então o Chat irá procurar preferencialmente as respostas dentro de minha base de conhecimento, será o primeiro lugar onde ele vai procurar as respostas.
A seguir vou mostrar o trecho do código PHP criado que será modificado para incorporar o uso da variável $prompt.
Ou seja o valor de $prompt é atribuído ao atributo “content” do meu cliente $response criado.
Finalmente após melhorar o HTML do meu código e acrescentar CSS e imagens para fazer uma personalização para ficar com a identidade visual do website de minha empresa ficou visualmente assim:
E aqui a tela com a resposta do nosso Chat com inteligência artificial:
Funcionando perfeitamente e respondendo de acordo com a base de conhecimento com a qual treinei o Chat. Arquivos do projeto disponíveis no Github em https://github.com/evillafuerte/aomegachatgpt.
Autor: Ernesto Villafuerte Oyola
Mestre em Ciências de Computação – Inteligência Artificial
Nós temos usado o ChatGPT para uma série de coisas mas muita gente não sabe é que ele também sabe fazer análise de sentimentos. A análise de sentimentos é uma aplicação da inteligência artificial que também pode ser feita com o uso de redes neurais e implementando o código em uma linguagem de programação como o Python. Mas para nós usuários isto está fora de nossa realidade, ou estava, agora com o ChatGPT ficou muito fácil para qualquer um fazer análise de sentimentos de um texto.
É claro que para os desenvolvedores ainda é possível fazer coisas mais complexas como a análise não somente de um como de vários textos, tais como avaliações de um produto, com o uso da API da OpenAI, criadora do ChatGPT, e poder concluir o sentimento geral em relação a um determinado produto. Isso eu posso mostrar em outro artigo se vocês pedirem. 🙂
Cliquei no artigo e selecionei todo o artigo, inclusive imagens, que o ChatGPT não vai considerar na análise. Enviei o seguinte “prompt” ou solicitação ao ChatGPT: “Qual é o sentimento expressado no seguinte texto? ” e colei o texto a partir da linha seguinte. Vocês podem clicar no artigo para visualizar o artigo completo, não vi necessidade de fazer isto aqui.
A resposta do ChatGPT ao meu prompt: — O sentimento expressado no texto é de preocupação ou tendência negativa em relação à avaliação do governo do presidente Luiz Inácio Lula da Silva. O texto destaca que a aprovação do governo oscilou para baixo, enquanto as avaliações “ruim” ou “péssima” aumentaram. Além disso, menciona a crise do governo com o Congresso e a dificuldade de formar uma base aliada como sinais desfavoráveis. Embora também mencione indicadores positivos na economia, como o crescimento do PIB e a desaceleração da inflação, a ênfase é dada aos aspectos negativos da avaliação do governo. Portanto, o sentimento expressado é de preocupação ou tendência negativa. —
Enviei novo prompt: “Você poderia afirmar que no texto há uma intenção de convencer o leitor negativamente?” A resposta do ChatGPT: — Não é possível afirmar com certeza absoluta se há uma intenção de convencer o leitor negativamente com base apenas no texto fornecido. O texto apresenta informações sobre a queda na aprovação do governo do presidente Lula e destaca aspectos negativos, como a reprovação por parte de uma parcela da população e a crise do governo com o Congresso. No entanto, é importante considerar que o texto também menciona indicadores positivos na economia e opiniões de especialistas que apontam para uma relativa estabilidade na avaliação do governo. Portanto, é possível que haja uma intenção de informar sobre a situação atual do governo Lula, mas não é possível afirmar com certeza se há uma intenção de convencer negativamente o leitor sem ter acesso a mais contexto ou informações adicionais. —
Não satisfeito enviei novo “prompt”: “Se você pudesse resumir o sentimento esse artigo em cinco palavras diferentes, ou sentimentos diferentes, quais seriam estes?” Resposta ao meu prompt: — Preocupação, oscilação, tendência negativa, crise, instabilidade. —
Para concluir enviei um último prompt: “E se pudesse resumir o artigo que enviei anteriormente em apenas um sentimento , qual seria a palavra?”
Resposta ao meu prompt: — Preocupação. —
Como vemos o ChatGPT realizou uma autêntica análise de sentimentos encima do artigo publicado nos dando opção para nos aprofundar na análise por ele realizada com perguntas adicionais e resumir o sentimento espremido no texto, primeiro com um texto curto, depois em cinco palavras apenas como solicitei e por último em um único sentimento geral. Perfeito.
Espero que tenham gostado.
Autor: Ernesto Villafuerte Oyola
Diretor da Aomega Treinamento e Consultoria Mestre em Ciências de Eng. de Sistemas e Computação – COPPE/UFRJ MBA em Tecnologia de Informação em Gestão de Negócios Engenheiro Químico – UERJ
VideoAula Funções Financeiras, VP, VF, TAXA, NPER, PGTO, TIPO.
Prof. Ernesto Villafuerte – Aomega Treinamento e Consultoria.
Aprenda a trabalhar com as principais funções financeiras do Excel tais como VP (Valor Presente), VF (Valor Futuro), TAXA, NPER (número de periodos), PGTO (valor de pagamento por período), etc.