Crie um agente de exploração de dados de IA com o Gemini

Crie uma interface de chat com tecnologia de inteligência artificial (IA) para as interfaces de programação do seu sistema de negócios e permita que seus colegas façam perguntas sobre os dados da sua empresa. Fazer análises e gerar relatórios sobre os dados da sua organização é essencial para melhorar a forma como você faz negócios. Encontrar problemas, descobrir tendências e investigar resultados é possível com os dados certos, mas, como desenvolvedor, ajudar seus colegas que não trabalham com programação a descobrir os dados certos pode ser um desafio.

O projeto SQL Talk é um aplicativo de código aberto que usa a tecnologia de IA generativa para responder a perguntas sobre dados da empresa. O projeto usa a API Gemini e o recurso de chamada de função para transformar perguntas de dados da empresa em consultas SQL e chamadas de API, depois transformar os resultados de volta em uma linguagem simples. Use esse projeto como ponto de partida para criar um agente de dados para sua empresa e ajude seus colegas a encontrar respostas sem que você precise escrever um monte de códigos de uso único.

Para ter uma visão geral em vídeo do projeto e saber como estendê-lo, incluindo insights das pessoas que o criam, confira Agente de dados de IA | Criar com IA do Google. Caso contrário, comece a ampliar o projeto usando as instruções a seguir.

Interface do usuário do aplicativo do projeto SQL Talk

Figura 1. Interface do usuário do aplicativo do projeto SQL Talk.

Configuração do projeto

Estas instruções ajudam você a configurar o projeto do SQL Talk para desenvolvimento e teste. As etapas gerais são criar o projeto SQL Talk, configurar um projeto de desenvolvimento do Editor do Google Cloud Shell, receber um ID de projeto do Google Cloud e usar um script para definir as configurações dele. Estas instruções descrevem como configurar o projeto usando o Editor do Cloud Shell, o que torna a configuração, a execução e a atualização do projeto rápidas e convenientes.

crie uma instância do Cloud Shell para o projeto

Você pode configurar o projeto SQL Talk clonando o repositório do projeto em uma instância do Cloud Shell. Esse processo configura uma instância de ambiente de desenvolvimento virtual dentro da infraestrutura do Google Cloud para o projeto e clona o repositório de código nesse ambiente virtual.

Para criar uma instância do Cloud Shell para o SQL Talk:

Esse link configura uma instância do Editor do Google Cloud Shell e clona o repositório do SQL Talk nela.

Editor do Google Cloud Shell com o código do projeto do SQL Talk exibido

Figura 2. Projeto do SQL Talk clonado em um ambiente de desenvolvimento do Editor do Google Cloud Shell.

Receber um ID do projeto do Cloud

O projeto SQL Talk usa um ID de projeto do Google Cloud para se conectar aos serviços do Google Cloud, incluindo os modelos do Gemini. Configure um ID do projeto no Editor do Cloud Shell para permitir que o aplicativo se conecte a esses serviços.

Para conectar o Editor do Cloud Shell a um ID de projeto:

  1. Navegue até o Console do Google Cloud e faça login, se necessário.
  2. Selecione um projeto do Cloud atual ou crie um novo.
  3. Anote o ID do projeto do Cloud.
  4. Conecte a instância do Editor ao projeto e configure-o. Na janela do editor do Cloud Shell, digite o seguinte comando no painel do terminal:

    gcloud config set project YOUR_PROJECT_ID
    

Configurar o projeto do SQL Talk

O projeto SQL Talk usa serviços do Google Cloud para executar o projeto, incluindo o serviço de banco de dados do BigQuery e a API Vertex AI para se conectar aos modelos do Gemini. O projeto SQL Talk inclui um script setup.sh que configura o projeto com os serviços necessários do Google Cloud e inicia a versão padrão do projeto.

Para configurar e executar a instância do editor do Cloud Shell do projeto:

  1. No painel do terminal da janela do editor do Cloud Shell, navegue até o diretório do projeto do Cloud Shell SQL Talk (/sql-talk-app):

    cd ~/cloudshell_open/generative-ai/gemini/function-calling/sql-talk-app
    
  2. No painel de terminal, digite o seguinte comando:

    bash setup.sh
    

Quando o script de configuração for concluído, será exibida uma mensagem semelhante à seguinte na janela do terminal do editor do Cloud Shell. Essa mensagem indica que o processo de configuração foi bem-sucedido e que o aplicativo SQL Talk está em execução:

You can now view your Streamlit app in your browser.
Network URL: http://##.##.##.##:8080
External URL: http://##.##.##.##:8080

