O novo Google? Conheça a Inteligência Artificial que veio para ficar

O novo Google? Conheça a Inteligência Artificial que veio para ficar
Photo by Hitesh Choudhary / Unsplash

Nós falamos sobre cloud e não podemos deixar de lado falar sobre inteligência artificial, cada vez mais nos vemos envolvidos neste meio e você já deve ter ouvido falar do ChatGPT, a AI treinada pela OpenAI que ajuda usuários a encontrar informações e resolver problemas.

O mais fascinante, e intrigante ao mesmo tempo, é o fato de esta AI ser capaz de conversar em linguagem natural em uma série de idiomas. Problemas filosóficos, receitas culinárias, e desafios que encontramos para adaptar fórmulas no excel, Sharepoint Online ou mesmo sobre Terraform, são rapidamente respondidas e preenchidas pela plataforma.

Isto nos faz pensar se este pode ser o fim do Google como um mecanismo de pesquisa ou mesmo de plataformas como Stack Overflow, Quora, e similares.

Como nosso foco é falar sobre cloud vou mostrar alguns desafios que achei interessantes de discutir com a plataforma e trazer um pouco das soluções que ela encontrou para resolver problemas.

ℹ️
Importante frisar que nem todas as respostas que estarão presentes poderão se repetir, tendo em vista que o modelo é treinado regularmente. 

Conhecimentos gerais de TI

Como explicar sobre Cloud Computing para alguém que não tem conhecimento sobre TI?

ChatGPT:
Cloud Computing é um modelo de computação em que os usuários acessam aplicativos e serviços de tecnologia da informação (TI) através de uma rede de internet, em vez de instalar e executar esses aplicativos e serviços em seus próprios computadores.

Isso significa que, em vez de armazenar os seus arquivos e aplicativos em seu próprio computador, você pode acessá-los através da internet em um servidor remoto. Isso tem várias vantagens, como permitir que você acesse seus arquivos de qualquer lugar e em qualquer dispositivo com conexão à internet, bem como permitir que você economize espaço em disco e recursos de processamento em seu próprio computador.

Outra vantagem do Cloud Computing é que os serviços de TI são geralmente fornecidos por empresas especializadas, o que significa que você não precisa se preocupar com a manutenção e atualização dos aplicativos e serviços. Em vez disso, essas tarefas são realizadas pelas empresas de Cloud Computing, deixando você livre para se concentrar em suas próprias atividades.

Em resumo, o Cloud Computing permite que os usuários acessem aplicativos e serviços de TI através da internet em vez de instalá-los em seus próprios computadores, o que pode ser mais conveniente e eficiente em termos de custo.

E se eu precisar explicar para uma criança de 5 anos?

ChatGPT:

Para explicar o Cloud Computing para uma criança de 5 anos, você pode usar uma analogia simples, como guardar os seus brinquedos em um armário em vez de deixá-los espalhados pelo quarto. Assim como você guarda seus brinquedos em um lugar específico para mantê-los organizados e fáceis de encontrar, o Cloud Computing permite que você guarde seus arquivos e aplicativos em um servidor remoto em vez de armazená-los em seu próprio computador.

Dessa forma, você pode acessar esses arquivos e aplicativos de qualquer lugar, assim como pode pegar qualquer brinquedo que você quiser do armário, independentemente de onde estiver. E assim como você não precisa se preocupar com a limpeza e organização do seu armário, as empresas de Cloud Computing cuidam da manutenção e atualização dos aplicativos e serviços, permitindo que você se concentre em outras coisas.

Qual a diferença de Informática, TI, Cloud Computing e Programação?

Informática é um termo amplo que se refere ao uso de computadores e tecnologias relacionadas para armazenar, processar e transmitir informações. Isso inclui coisas como o uso de programas de computador, a criação de sites e aplicativos, bem como a análise de dados e o gerenciamento de redes.

TI, ou Tecnologia da Informação, é uma área da informática que se concentra especificamente em sistemas de computador e tecnologias relacionadas que são usados ​​para armazenar, processar e transmitir informações. Isso inclui coisas como a criação de sistemas de banco de dados, a manutenção de redes de computadores e a implementação de sistemas de segurança da informação.

