Desenvolver um app Python com a ajuda da Duet AI

Neste tutorial, mostramos como usar a Duet AI, uma colaboradora com tecnologia de IA no Google Cloud, para explorar, criar, modificar, testar e implantar um app de amostra em Python.

Para o exemplo a seguir, considere que você é um desenvolvedor que faz parte de uma equipe que está desenvolvendo um app de inventário. Você é responsável por prototipar um serviço básico que contém alguns métodos de API para operar como parte do app de inventário. Você quer desenvolver o app no ambiente local do VS Code e implantá-lo no Google Cloud. No entanto, você não tem certeza sobre qual serviço do Google Cloud é mais adequado ao seu caso de uso.

Neste tutorial, você usa a Duet AI com o Visual Studio Code como ambiente de desenvolvimento integrado para criar um app de inventário de amostra que tem dois métodos de API.

Este tutorial é destinado a desenvolvedores de qualquer nível de experiência que contribuíram para a criação de apps, mas podem não estar familiarizados com as tecnologias de nuvem. Você precisa ter alguma experiência no uso do VS Code como ambiente de desenvolvimento integrado e conhecer o Python e o framework Flask.

Objetivos

  • Conheça vários serviços do Google que podem ser usados para implantar um app fazendo perguntas baseadas em contexto da Duet AI.

  • Com ele, a Duet AI fornece modelos que podem ser usados para desenvolver um app Python básico no Cloud Run.

  • Crie, explore e modifique o app usando a Duet AI para explicar e gerar o código.

  • Execute e teste o app localmente e, em seguida, implante-o no Google Cloud usando a Duet AI para gerar as etapas.

Produtos do Google Cloud usados

Neste tutorial, usamos os seguintes produtos faturáveis do Google Cloud. Use a Calculadora de preços para gerar uma estimativa de custo com base no uso previsto.

  • Cloud Run: O Cloud Run é uma plataforma de computação gerenciada que permite executar contêineres diretamente na infraestrutura escalonável do Google. É possível implantar código escrito em qualquer linguagem de programação no Cloud Run se você puder criar uma imagem de contêiner com base nele. Para informações sobre preços, consulte Cloud Run.

Além do produto mencionado anteriormente, este tutorial também usa os seguintes produtos:

  • Duet AI. A Duet AI é uma colaboradora sempre ativa no Google Cloud que oferece assistência com tecnologia de IA generativa para uma ampla gama de usuários, incluindo desenvolvedores e cientistas de dados. Para fornecer uma experiência de assistência integrada, a Duet AI está incorporada a muitos produtos do Google Cloud.

  • Extensão do Cloud Code para VS Code. Essa extensão é um plug-in de ambiente de desenvolvimento integrado que fornece suporte para o ciclo de desenvolvimento de aplicativos do Kubernetes e do Cloud Run. Para saber mais sobre a extensão do Cloud Code, consulte Cloud Code para recursos do VS Code.

Antes de começar

  1. Instale uma cópia local do VS Code, caso ainda não tenha feito isso.

  2. Instale a extensão do Cloud Code para o VS Code.

    Siga as instruções do guia de instalação para instalar o Python, o Git e o cliente do Docker (links em inglês). Siga também as etapas para criar um projeto do Google Cloud.

  3. Verifique se a Duet AI está configurada para seu projeto e conta de usuário do Google Cloud.
  4. Ative a Duet AI para seu ambiente de desenvolvimento integrado.

    Siga as etapas para se conectar ao Google Cloud no seu ambiente de desenvolvimento integrado e para selecionar um projeto configurado para o Google Cloud.

Conhecer os serviços do Google Cloud

Se você ainda não conhece o Google Cloud, a Duet AI pode ajudar você a escolher os serviços do Google Cloud que atendem aos requisitos da arquitetura do seu aplicativo.

