![Изображение сгенерировано по запросу "Используем таблицу Google как базу для GPT-бота" Изображение сгенерировано по запросу "Используем таблицу Google как базу для GPT-бота"](https://habrastorage.org/getpro/habr/upload_files/fc3/359/38b/fc335938b6a366840d6c1c17d75cdbbf.jpg)
Поводом написания этой статьи стал уход из России Notion, так как мы активно подключали в качестве баз данных к нашим GPT-ботам базы в Notion (статья про это: https://habr.com/ru/articles/820377/)
Итак, допустим у нас есть такая таблица:
![База квартир для GPT-бота База квартир для GPT-бота](https://habrastorage.org/getpro/habr/upload_files/967/71e/6ad/96771e6adc0d4eb80dc1504dcff10370.png)
Шаг №1: Создаем GPT-бота
Очень просто сделать GPT-бота и привязать его к Телеграм на ProTalk:
![Создание бота в одну кнопку на ProTalk Создание бота в одну кнопку на ProTalk](https://habrastorage.org/getpro/habr/upload_files/269/d29/a07/269d29a0794e16727ec14686c4ef3891.png)
Сразу при создании бота, привяжем его к Телеграм:
![При создании бота сразу настроим токен и ник бота в Телеграм При создании бота сразу настроим токен и ник бота в Телеграм](https://habrastorage.org/getpro/habr/upload_files/2eb/419/2b6/2eb4192b6294543d1817552c81ec9728.png)
Шаг №2: Подключаем функцию к боту
Сначала зайдем в каталог функций и поищем по запросу: "что использовать для базы данных в Гугл".
![Поиск с помощью ИИ подходящих функций Поиск с помощью ИИ подходящих функций](https://habrastorage.org/getpro/habr/upload_files/a90/aed/758/a90aed758f8bc4bd0af2c39b6514d426.png)
Подключаем найденную функцию к боту:
![В блоке функций выбираем нужную нам функцию В блоке функций выбираем нужную нам функцию](https://habrastorage.org/getpro/habr/upload_files/50a/428/094/50a428094a1d03064962f72c867010af.png)
Шаг №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](https://habrastorage.org/getpro/habr/upload_files/70a/edb/5fb/70aedb5fbf8a68c1ed019ecbeac0af96.png)
Тестируем бота
Для примера дадим такой запрос нашему боту: "мне нужен вип но не дороже 2400".
И вот что мы увидим в ответе:
![Результат фильтрации таблицы Google по запросу клиента и ответ GPT-бота Результат фильтрации таблицы Google по запросу клиента и ответ GPT-бота](https://habrastorage.org/getpro/habr/upload_files/9e6/cf9/3a2/9e6cf93a21e313376d7c59f1054e47ce.png)
Вывод
Если у вас возникнут вопросы при создании подобной интеграции, то напишите в комментарии или мне в 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
В сторону вокзала ты хотел сказать? Такими темпами скоро севернее кореи ничего не останется кроме колючей проволоки.