Изображение сгенерировано по запросу "Используем таблицу Google как базу для GPT-бота"Поводом написания этой статьи стал уход из России Notion, так как мы активно подключали в качестве баз данных к нашим GPT-ботам базы в Notion (статья про это: https://habr.com/ru/articles/820377/)Итак, допустим у нас есть такая таблица:База квартир для GPT-ботаШаг №1: Создаем GPT-ботаОчень просто сделать GPT-бота и привязать его к Телеграм на ProTalk:Создание бота в одну кнопку на ProTalkСразу при создании бота, привяжем его к Телеграм:При создании бота сразу настроим токен и ник бота в ТелеграмШаг №2: Подключаем функцию к ботуСначала зайдем в каталог функций и поищем по запросу: "что использовать для базы данных в Гугл".Поиск с помощью ИИ подходящих функцийПодключаем найденную функцию к боту:В блоке функций выбираем нужную нам функциюШаг №3: Создаем роль для GPT-ботаДля того чтобы наш ИИ консультант мог фильтровать данные по квартирам мы должны ему объяснить какие колонки есть в нашей таблице (базе данных), вот так это можно сделать:Ты должна подбирать квартиры на основе данных в таблице: https://docs.google.com/spreadsheets/d/1wcKA2_qfMjImLUiEOhK-lHUf0rt5tmc-dvYEqepro/edit?usp=sharing Колонки для запроса из таблицы: A - H Для фильтрации используй эти колонки: С - Цена аренды (в сутки) - числовое поле D - Размер квартиры в м2 - числовое поле G - VIP сегмент - фиксированные значения: Да, НетВот так мы дадим возможность GPT-боту самому фильтровать данные в таблице GoogleТестируем ботаДля примера дадим такой запрос нашему боту: "мне нужен вип но не дороже 2400".И вот что мы увидим в ответе:Результат фильтрации таблицы 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, D, C, E WHERE C > 2000 AND E LIKE "%балкон%"' } filtered_data = get_filtered_google_table(arguments)
До свидания Notion)