No seu ambiente de desenvolvimento integrado, é possível conversar com a Duet AI para receber ajuda. Usando o painel Duet AI, você insere solicitações (perguntas ou declarações que descrevem a ajuda desejada), e a Duet AI retorna respostas. As solicitações podem incluir o contexto do código existente que o Google Cloud analisa para fornecer respostas mais úteis ou completas. Para mais informações sobre como criar comandos para gerar boas respostas, consulte Criar comandos melhores para a Duet AI.

Para solicitar a Duet AI sobre os serviços do Google Cloud, siga estas etapas:

  1. Na barra de atividades do ambiente de desenvolvimento integrado, clique em chat_spark Duet AI.

    Para localizar a barra de atividades do VS Code, consulte Interface do usuário.

  2. No painel Duet AI, insira o comando a seguir e clique em Enviar:

    I am new to Google Cloud and I want to use the Cloud Code extension.
    Give me some examples of Google services that I can use to build and deploy a
    sample app using containers.
    

    A Duet AI responde com uma lista de serviços e descrições do Google Cloud.

    Neste exemplo, suponha que a Duet AI sugira o Cloud Run e o Cloud Functions como dois serviços do Google Cloud que podem ajudar você a criar e implantar um app de amostra, mas você precisa de mais informações sobre esses serviços.

    A Duet AI não usa seus prompts ou as respostas como dados para treinar o modelo. Para mais informações, consulte a página Como a Duet AI no Google Cloud usa seus dados.

  3. Insira uma pergunta de acompanhamento como a seguinte:

    What is the difference between Cloud Run and Cloud Functions? Explain to me
    in simple terms as I am new to Google Cloud.
    

    A Duet AI responde com as diferenças detalhadas entre os dois serviços do Google Cloud.

  4. Opcional: para redefinir seu histórico de chat, no painel da Duet AI, clique em Excluir Redefinir chat.

Crie um app Hello World em Python

Considere que você quer usar o Cloud Run para criar e implantar um app Python básico. Como você ainda não conhece o Cloud Run e o Cloud Code, precisa de ajuda com as etapas para criar o app. Nesta seção, você solicita à Duet AI para criar um app Python "Hello World" no Cloud Run.

  1. Inicie o ambiente de desenvolvimento integrado, caso ainda não tenha feito isso.

  2. Na barra de atividades do ambiente de desenvolvimento integrado, clique em chat_spark Duet AI.

  3. No painel Duet AI, insira o comando a seguir e clique em Enviar:

    How to create a new Cloud Run app in Cloud Code using the command palette?
    What languages are supported?
    

    A paleta de comandos no VS Code inclui uma lista de todos os comandos, incluindo os do Cloud Code.

    O resultado será assim:

    To create a new Cloud Run app in Cloud Code using the command palette,
    follow these steps:
    1. Open the command palette (press Ctrl/Cmd+Shift+P or click View > Command Palette).
    2. Run the "Cloud Code: New Cloud Run App" command.
    ...
    

    A Duet AI também exibe os idiomas compatíveis com o app Cloud Run.

    Neste exemplo, você escolhe usar um modelo do Cloud Run baseado em Python para criar o app de amostra.

  4. Para saber como criar um app Python com base em um modelo do Cloud Run, insira o seguinte prompt:

    How do I create a Python app from a Cloud Run template using the
    command palette? I am using Cloud Code.
    

    O resultado será assim:

    To create a Python app from a Cloud Run template using the command palette,
    follow these steps:
    
    1. Open Cloud Code.
    
    2. Click the Command Palette
       (press Ctrl/Cmd+Shift+P or click View > Command Palette).
    
    3. Run the "Cloud Code: New Application" command.
    
    ...
    

    Conclua as etapas que a Duet AI fornece na resposta para criar um app básico em Python "Hello World" no Cloud Run. Você também pode consultar a seção a seguir para criar o aplicativo Hello World em Python.

Etapas alternativas para criar um app Hello World em Python

  1. Inicie o ambiente de desenvolvimento integrado caso ainda não tenha feito isso.

  2. Abra a paleta de comandos: pressione Command+Shift+P (no MacOS) ou Control+Shift+P (para Windows e Linux).

  3. No campo "Palette de comandos", insira Cloud Code: New Application e clique no resultado.

  4. Na lista de amostras disponíveis, selecione Aplicativo do Cloud Run.

  5. Na lista de modelos disponíveis, selecione Python (Flask): Cloud Run.

  6. Salve o novo app no local de sua preferência.

