Создайте агента исследования данных искусственного интеллекта с помощью Gemini

Создайте интерфейс чата на основе искусственного интеллекта (ИИ) для интерфейсов программирования вашей бизнес-системы и позвольте своим коллегам задавать вопросы о ваших бизнес-данных. Проведение анализа и составление отчетов по данным вашей организации имеет важное значение для улучшения ведения бизнеса. Обнаружение проблем, выявление тенденций и исследование результатов возможны при наличии правильных данных, но разработчику может быть непросто помочь своим коллегам, не занимающимся программированием, найти нужные данные.

Проект SQL Talk — это приложение с открытым исходным кодом, которое использует генеративную технологию искусственного интеллекта для ответа на вопросы о бизнес-данных. В проекте используются API Gemini и функция вызова функций для преобразования вопросов о бизнес-данных в запросы SQL и вызовы API, а затем преобразования результатов обратно в простой язык. Вы можете использовать этот проект в качестве отправной точки для создания агента данных для вашего собственного бизнеса и помочь своим коллегам получить ответы без необходимости писать кучу одноразового кода.

Видеообзор проекта и способов его расширения, а также мнения людей, которые его создают, можно посмотреть на сайте AI Data Agent | Создавайте с помощью Google AI . В противном случае вы можете начать расширять проект, используя следующие инструкции.

Пользовательский интерфейс приложения проекта SQL Talk

Рис. 1. Пользовательский интерфейс приложения проекта SQL Talk.

Настройка проекта

Эти инструкции помогут вам настроить проект SQL Talk для разработки и тестирования. Общие шаги включают создание проекта SQL Talk, настройку проекта разработки редактора Google Cloud Shell , получение идентификатора проекта Google Cloud и использование сценария для настройки параметров проекта. В этих инструкциях описывается, как настроить проект с помощью редактора Cloud Shell, который позволяет быстро и удобно настраивать, запускать и обновлять проект.

Создайте экземпляр Cloud Shell для проекта.

Вы можете настроить проект SQL Talk, клонировав репозиторий проекта в экземпляр Cloud Shell. Этот процесс устанавливает экземпляр виртуальной среды разработки внутри инфраструктуры Google Cloud для проекта и клонирует репозиторий кода в эту виртуальную среду.

Чтобы создать экземпляр Cloud Shell для SQL Talk:

Эта ссылка устанавливает экземпляр редактора Google Cloud Shell и клонирует в него репозиторий для SQL Talk.

Редактор Google Cloud Shell с показанным кодом проекта SQL Talk

Рис. 2. Проект SQL Talk, клонированный в среду разработки Google Cloud Shell Editor.

Получить идентификатор облачного проекта

Проект SQL Talk использует идентификатор проекта Google Cloud для подключения к службам Google Cloud, включая модели Gemini. Вы настраиваете идентификатор проекта в редакторе Cloud Shell, чтобы разрешить приложению подключаться к этим сервисам.

Чтобы подключить редактор Cloud Shell к идентификатору проекта:

  1. Перейдите в консоль Google Cloud и при необходимости войдите в систему.
  2. Выберите существующий облачный проект или создайте новый .
  3. Запишите идентификатор облачного проекта для проекта.
  4. Подключите экземпляр Editor к своему проекту и настройте проект. В окне редактора Cloud Shell на панели терминала введите следующую команду:

    gcloud config set project YOUR_PROJECT_ID
    

Настройка проекта SQL Talk

Проект SQL Talk использует сервисы Google Cloud для запуска проекта, включая службу базы данных BigQuery и API Vertex AI для подключения к моделям Gemini. Проект SQL Talk включает сценарий setup.sh , который настраивает проект с необходимыми сервисами Google Cloud и запускает версию проекта по умолчанию.

Чтобы настроить и запустить экземпляр редактора Cloud Shell проекта:

  1. На панели терминала окна редактора Cloud Shell перейдите в каталог проекта Cloud Shell SQL Talk ( /sql-talk-app ):

    cd ~/cloudshell_open/generative-ai/gemini/function-calling/sql-talk-app
    
  2. На панели терминала введите следующую команду:

    bash setup.sh
    