Testar o projeto

Depois de concluir a configuração do projeto do SQL Talk, você poderá testar o aplicativo para verificar se ele está funcionando conforme o esperado. O script de configuração inicia o aplicativo automaticamente quando você o executa. Para reiniciar o aplicativo, siga as etapas abaixo.

Para executar o aplicativo SQL Talk:

  1. Se o Editor do Cloud Shell estiver inativo e desconectado, talvez seja necessário se reconectar ao ID do projeto do Cloud.

    gcloud config set project YOUR_PROJECT_ID
    
  2. No painel do terminal da janela do editor do Cloud Shell, navegue até o diretório do projeto do Cloud Shell SQL Talk.

    cd ~/cloudshell_open/generative-ai/gemini/function-calling/sql-talk-app
    
  3. No painel de terminal, digite o seguinte comando.

    ~/miniforge/bin/streamlit run app.py --server.enableCORS=false \
        --server.enableXsrfProtection=false --server.port 8080
    
  4. Visualize o aplicativo SQL Talk. No canto superior direito da janela do Editor do Cloud Shell, selecione o botão Visualização da Web e, em seguida, Visualizar na porta 8080.

Cabeçalho do editor do Cloud Shell com o botão "Visualização na Web" destacado

Para ver as atualizações do aplicativo SQL Talk:

  • Na visualização da Web do aplicativo da Web SQL Talk, recarregue a guia do navegador ou o navegador.

Para interromper o aplicativo SQL Talk:

  • No painel do terminal da janela do editor do Cloud Shell, digite Ctrl-C.

Modificar o aplicativo

É possível alterar o comportamento e adicionar recursos ao aplicativo SQL Talk modificando o código Python do aplicativo. Esta seção descreve como adicionar uma nova chamada de função ao aplicativo SQL Talk.

O recurso Chamada de função da API Gemini usa uma sintaxe específica para definir funções a serem usadas pelo modelo generativo para responder a perguntas ou resolver problemas. Essa sintaxe não precisa corresponder exatamente à sintaxe de uma chamada de API real. Em vez disso, use o recurso de chamada de função para forçar o modelo generativo a fornecer entradas ou parâmetros de dados específicos que estejam em conformidade com a sintaxe da chamada de API. Depois, use esses parâmetros para executar as chamadas de API reais no código do aplicativo.

Este exemplo de implementação mostra como criar uma definição de chamada de função para listar consultas ou jobs recentes do banco de dados e, em seguida, mapear essa definição para a chamada de API real no código do aplicativo SQL Talk.

Adicionar uma definição de chamada de função

Adicione uma nova chamada de função para listar consultas ou jobs recentes de banco de dados. Essa definição é usada pelo modelo generativo para entender o que a chamada de API faz e quais parâmetros de entrada ela exige. Este exemplo de definição de função é definido sem parâmetros.

Para adicionar uma nova chamada de função ao aplicativo:

  1. Na janela do Cloud Shell Editor, abra o arquivo de código sql-talk-app/app.py.
  2. Após a declaração da função list_datasets_func, adicione um novo FunctionDeclaration.

    list_jobs_func = FunctionDeclaration(
        name="list_jobs",
        description="Get a list of the 10 most recent database requests to help answer the user's question",
        parameters={
            "type": "object",
            "properties": {
      },
    },
    )
    
  3. Adicione a nova função ao objeto sql_query_tool.

    sql_query_tool = Tool(
        function_declarations=[
            sql_query_func,
            list_datasets_func,
            List_jobs_func,  # add this new function
            list_tables_func,
            get_table_func,
        ],
    )
    

Para adicionar um código que execute a chamada de API para a nova função:

  • No arquivo de código sql-talk-app/app.py, adicione uma nova cláusula if ao loop while function_calling_in_process:.

    if response.function_call.name == "list_datasets":
        ...
    
    # add this if clause for list_jobs function
    if response.function_call.name == "list_jobs":
        api_response = client.list_jobs(max_results=10)  # API request(s)
        api_response = str([job.job_id for job in api_response])
        api_requests_and_responses.append(
          [response.function_call.name,params, api_response])
    

Outros recursos

Para mais informações sobre o projeto SQL Query, consulte o repositório de códigos e a postagem do blog da Comunidade do Cloud sobre o projeto SQL Talk. Se precisar de ajuda para criar o aplicativo ou quiser colaborar com outros desenvolvedores, confira o servidor da Comunidade de Desenvolvedores do Google no Discord e o fórum de IA/ML do Google Cloud. Para mais projetos do Build with Google AI, confira a playlist de vídeos.