Uma notificação confirma que o app foi criado. Uma visualização do arquivo README do serviço selecionado é aberta no ambiente de desenvolvimento integrado, conforme mostrado na Figura 1:

captura de tela
Figura 1: arquivo README de um app Python "Hello World" criado no Cloud Run.

Conheça o app Python Hello World

Agora que você criou o app Hello World no Cloud Run, use a Duet AI para explicar os arquivos e os snippets de código implantados no ambiente de desenvolvimento integrado. Para explorar o código do app de exemplo que você criou, siga estas etapas:

  1. Inicie o ambiente de desenvolvimento integrado.

  2. Abra o Explorer: pressione Command + Shift + E (no MacOS) ou Control + Shift + E (para Windows e Linux).

    Você pode ver os arquivos relacionados ao seu app de exemplo.

  3. Na lista de arquivos, clique em Dockerfile para exibir o conteúdo.

  4. Selecione todo o conteúdo de Dockerfile, clique no ícone de lâmpada e depois em Explain this, conforme mostrado na Figura 2:

    captura de tela do dockerfile
    Figura 2. O recurso de explicação do código fica disponível quando você seleciona o código.

    A Duet AI gera uma explicação em linguagem natural sobre o conteúdo e a função de Dockerfile. Se não tiver certeza sobre alguns pontos da resposta, faça perguntas de follow-up.

  5. Para saber mais sobre o arquivo app.py mencionado em Dockerfile, insira o comando a seguir no painel Duet AI:

    What is the function of the app.py file in Dockerfile?
    

    A Duet AI gera uma resposta semelhante a esta:

    The app.py file is the entrypoint for the container. It is the file that
    will be executed when the container is launched. In this case, the app.py
    file will run the Python code that is contained within it.
    

    Como alternativa, você também pode selecionar o texto app.py em Dockerfile, clicar no ícone de lâmpada e depois em Explain this.

  6. Abra o Explorer: pressione Command + Shift + E (no MacOS) ou Control + Shift + E (para Windows e Linux).

  7. Abra o arquivo app.py. Você verá duas variáveis, K_SERVICE e K_REVISION.

  8. Para saber mais sobre as variáveis no arquivo app.py, no painel Duet AI, insira o seguinte prompt:

    What is the function of `K_SERVICE` and `K_REVISION` in the `app.py` file?
    

    Como alternativa, você também pode selecionar o texto a seguir no Dockerfile, clicar no ícone de lâmpada e depois em Explain this:

    service = os.environ.get('K_SERVICE', 'Unknown service')
    revision = os.environ.get('K_REVISION', 'Unknown revision')
    

    A resposta é semelhante a:

    The code above is using the os.environ module to get the values of the
    K_SERVICE and K_REVISION environment variables. These variables are set by
    Cloud Run when it deploys the service, and they contain the name of the
    service and the revision number, respectively.
    ...
    

Gerar dados de amostra para o app

Você tem um app Flask básico criado no Cloud Run. Antes de adicionar funcionalidades para criar o app de inventário, você precisa de um arquivo que contenha uma lista de itens de inventário de exemplo. Para usar a Duet AI e gerar os dados de amostra relevantes, siga estas etapas:

  1. Para mostrar os arquivos relacionados ao seu app de exemplo, clique no ícone do Explorer no ambiente de desenvolvimento integrado.

  2. Clique no ícone New file e crie um arquivo com o nome inventory.py.

  3. Para permitir que a Duet AI gere os dados de amostra, insira o comando a seguir no painel Duet AI:

    Create a variable called inventory which is a list of 3 JSON objects.
    Each JSON object has 2 attributes: productid and onhandqty.
    Both attributes are strings.
    

    A Duet AI gera um exemplo de código para três objetos JSON.

  4. Na resposta, clique em addInsert in current file para inserir o exemplo de código no arquivo inventory.py, conforme mostrado na Figura 3:

    inserir código
    Figura 3. É possível inserir o código de uma resposta da Duet AI.

    O arquivo inventory.py é semelhante a este:

    inventory = [
       {
          "productid": "12345",
          "onhandqty": "10"
       },
       {
          "productid": "23456",
          "onhandqty": "20"
       },
       {
          "productid": "34567",
          "onhandqty": "30"
       }
    ]
    

    Você criou o arquivo inventory.py, que inclui uma lista de itens de inventário.

