Используем таблицу Google как базу для GPT-бота (вместо Notion)

Изображение сгенерировано по запросу

Изображение сгенерировано по запросу «Используем таблицу 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
Для фильтрации используй эти колонки:
`С` - Цена аренды (в сутки) - числовое поле
`В` - Размер квартиры в м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)

© Habrahabr.ru