Изображение сгенерировано по запросу "Используем таблицу Google как базу для GPT-бота"
Изображение сгенерировано по запросу "Используем таблицу Google как базу для GPT-бота"

Поводом написания этой статьи стал уход из России Notion, так как мы активно подключали в качестве баз данных к нашим GPT-ботам базы в Notion (статья про это: https://habr.com/ru/articles/820377/)

Итак, допустим у нас есть такая таблица:

База квартир для GPT-бота
База квартир для GPT-бота

Шаг №1: Создаем GPT-бота

Очень просто сделать GPT-бота и привязать его к Телеграм на ProTalk:

Создание бота в одну кнопку на ProTalk
Создание бота в одну кнопку на ProTalk

Сразу при создании бота, привяжем его к Телеграм:

При создании бота сразу настроим токен и ник бота в Телеграм
При создании бота сразу настроим токен и ник бота в Телеграм

Шаг №2: Подключаем функцию к боту

Сначала зайдем в каталог функций и поищем по запросу: "что использовать для базы данных в Гугл".

Поиск с помощью ИИ подходящих функций
Поиск с помощью ИИ подходящих функций

Подключаем найденную функцию к боту:

В блоке функций выбираем нужную нам функцию
В блоке функций выбираем нужную нам функцию

Шаг №3: Создаем роль для GPT-бота

Для того чтобы наш ИИ консультант мог фильтровать данные по квартирам мы должны ему объяснить какие колонки есть в нашей таблице (базе данных), вот так это можно сделать:

Ты должна подбирать квартиры на основе данных в таблице: 
https://docs.google.com/spreadsheets/d/1wcKA2__qfMjImLUiEOhK-lHUf0_rt5tmc-dvYEqepro/edit?usp=sharing

Колонки для запроса из таблицы: A - H
Для фильтрации используй эти колонки:
`C` - Цена аренды (в сутки) - числовое поле
`D` - Размер квартиры в м2 - числовое поле
`G` - VIP сегмент - фиксированные значения: `Да`, `Нет`
Вот так мы дадим возможность GPT-боту самому фильтровать данные в таблице Google
Вот так мы дадим возможность GPT-боту самому фильтровать данные в таблице Google

Тестируем бота

Для примера дадим такой запрос нашему боту: "мне нужен вип но не дороже 2400".

И вот что мы увидим в ответе:

Результат фильтрации таблицы Google по запросу клиента и ответ GPT-бота
Результат фильтрации таблицы Google по запросу клиента и ответ GPT-бота

Вывод

Если у вас возникнут вопросы при создании подобной интеграции, то напишите в комментарии или мне в Telegram и я постараюсь ответить на ваши вопросы.

P.S. Код функции

Для тех, кто такую интеграцию хочет сделать самостоятельно, вот код самой функции фильтрации:

def get_filtered_google_table(arguments):
    import requests
    import csv
    from io import StringIO
    import re
    url = arguments['url']
    sheet_index = (arguments.get('sheet_index', 1)) - 1
    filter_query = arguments.get('filter_query', '')
    pattern = r"/spreadsheets/d/([a-zA-Z0-9-_]+)"
    spreadsheet_id = re.findall(pattern, url)[0]
    file_url = f'https://docs.google.com/spreadsheets/d/{spreadsheet_id}/gviz/tq?tqx=out:csv&sheet={sheet_index}&tq={filter_query}'
    response = requests.get(file_url)
    csv_content = response.content.decode('utf-8')
    csv_reader = csv.reader(StringIO(csv_content.replace("  ", ",")), delimiter=',')
    csv_rows = list(csv_reader)
    return csv_rows

А вот пример вызова функции:

arguments = {
    'url': 'https://docs.google.com/spreadsheets/d/1wcKA2__qfMjImLUiEOhK-lHUf0_rt5tmc-dvYEqepro/edit?usp=sharing',
    'filter_query': 'SELECT A, B, C, E WHERE C > 2000 AND E LIKE "%балкон%"'
}
filtered_data = get_filtered_google_table(arguments)

Комментарии (2)


  1. Alex-ok
    07.09.2024 06:56
    +1

    А вы не боитесь, что Google-таблицы тоже вдруг станут недоступны? По-моему вероятность такого сценария далеко не нулевая. Может имеет смысл посмотреть в сторону opensource-решений?


    1. d-sh
      07.09.2024 06:56

      В сторону вокзала ты хотел сказать? Такими темпами скоро севернее кореи ничего не останется кроме колючей проволоки.