Cloud Computing é um modelo de computação em que os usuários acessam aplicativos e serviços de TI através de uma rede de internet, em vez de instalar e executar esses aplicativos e serviços em seus próprios computadores. Isso permite que os usuários acessem seus arquivos e aplicativos de qualquer lugar e em qualquer dispositivo com conexão à internet, bem como economizar espaço em disco e recursos de processamento em seus próprios computadores.

Programação é o processo de criação de programas de computador, ou seja, conjuntos de instruções que dizem ao computador o que fazer. Isso envolve escrever códigos em linguagens de programação específicas, testar o código para garantir que esteja funcionando corretamente e depurar qualquer erro que possa ocorrer. A programação é uma parte importante da informática e da TI, pois é através dela que os aplicativos e serviços são criados e mantidos.

Perguntas específicas

Quero criar um endpoint de CDN no Azure conectado a uma storage account. Como escrever esta configuração usando o terraform?

ChatGPT:

Para criar um endpoint de CDN no Azure conectado a uma conta de armazenamento usando o Terraform, você pode usar o seguinte código:
# Configure o provedor do Azure
provider "azurerm" {
  version = "~> 2.0"
  features {}
}

# Crie a conta de armazenamento
resource "azurerm_storage_account" "example" {
  name                     = "examplestorageaccount"
  resource_group_name      = "example-resources"
  location                 = "West Europe"
  account_tier             = "Standard"
  account_replication_type = "LRS"
}

# Crie o endpoint de CDN
resource "azurerm_cdn_endpoint" "example" {
  name                = "example-endpoint"
  profile_name        = "example-profile"
  resource_group_name = "example-resources"
  location            = "West Europe"

  origin {
    name       = "example-origin"
    host_name  = "${azurerm_storage_account.example.primary_blob_endpoint}"
    https_port  = 443
    http_port   = 80
  }
}
Esse código irá configurar o provedor do Azure, criar uma conta de armazenamento e, em seguida, criar um endpoint de CDN conectado a essa conta de armazenamento. Certifique-se de substituir os valores "example" pelos nomes e configurações específicas que você deseja usar.

Crie o jogo da velha usando HTML, CSS e JavaScript

Este exemplo foi adaptado para poder cumprir todos os criterios.

100% do código aqui produzido foi escrito pelo ChatGPT. No meu caso eu precisei fazer algumas consultas para refinar um pouco o resultado final.

Se posso fazer um comentário, é genial a maneira como ele traz a implementação.

<!-- arquivo index.html -->
<!DOCTYPE html>
<html>

<head>
  <title>Jogo da Velha</title>
  <link rel="stylesheet" type="text/css" href="style.css">
</head>

<body>
  <!-- tabela HTML para o tabuleiro do jogo da velha -->
  <table>
    <tr>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <td></td>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <td></td>
      <td></td>
      <td></td>
    </tr>
  </table>
  <button id="reset">Reiniciar</button>
  <script src="script.js"></script>
</body>

</html>
/* Arquivo style.css */

* {
  font-family: Arial;
}

table {
  border-collapse: collapse;
  margin-top: 100px;
  margin: 150px auto 0;
}

td {
  width: 100px;
  height: 100px;
  border: 5px solid #333;
  text-align: center;
  font-size: 48px;
  font-weight: bold;
  color: #333;
}

td:hover {
  background-color: #eee;
  cursor: pointer;
}

button#reset {
  /* estilos de layout */
  display: block;
  margin: 0 auto;
  padding: 10px 20px;
  /* estilos de fonte */
  font-size: 1.2em;
  font-weight: bold;
  text-transform: uppercase;
  /* estilos de cor */
  background-color: #00b8d4;
  color: #ffffff;
  /* estilos de borda */
  border: none;
  border-radius: 5px;
  /* estilos de transição */
  transition: all 0.2s ease-in-out;
  /* estilos de cursor */
  cursor: pointer;

  position: absolute;
  top: 10px;
  left: 50%;
  transform: translateX(-50%);
}

button#reset:hover {
  /* altera a cor de fundo ao passar o mouse */
  background-color: #01d6e2;
}