Когда сценарий установки успешно завершится, в окне терминала редактора Cloud Shell вы увидите сообщение, подобное следующему. Это сообщение указывает на то, что процесс установки прошел успешно и приложение SQL Talk запущено:

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

Протестируйте проект

После завершения настройки проекта SQL Talk вы можете протестировать приложение, чтобы убедиться, что оно работает должным образом. Сценарий установки автоматически запускает приложение при его запуске, и вы можете перезапустить приложение, выполнив следующие действия.

Чтобы запустить приложение SQL Talk:

  1. Если редактор Cloud Shell бездействовал и был отключен, возможно, вам потребуется повторно подключиться к идентификатору вашего проекта Cloud.

    gcloud config set project YOUR_PROJECT_ID
    
  2. На панели терминала окна редактора Cloud Shell перейдите в каталог проекта Cloud Shell SQL Talk.

    cd ~/cloudshell_open/generative-ai/gemini/function-calling/sql-talk-app
    
  3. На панели терминала введите следующую команду.

    ~/miniforge/bin/streamlit run app.py --server.enableCORS=false \
        --server.enableXsrfProtection=false --server.port 8080
    
  4. Просмотрите приложение SQL Talk. В правом верхнем углу окна редактора Cloud Shell нажмите кнопку «Просмотр в Интернете» , а затем «Просмотр на порту 8080» .

Заголовок редактора Cloud Shell с выделенной кнопкой «Просмотр в Интернете»

Чтобы просмотреть обновления приложения SQL Talk:

  • В веб-приложении SQL Talk Web Preview перезагрузите браузер или вкладку браузера.

Чтобы остановить приложение SQL Talk:

  • На панели терминала окна редактора Cloud Shell введите Ctrl-C.

Изменить приложение

Вы можете изменить поведение и добавить возможности приложению SQL Talk, изменив код Python для приложения. В этом разделе описывается, как добавить новый вызов функции в приложение SQL Talk.

Функция вызова функций Gemini API использует специальный синтаксис для определения функций, которые будут использоваться генеративной моделью для ответа на вопросы или решения проблем. Этот синтаксис не обязательно должен точно соответствовать синтаксису фактического вызова API. Вместо этого вы используете функцию вызова функций, чтобы заставить генеративную модель предоставлять определенные входные данные или параметры, соответствующие синтаксису вызовов API, а затем использовать эти параметры для выполнения фактических вызовов API в коде вашего приложения.

В этом примере реализации показано, как создать определение вызова функции для вывода списка последних запросов или заданий к базе данных, а затем сопоставить это определение с фактическим вызовом API в коде приложения SQL Talk.

Добавьте определение вызова функции

Добавьте новый вызов функции для вывода списка последних запросов или заданий к базе данных. Это определение используется генеративной моделью, чтобы понять, что делает вызов API и какие входные параметры ему требуются. В этом примере определение функции определено без параметров.

Чтобы добавить новый вызов функции в приложение:

  1. В окне редактора Cloud Shell откройте файл кода sql-talk-app/app.py .
  2. После объявления функции list_datasets_func добавьте новую 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. Добавьте новую функцию в объект 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,
        ],
    )
    

Чтобы добавить код для запуска вызова API для новой функции:

  • В файле кода sql-talk-app/app.py добавьте новое предложение if в цикл 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])
    

Дополнительные ресурсы

Дополнительные сведения о проекте SQL Query см. в репозитории кода и в блоге сообщества Cloud Community, посвященном проекту SQL Talk. Если вам нужна помощь в создании приложения или вы хотите сотрудничать с другими разработчиками, посетите сервер Discord сообщества разработчиков Google и форум Google Cloud AI/ML . Дополнительные сведения о проектах Build with Google AI можно найти в плейлисте видео .