Запросы с помощью SQL-агента Databricks

Databricks с Python SDK

Avi Steinberg

Senior Software Engineer

Databricks Unity Catalog

  • Основной способ хранения данных в Databricks
  • Содержит схемы, в каждой из которых может быть несколько таблиц
  • Таблицы в схеме можно создавать из различных источников
  • В каталоге samples доступно несколько схем с открытым исходным кодом

Databricks Unity Catalog

1 https://docs.databricks.com/aws/en/catalogs/
Databricks с Python SDK

LangChain

  • Библиотека для создания и развёртывания приложений на основе LLM
  • Позволяет создавать ИИ-агенты, использующие SQL для запросов к данным LangChain
Databricks с Python SDK

Зависимости Python LangChain

Установите зависимости Python:

pip install --upgrade databricks-langchain langchain-community langchain 
                      databricks-sql-connector databricks-sqlalchemy

Импортируйте библиотеки:

from langchain_community.agent_toolkits import create_sql_agent
from langchain_community.agent_toolkits import SQLDatabaseToolkit
from langchain_community.utilities import SQLDatabase
from databricks_langchain import ChatDatabricks
Databricks с Python SDK

Databricks SQL Warehouse ID

Сведения о подключении к Databricks SQL Warehouse

Databricks с Python SDK

Аутентификация LangChain в рабочем пространстве Databricks

Задайте переменные окружения:

os.environ["DATABRICKS_TOKEN"] = "<Your-Access-Token>"
os.environ["DATABRICKS_HOST"] = "<your-workspace-id>.cloud.databricks.com"
Databricks с Python SDK

SQL-агент Databricks

  • Задавайте ИИ-агенту вопросы о данных в схеме каталога Databricks
  • Агент отвечает на вопросы о данных, используя SQL
  • Укажите verbose=True, чтобы агент показывал промежуточные шаги

Вывод запроса LangChain

Databricks с Python SDK

Использование SQL-агента Databricks для запросов к каталогу

db = SQLDatabase.from_databricks(
    catalog="samples", 
    schema="nyctaxi",
    warehouse_id=warehouse_id)
llm = ChatDatabricks(
    endpoint="databricks-meta-llama-3-3-70b-instruct",
    temperature=0.1,
    max_tokens=100)
toolkit = SQLDatabaseToolkit(db=db, llm=llm)
agent = create_sql_agent(llm=llm, toolkit=toolkit, verbose=True)
# Query the Databricks SQL Agent
result = agent.run("What's the time and distance of the longest trip?")
print(result)
1 https://docs.databricks.com/aws/en/large-language-models/langchain#databricks-sql-agent
Databricks с Python SDK

Создание базы данных SQL LangChain из каталога Databricks

db = SQLDatabase.from_databricks(
    catalog="samples", 
    schema="nyctaxi",
    warehouse_id="<your-warehouse-id>"
)
1 api.python.langchain.com/en/latest/utilities/langchain_community.utilities.sql_database.SQLDatabase.html
Databricks с Python SDK

Создание LLM LangChain на основе фундаментальной модели

llm = ChatDatabricks(

endpoint="databricks-meta-llama-3-3-70b-instruct",
temperature=0.1, max_tokens=100, )
  • temperature: число с плавающей точкой от 0 до 1, задающее случайность ответов модели
  • max_tokens: максимальное количество токенов в ответе
1 https://docs.databricks.com/aws/en/large-language-models/langchain
Databricks с Python SDK

Создание набора инструментов SQL LangChain

toolkit = SQLDatabaseToolkit(db=db, llm=llm)
1 https://docs.databricks.com/aws/en/large-language-models/langchain
Databricks с Python SDK

Создание SQL-агента Databricks

agent = create_sql_agent(llm=llm, toolkit=toolkit, verbose=True)

result = agent.run("What's the time and distance of the longest trip?") display(result)
The average trip takes approximately 15 minutes.
1 https://docs.databricks.com/aws/en/large-language-models/langchain
Databricks с Python SDK

Давайте потренируемся!

Databricks с Python SDK

Preparing Video For Download...