📊Задача на SQL-агента.🕵️♂️
Зачем нам учить язык запросов SQL, если можно человеческим языком заставить сделать запрос Агента?!
Что делать? Итак нам дана база данных PostgreSQL с информацией об аренде DVD. Мы хотим получить информацию из этой базы с помощью агента.
Что на входе? Датасет с вопросами в столбце
question
и база данных.
Загрузка файлов с помощью кода
import pandas as pd
df = pd.read_csv("https://stepik.org/media/attachments/lesson/1107866/rental_dvd.csv")
# для загрузки базы данных
!wget https://stepik.org/media/attachments/lesson/1107866/dvdrental.tar
Что на выходе? csv
файл, содержащий два столбца -
question
, answer
.
Код для подключения базы данных
# Install postgresql server
!sudo apt-get -y -qq update
!sudo apt-get -y -qq install postgresql
!sudo service postgresql start
# Setup a password `postgres` for username `postgres`
!sudo -u postgres psql -U postgres -c "ALTER USER postgres PASSWORD 'postgres';"
!sudo -u postgres psql -U postgres -c "CREATE DATABASE dvdrental;" # CREATE DATABASE
!sudo -u postgres psql -U postgres -c "create user root with encrypted password 'mypass';" # CREATE ROLE
!sudo -u postgres psql -U postgres -c "GRANT postgres TO root;" # GRANT ROLE
!sudo -u postgres psql -U postgres -c "grant all privileges on database dvdrental to root;" # GRANT
!wget https://stepik.org/media/attachments/lesson/1107866/dvdrental.tar
!sudo pg_restore -U root -d dvdrental /content/dvdrental.tar
from langchain_community.utilities import SQLDatabase
# подключимся к базе
db = SQLDatabase.from_uri("postgresql+psycopg2://root:mypass@localhost:5432/dvdrental")
Замечание: Ваше решение будет зачтено, если в нём будет минимум 3 правильных ответов.
А есть ли способ решить не используя платные модели? где нибудь пример может есть?
@Дмитрий_Блинов, небольшие опенсорс модели вряд ли справятся, может специально зафайнтюненные. Надо поискать. А для запуска больших - ресурсы нужны.
@Дмитрий_Блинов, в предыдущих задачах на агентов. Вот такой вариант справлялся.
@Иван_Александров, Что то эта модель мне ошибку выдает
Пробовал
llm = HuggingFaceEndpoint(repo_id='QuantFactory/Meta-Llama-3-8B-Instruct-GGUF')
и GigaChat - ответы у них одинаковые, но система не принимает.