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

Шаг №1: Создаем GPT-бота
Очень просто сделать GPT-бота и привязать его к Телеграм на 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 сегмент - фиксированные значения: `Да`, `Нет`

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

Вывод
Если у вас возникнут вопросы при создании подобной интеграции, то напишите в комментарии или мне в 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)
Alex-ok
А вы не боитесь, что Google-таблицы тоже вдруг станут недоступны? По-моему вероятность такого сценария далеко не нулевая. Может имеет смысл посмотреть в сторону opensource-решений?
d-sh
В сторону вокзала ты хотел сказать? Такими темпами скоро севернее кореи ничего не останется кроме колючей проволоки.