![Изображение сгенерировано по запросу "Используем таблицу Google как базу для GPT-бота" Изображение сгенерировано по запросу "Используем таблицу Google как базу для GPT-бота"](https://www.pvsm.ru/images/2024/09/07/ispolzuem-tablicu-Google-kak-bazu-dlya-GPT-bota-vmesto-Notion.jpg)
Поводом написания этой статьи стал уход из России Notion, так как мы активно подключали в качестве баз данных к нашим GPT-ботам базы в Notion (статья про это: https://habr.com/ru/articles/820377/)
Итак, допустим у нас есть такая таблица:
![База квартир для GPT-бота База квартир для GPT-бота](https://www.pvsm.ru/images/2024/09/07/ispolzuem-tablicu-Google-kak-bazu-dlya-GPT-bota-vmesto-Notion-2.png)
Шаг №1: Создаем GPT-бота
Очень просто сделать GPT-бота и привязать его к Телеграм на ProTalk:
![Создание бота в одну кнопку на ProTalk Создание бота в одну кнопку на ProTalk](https://www.pvsm.ru/images/2024/09/07/ispolzuem-tablicu-Google-kak-bazu-dlya-GPT-bota-vmesto-Notion-3.png)
Сразу при создании бота, привяжем его к Телеграм:
![При создании бота сразу настроим токен и ник бота в Телеграм При создании бота сразу настроим токен и ник бота в Телеграм](https://www.pvsm.ru/images/2024/09/07/ispolzuem-tablicu-Google-kak-bazu-dlya-GPT-bota-vmesto-Notion-4.png)
Шаг №2: Подключаем функцию к боту
Сначала зайдем в каталог функций и поищем по запросу: "что использовать для базы данных в Гугл".
![Поиск с помощью ИИ подходящих функций Поиск с помощью ИИ подходящих функций](https://www.pvsm.ru/images/2024/09/07/ispolzuem-tablicu-Google-kak-bazu-dlya-GPT-bota-vmesto-Notion-5.png)
Подключаем найденную функцию к боту:
![В блоке функций выбираем нужную нам функцию В блоке функций выбираем нужную нам функцию](https://www.pvsm.ru/images/2024/09/07/ispolzuem-tablicu-Google-kak-bazu-dlya-GPT-bota-vmesto-Notion-6.png)
Шаг №3: Создаем роль для GPT-бота
Для того чтобы наш ИИ консультант мог фильтровать данные по квартирам мы должны ему объяснить какие колонки есть в нашей таблице (базе данных), вот так это можно сделать:
Ты должна подбирать квартиры на основе данных в таблице:
https://docs.google.com/spreadsheets/d/1wcKA2__qfMjImLUiEOhK-lHUf0_rt5tmc-dvYEqepro/edit?usp=sharing
Колонки для запроса из таблицы: A - H
Для фильтрации используй эти колонки:
`С` - Цена аренды (в сутки) - числовое поле
`В` - Размер квартиры в м2 - числовое поле
`G` - VIP сегмент - фиксированные значения: `Да`, `Нет`
![Вот так мы дадим возможность GPT-боту самому фильтровать данные в таблице Google Вот так мы дадим возможность GPT-боту самому фильтровать данные в таблице Google](https://www.pvsm.ru/images/2024/09/07/ispolzuem-tablicu-Google-kak-bazu-dlya-GPT-bota-vmesto-Notion-7.png)
Тестируем бота
Для примера дадим такой запрос нашему боту: "мне нужен вип но не дороже 2400".
И вот что мы увидим в ответе:
![Результат фильтрации таблицы Google по запросу клиента и ответ GPT-бота Результат фильтрации таблицы Google по запросу клиента и ответ GPT-бота](https://www.pvsm.ru/images/2024/09/07/ispolzuem-tablicu-Google-kak-bazu-dlya-GPT-bota-vmesto-Notion-8.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)
Автор: TAU15