Modificar o app Python Hello World

Depois de criar o arquivo inventory.py, introduza alguns métodos de API no arquivo app.py que podem operar nos dados de inventário. Para concluir esse objetivo, use o recurso de geração de código na Duet AI.

  1. Para exibir os arquivos relacionados ao seu app de exemplo, clique no ícone do Explorer no ambiente de desenvolvimento integrado.

  2. Para mostrar o conteúdo, clique no arquivo app.py.

  3. Edite as instruções de importação para que o arquivo app.py inclua o arquivo inventory.py:

    import os
    from flask import Flask, render_template
    from inventory import inventory
    
  4. Para permitir que a Duet AI gere o código para o primeiro método de API, no arquivo app.py, digite o comentário a seguir e pressione Control+Enter:

     # Generate an app route to display a list of inventory
     # items in the JSON format from the
     # inventory.py file. Use the GET method.
    
    

    A Duet AI gera uma resposta no arquivo app.py.

    Dependendo da configuração do sistema, o atalho de teclado para gerar código usando a Duet AI pode ser diferente da combinação Control + Enter usada neste tutorial.

  5. Mantenha o ponteiro do mouse sobre qualquer parte da resposta.

    Uma barra de ferramentas da Duet AI é mostrada.

    A Duet AI pode gerar mais de uma resposta. Na barra de ferramentas, é possível alternar entre cada resposta usando as teclas < e >. No exemplo abaixo, a Duet AI gera apenas uma resposta, como mostrado na Figura 4:

    aceitar código
    Figura 4. É possível aceitar uma sugestão de código da Duet AI.
  6. Clique em Aceitar na barra de ferramentas para aceitar o exemplo de código sugerido.

    A saída será assim:

    # Generate an App route to display a list of inventory
    # items in the JSON format from the
    # inventory.py file. Use the GET method.
    @app.route('/inventory', methods=['GET'])
    def get_inventory():
        """Return a list of inventory items."""
        return jsonify(inventory)
    
  7. Opcional: para saber mais sobre a função jsonify(inventory), destaque o termo e solicite que a Duet AI explique o código para você.

  8. Edite as instruções de importação para que o arquivo app.py inclua a função jsonify:

    import os
    from flask import Flask, render_template, jsonify
    from inventory import inventory
    
  9. Para adicionar outro método de API, no arquivo app.py, insira o seguinte prompt e depois pressione Control+Enter:

    # Generate an App route to get an inventory item
    # given the productid. Use the GET method.
    # If there is an invalid productid,
    # display a 404 error.
    

    A Duet AI gera uma resposta no arquivo app.py.

  10. Mantenha o ponteiro do mouse sobre qualquer parte da resposta.

    Uma barra de ferramentas da Duet AI é mostrada.

  11. Para aceitar um dos exemplos de código sugeridos, clique em Aceitar na barra de ferramentas.

    A saída será assim:

    # Generate an App route to get an inventory item
    # given the productid. Use the GET method.
    # If there is an invalid productid,
    # display a 404 error.
    @app.route('/inventory/<productid>', methods=['GET'])
    def get_inventory_item(productid):
        """Return an inventory item given the productid."""
        for item in inventory:
            if item["productid"] == productid:
               return jsonify(item)
        return jsonify({"error": "Item not found"}), 404
    

    Você adicionou dois métodos de API para criar o app Inventory.

Executar o app localmente no ambiente de desenvolvimento integrado

