Databricks SQL Agent is failing
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-02-2024 01:34 AM
Goal :
I want to build one Databricks SQL Agent using that any Databricks users can interact with a specified schema in Unity Catalog and generate insights on their data.
Followed the url as reference :https://docs.databricks.com/en/large-language-models/langchain.html
SampleCode:
from langchain.agents import create_sql_agent
from langchain.agents.agent_toolkits import SQLDatabaseToolkit
from langchain.sql_database import SQLDatabase
from langchain import OpenAI
db = SQLDatabase.from_databricks(catalog="genai", schema="vector_db")
#llm = OpenAI(temperature=.7)
toolkit = SQLDatabaseToolkit(db=db, llm=llm_handler)
agent = create_sql_agent(llm=llm_handler, toolkit=toolkit, verbose=True)
Error :
AttributeError: module 'sqlalchemy.types' has no attribute 'Uuid'
File <command-4275727126297453>, line 6
3 from langchain.sql_database import SQLDatabase
4 from langchain import OpenAI
----> 6 db = SQLDatabase.from_databricks(catalog="genai", schema="vector_db")
7 #llm = OpenAI(temperature=.7)
8 toolkit = SQLDatabaseToolkit(db=db, llm=llm_handler)
File /local_disk0/.ephemeral_nfs/envs/pythonEnv-21fa55bd-1c7c-42e6-8617-6775fdb15bae/lib/python3.11/site-packages/databricks/sqlalchemy/_types.py:35
13 """This method is supposed to accept a Python type and return a string representation of that type.
14 But due to some weirdness in the way SQLAlchemy's literal rendering works, we have to return
15 the value itself because, by the time it reaches our custom type code, it's already been converted
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-02-2024 09:00 AM
The error message you're seeing, AttributeError: module 'sqlalchemy.types' has no attribute 'Uuid'
, suggests that the SQLAlchemy library you're using doesn't have the 'Uuid' attribute.
This could be due to a few reasons:
-
Version Mismatch: You might be using an older version of SQLAlchemy that doesn't support the 'Uuid' attribute. You can check your SQLAlchemy version by running
print(sqlalchemy.__version__)
. If it's not the latest version, you might want to upgrade it using pip:pip install --upgrade sqlalchemy
. -
Incorrect Import: Make sure you're importing the correct module. The 'Uuid' attribute is part of the
sqlalchemy.dialects.postgresql
module, not thesqlalchemy.types
module. So, you should import it like this:from sqlalchemy.dialects.postgresql import UUID
. -
Dependency Issue: There might be a dependency issue with the LangChain library. If the above solutions don't work, you might want to reach out to the LangChain support team for assistance.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-06-2024 09:40 PM - edited 09-06-2024 09:52 PM
Following up on @Walter_C insights, I encountered the same issue and wanted to share the complete steps I took to fully resolve the issue:
1) Upgrade SQLAlchemy: Running the following command before any other code resolved the sqlalchemy.types error:
%pip install --upgrade sqlalchemy
2) Address LangChain Deprecation Warning: I received a deprecation warning for the OpenAI class in LangChain:
"LangChainDeprecationWarning: The class `OpenAI` was deprecated in LangChain 0.0.10 and will be removed in 0.3.0. An updated version of the class exists in the langchain-openai package."
To resolve this:
I replaced:
from langchain import OpenAI
with:
from langchain_openai import OpenAI
Before this definitely install the necessary packages again, this time including langchain-openai:
%pip install --upgrade langchain databricks-sql-connector sqlalchemy langchain-openai
3) Update Method Call: I switched from using chain.run to chain.invoke as the run method was deprecated:
agent.invoke("What is the longest trip distance and how long did it take?")
I’ve uploaded the complete updated code to my GitHub. You can check it out here: Databricks Text to SQL using Langchain.ipynb
After making these updates, everything worked smoothly. Hope this helps!