button#reset:active {
  /* altera a cor de fundo ao pressionar o botão */
  background-color: #0098b3;
}
/* arquivo script.js */

const cells = document.querySelectorAll('td');
let currentPlayer = String.fromCodePoint(0x1f600);
let gameOver = false;
cells.forEach(cell => {
    cell.addEventListener('click', event => {
        if (gameOver) return;
        if (event.target.textContent !== '') return;
        event.target.textContent = currentPlayer;
        if (checkForWin()) {
            gameOver = true;
            alert(`Jogador ${currentPlayer} venceu!`);
            cells.forEach(cell => {
                cell.textContent = '';
            });
            gameOver = false;
            currentPlayer = 'X';
            return;
        }
        currentPlayer = currentPlayer === String.fromCodePoint(0x1f600) ? String.fromCodePoint(0x1f602) : String.fromCodePoint(0x1f600);;
    });
});

const resetButton = document.querySelector('#reset');
resetButton.addEventListener('click', event => {
    cells.forEach(cell => {
        cell.textContent = '';
    });
    gameOver = false;
    currentPlayer = 'X';
});

function checkForWin() {
    // verifica se há três células consecutivas na mesma linha
    for (let i = 0; i < 3; i++) {
        if (cells[i].textContent === currentPlayer && cells[i + 3].textContent === currentPlayer && cells[i + 6].textContent === currentPlayer) {
            return true;
        }
    }
    // verifica se há três células consecutivas na mesma coluna
    for (let i = 0; i < 3; i++) {
        if (cells[i * 3].textContent === currentPlayer && cells[i * 3 + 1].textContent === currentPlayer && cells[i * 3 + 2].textContent === currentPlayer) {
            return true;
        }
    }
    // verifica se há três células consecutivas na diagonal principal
    if (cells[0].textContent === currentPlayer && cells[4].textContent === currentPlayer && cells[8].textContent === currentPlayer) {
        return true;
    }
    // verifica se há três células consecutivas na diagonal secundária
    if (cells[2].textContent === currentPlayer && cells[4].textContent === currentPlayer && cells[6].textContent === currentPlayer) {
        return true;
    }
    return false;

}

Nem tudo são flores

Quando chegamos em modelos mais detalhados ou mais complexos a plataforma não encontra "obstáculos" e isto pode ser perigoso se você não tiver domínio sobre o assunto pelo qual está pedindo ajuda. Por exemplo, imagine que você teve uma ideia de criar, a partir das suas configurações no terraform, um diagrama de maneira automatizada.

Em uma de minhas andanças pelo ChatGPT ele me sugeriu o seguinte:

Use o Terraform Provider for draw.io: esse é um provider do Terraform que permite exportar a sua configuração para o draw.io diretamente a partir do Terraform. Para usá-lo, você precisará criar uma conta no draw.io e obter uma chave de API. Em seguida, basta adicionar o seguinte código à sua configuração do Terraform:
provider "drawio" {
  api_key = "SUA_CHAVE_DE_API"
}

resource "drawio_diagram" "meu_diagrama" {
  name      = "Meu diagrama"
  folder_id = "SUA_PASTA_NO_DRAWIO"
  source    = "${file("diagrama.json")}"
}
Isso irá criar um diagrama no draw.io com o conteúdo do arquivo JSON "diagrama.json". Você pode usar qualquer ferramenta de geração de diagramas compatível com o formato JSON do draw.io para criar o arquivo JSON a partir da sua configuração do Terraform.

Apesar de parecer muito interessante, infelizmente esta configuração não existe. Até a data de publicação deste post não há qualquer indício seja de a criação de um provider do terraform que de suporte oficial ao drawio ou qualquer coisa do tipo.

Para olhos não treinados isto pode ser um causador de problemas enorme, porque neste caso você pode ter problemas ao se comprometer em entregar algo deste tipo e quando for aplicar para o mundo real, perceber que as configurações estão incorretas.

Ficou interessado?

Crie uma conta gratuitamente em https://chat.openai.com/ usando sua conta Microsoft Ou google e comece a testar.

Na data de publicação deste post, a plataforma segue gratuita para uso com fins de pesquisa.