Está tudo pronto para implantar o app localmente pelo VS Code. Para implantar o app, siga estas etapas:

  1. Inicie o ambiente de desenvolvimento integrado, caso ainda não tenha feito isso.

  2. Na barra de atividades do ambiente de desenvolvimento integrado, clique em chat_spark Duet AI.

  3. No painel Duet AI, insira o comando a seguir e clique em Enviar:

    How do I run a Cloud Run app locally within Cloud Code?
    Is there an emulator?
    

    Siga as etapas na resposta da Duet AI para executar o app localmente no VS Code. Também é possível consultar a seção a seguir para implantar um app de exemplo do Cloud Run localmente no VS Code.

Etapas alternativas para executar o app localmente no ambiente de desenvolvimento integrado

Se você não seguiu as etapas da resposta da Duet AI na seção anterior, siga estas etapas para implantar o app de amostra:

  1. Inicie o ambiente de desenvolvimento integrado.

  2. Abra a paleta de comandos: pressione Command+Shift+P (no MacOS) ou Control+Shift+P (para Windows e Linux).

  3. No campo "Palette de comandos", insira Run on Cloud Run Emulator e clique no resultado.

  4. No arquivo de ambiente Build, mantenha os valores padrão e clique em Executar.

    Este tutorial usa o Docker como a opção do builder.

    No painel Saída do ambiente de desenvolvimento integrado, é possível ver o progresso da compilação. O processo de implantação real pode levar algum tempo para ser concluído.

    Starting to run the app using configuration 'Cloud Run:
    Run/Debug Locally' from .vscode/launch.json...
    To view more detailed logs, go to Output channel : "Cloud Run: Run/Debug Locally - Detailed"
    Dependency check started
    Dependency check succeeded
    Starting minikube, this may take a while......
    ...
    

Para visualizar seu aplicativo ativo, após a conclusão da implantação, clique no URL no painel Saída. Para uma cópia local do VS Code, se você especificou localhost 8080, seu app de amostra fica ativo no URL http://localhost:8080.

Testar os dois métodos de API

Se o app de exemplo estiver ativo, também será possível verificar se os dois trajetos dele funcionam. Neste exemplo, suponha que o URL do aplicativo seja http://localhost:8080.

  1. Para visualizar a página de destino de amostra do aplicativo, acesse http://localhost:8080.

  2. Para conferir uma lista de todos os itens de inventário, acesse http://localhost:8080/inventory.

    No arquivo app.py, para listar todos os itens de inventário, a função @app.route('/inventory', methods=['GET']) é usada.

  3. Para mostrar um item de inventário específico filtrado pelo atributo productid, clique em http://localhost:8080/inventory/productid.

    Por exemplo, http://localhost:8080/inventory/1, em que productid é igual a 1.

    No arquivo app.py, para mostrar um item de inventário específico pelo atributo productid, a função @app.route('/inventory/<productid>', methods=['GET']) é usada.

Implantar um app do Cloud Run no Google Cloud

Agora é possível implantar o app Cloud Run no Google Cloud. Solicite que a Duet AI informe as etapas ou siga estas:

  1. Abra a paleta de comandos: pressione Command+Shift+P (no MacOS) ou Control+Shift+P (para Windows e Linux).

  2. No campo "Palette de comandos", insira Cloud Code: Deploy to Cloud Run e clique no resultado.

  3. No painel de configurações do Serviço, defina seu projeto do Google Cloud.

  4. Aceite as outras configurações padrão e clique em Implantar.

  5. O Cloud Code cria a imagem, envia para o registro e implanta o serviço no Cloud Run.

  6. Para ver o serviço em execução, abra o URL exibido na caixa de diálogo Implantar no Cloud Run.

    Também é possível usar as mesmas etapas encontradas em Testar os dois métodos de API para visualizar o app de exemplo no Google Cloud. Ajuste seus URLs adequadamente.

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste tutorial, exclua o projeto do Google Cloud criado para este tutorial. Também é possível excluir os recursos individuais.

  1. No Console do Google Cloud, acesse a página Gerenciar recursos.

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

A seguir