Как соединить YandexGPT с базой данных для обработки данных?

Как можно реализовать генерацию SQL запросов на основе простых запросов, написанных бизнесом, с использованием YandexGPT or OpenAI моделей? Есть ли у кого-то опыт в этом? Стоит ли продолжать развивать данную идею, учитывая различия в ответах между YandexGPT2 и YandexGPT чатом?
  • 13 декабря 2023 г. 8:55
Ответы на вопрос 6
Да, возможно соединить YandexGPT с базой данных для обработки данных. Для этого требуется написать код, который будет обрабатывать запросы от GPT-модели и выполнять соответствующие SQL-запросы к базе данных.

Если вы хотите реализовать генерацию SQL запросов на основе простых запросов, написанных бизнесом, то можно создать систему, в которой бизнес-пользователи задают вопросы на естественном языке, а GPT-модель генерирует SQL-запрос, который передается к базе данных для выполнения.

Насчет опыта с использованием YandexGPT и OpenAI моделей для этой задачи, я не могу дать конкретного комментария, но в целом идея звучит интересно. Важно учитывать, что ответы от GPT-моделей могут различаться, поэтому необходимо тестировать и отслеживать качество генерируемых запросов.

Важно также учитывать, что GPT-модели не обязательно генерируют всегда точные и правильные SQL-запросы, поэтому возможно потребуется некоторая предварительная обработка или проверка возвращаемых запросов перед их выполнением.

В целом, развитие данной идеи зависит от ваших потребностей и возможностей для тестирования и реализации подобной системы. Если вы видите потенциал в такой разработке, то стоит продолжать работу и улучшать модель и систему на основе реального опыта, чтобы достичь желаемого качества выполнения SQL-запросов.
Стоит ли тратить время или (пока) такая идея заведомо гиблая?

Гиблая
Не взлетит. Гиблое дело. 
Этой идее как минимум 40 лет
При наличии доступа к весам llm, мощностям для finetuning и переобучения, специалистам по нейронным сетям, можно сделать ряд сопроводительны нейронок, которые будут помогать принимать решение о дальнейших действиях, закодировать большое количество 'дорожек' из llm к формальным базам данных, и сделать задачу якобы решенной. 

По факту llm будет решать одну единственную задачу - текстовый интерфейс на естественном языке к интерфейсу к базе данных. Т.е. набор функционала и запросы, которые можно делать к базе нужно будет закодировать заранее.

Если не углубляться
- во первых, тебе нужно на основе llm сделать классификатор, который будет из текста пользователя понимать, intent - какое именно действие он желает сделать (для этого обучают нейронку на основе pretrained llm, возможно убирают последние слои, заменяя их на новые, веса которых нужно будет найти и обучить на основе подготовленной базы вопросов пользователей и соответствующих им реакций , с некоторой долей вероятности можно попробовать без обучения спрашивать у умной llm типа chatgpt4, к сожалению chatgpt3.5 и сравнимые с ней плохо с этим справляются, точнее это вопрос творческий и возможно вместо одного универсального промпта тут нужно готовить франкенштейна из большого количества разных, llm-ка от яндекса не подойдет).
- во вторых, это сбор информации, отличный пример - человек спрашивает брать ли завтра зонтик, мало сети понять что для ответа на вопрос нужно знать какая будет погода завтра (а завтра это через сколько часов?), нужно понять где этот человек находится и возможно задать наводящий вопрос... это я еще молчу про контекст беседы, может пользователь обсуждает о том что взять с собой в поездку на следующей неделе, т.е. вот уже другое время и место (фраза взять с собой может подразумевать - положить в багаж).
Я видел примеры промптов, с помощью которых из лога беседы можно вытягивать элементы информации (список этих элементов придется заранее забивать соответственно тому интерфейсу, который выбран как целевой на первом шаге), что то типа проанализируй, достаточно ли в данном тексте информации для ответа на вопрос, выделяя в промпте цель, собранную информацию и часть лога беседы, может сжатой через саморизацию с фильтром - нужную для данной задачи (этакая симуляция большого окна контекста).
Вот тут у директора по развитию ии от яндекс спрашивали как раз

Не получится брать сырой поток сообщений, добавлять к ним промпт и надеяться получить сразу результат, это кропотливая работа, по преобразованию потока сообщений в некую выжимку, работа с ней разными запросами и заранее подготовленными нейронками (это на порядок эффективнее, кстати то где слабые сети еще могут давать результат, повторяю, нужен доступ к весам, оборудованию и собирать датасеты)

p.s. С некоторой долей риска можно просить на ходу нейронку генерировать sql запросы на основе вопросов пользователя, результат будет с большими ошибками, чем умнее llm-ка тем сложнее эти ошибки будет обнаружить (в автоматическом режиме я имею в виду).

upd. вот тут из гигачата сделали внутреннюю базу и как то интегрировали нейронку чтобы ею пользоваться, подробности не сообщили но в статье и комментариях есть ссылки на работы и технологии
YandexGPT будет работать локально, ведь так? так ведь? — если нет, бизнес не боится утечки данных (а возможно и ПД) ? 
Даже если это всё запустить локально, используя обученную модель, в вашем случае возможны ошибки, потому что нейросеть сама будет генерировать запросы. Только представьте какие могут быть финансовые потери, если количество строк в выводе будет меньше/больше чем нужно. В таком случае лучше продумать запросы к БД самому, а нейросеть пусть пытается понять, какой из них требуется в конкретном контексте.
Тоже подумываю над таким. Естественно дьявол кроется в деталях, влезет ли схема БД (все таблицы и поля) в контекст. если база большая то скорее всего и нет, либо нужна "дорогая" модель с большим контекстом. Но как правило все таблицы для каждого запроса и не нужны. поэтому можно попробовать сделать в несколько запросов. указать запрос клиента и перечислить таблицы, на выходе должна ответить какие таблицы могут понадобиться. 
вторым этапом передать ей схемы этих таблиц, надо тестить в каком виде будут лучше результаты, либо просто в виде CREATE TABLE или просто текстом перечислить. возможно для некоторых столбцов понадобиться передавать ручное описание того какие и как там данные лежат.
ну и последним шагом (как писал в др комментарии) проверить через него же, не опасен ли запрос.

еще момент если в запросах надо ограничивать записи по конкретным ид. (покажи продажи по категории "игрушки"). то есть GPT должна как то найти ид этой категории...
для таких запросов надо сначала попросить ее составить список задач, а потом уже скармливать эти задачи ей же.

думаю должно получиться. проблема в том что обычный юзер не сможет проверить по запросу правильно ли она считает. ну получил я от нее в конце концов какое то число, смогу я его в отчет вставить и к директору с ним прийти?
Похожие вопросы