Interroger avec l'agent Databricks SQL

Databricks avec le SDK Python

Avi Steinberg

Senior Software Engineer

Databricks Unity Catalog

  • Méthode principale de stockage dans Databricks
  • Contient des schémas, chacun pouvant avoir plusieurs tables
  • Créer des tables dans un schéma à partir de nombreuses sources
  • Plusieurs schémas open source dans le catalog samples

Databricks Unity Catalog

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

LangChain

  • Bibliothèque pour créer et déployer des applications LLM
  • Permet de créer des agents IA qui utilisent SQL pour interroger des données LangChain
Databricks avec le SDK Python

Dépendances Python pour LangChain

Installer les dépendances Python :

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

Importer les bibliothèques :

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 avec le SDK Python

ID du Databricks SQL Warehouse

Détails de connexion au Databricks SQL Warehouse

Databricks avec le SDK Python

Authentifier LangChain au workspace Databricks

Exporter les variables d'environnement :

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

Agent Databricks SQL

  • Poser des questions à un agent IA sur les données d'un schéma du catalogue Databricks
  • L'agent peut répondre à des questions nécessitant du SQL
  • Indiquer verbose=True pour afficher son raisonnement

Sortie de requête LangChain

Databricks avec le SDK Python

Utiliser l'agent Databricks SQL pour interroger le Catalog

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 avec le SDK Python

Créer une base SQL LangChain depuis un Catalog 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 avec le SDK Python

Créer un LLM LangChain avec un modèle fondamental

llm = ChatDatabricks(

endpoint="databricks-meta-llama-3-3-70b-instruct",
temperature=0.1, max_tokens=100, )
  • temperature : un flottant entre 0 et 1 qui règle l'aléa des réponses
  • max_tokens : nombre maximal de tokens dans la réponse
1 https://docs.databricks.com/aws/en/large-language-models/langchain
Databricks avec le SDK Python

Créer un toolkit base SQL LangChain

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

Créer un agent Databricks SQL

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 avec le SDK Python

Interrogeons des données Databricks !

Databricks avec le SDK Python

Preparing Video For Download...