谷歌推出了用於資料庫的谷歌 Gen AI 工具箱,這是一個開源 Python 庫,旨在簡化資料庫與 GenAI 的互動。透過將自然語言查詢轉換為最佳化的 SQL 命令,該工具箱消除了 SQL 的複雜性,使資料檢索更加直觀,開發人員和非技術使用者都可以使用。作為公開測試版釋出的一部分,谷歌已將谷歌 GenAI 工具與LangChain 整合,以加強工具管理。這一合作實現了無縫的人工智慧驅動資料庫操作,提高了資料工作流程的效率和自動化程度。本文將探討 Google Gen AI 工具箱的功能、優勢和設定過程,重點介紹其與 LangChain 的整合以及如何簡化 AI 驅動的資料庫互動。
人工智慧驅動的SQL查詢需求
幾十年來,SQL 一直是資料庫管理的支柱。然而,編寫複雜的查詢需要專業知識,而且可能非常耗時。Gen AI 工具箱消除了這一障礙,使使用者能夠使用普通語言與資料庫進行互動,從而實現無縫、高效的資料檢索。
什麼是谷歌Gen AI工具箱?
Gen AI 工具箱可實現 AI 代理與 SQL 資料庫之間的無縫整合,確保安全訪問、可擴充套件性和可觀測性,同時簡化 AI 驅動工具的建立和管理。目前,它支援 PostgreSQL、MySQL、AlloyDB、Spanner 和 Cloud SQL,並有機會進一步擴充套件到谷歌雲之外。
工具箱作為應用程式協調層和資料庫之間的中介,增強了 GenAI 工具與資料的互動方式。這種設定加快了開發速度,提高了安全性,並增強了生產質量的人工智慧工具。
Gen AI工具箱的主要功能
用於資料庫的 Gen AI 工具箱旨在使人工智慧驅動的資料庫互動無縫、高效。它簡化了查詢生成,提高了非技術使用者的可訪問性,並確保與現有系統的順利整合。以下是使其成為強大工具的一些關鍵功能:
- 用通俗易懂的英語提問: 使用者可以輸入“向我顯示銷售額排名前 10 位的客戶”之類的查詢,工具箱會生成相應的 SQL 命令。
- 增強非專家的能力:業務分析師和非技術使用者無需具備 SQL 專業知識,就能提取洞察力。
- 即插即用:作為一個 Python 庫,它能順利整合到現有的應用程式和人工智慧模型中。
- 靈活、開源:開發人員可以定製和擴充套件其功能,以滿足獨特的需求。
- 為生產而最佳化:可與 PostgreSQL、MySQL、AlloyDB、Spanner 和 Cloud SQL 協同工作,確保廣泛的相容性。
- 簡化管理:充當中央 AI 層,簡化更新、維護和安全性。
用於資料庫的Gen AI工具箱的元件
谷歌 Gen AI 工具箱由兩個主要部分組成:
- 定義應用工具的服務端。
- 客戶端,與伺服器互動,將這些工具整合到協調框架中。
Gen AI工具箱如何工作
Gen AI 工具箱的核心是利用最先進的 LLM 來理解自然語言查詢並將其翻譯為 SQL 命令。這一過程包括
- 模式訓練:該庫會攝取資料庫模式、示例查詢和文件,以建立資料庫結構的內部模型。
- 查詢生成:當使用者輸入自然語言請求時,工具箱會處理查詢並生成相應的 SQL 語句。
- 執行和反饋:生成的 SQL 語句可直接在連線的資料庫上執行,並透過反饋機制逐步提高查詢的準確性。
這種簡化的方法大大減少了人工製作查詢的需要,併為更直觀的資料探索鋪平了道路。
使用谷歌GenAI工具箱的優勢
谷歌 GenAI 工具箱透過自動生成 SQL 查詢、簡化開發以及與現代人工智慧框架無縫整合來增強資料庫互動。以下是其主要優勢:
- 加速洞察力和更廣泛的可訪問性:透過自動化 SQL 查詢,企業可以更快地提取和分析資料。非技術使用者可以輕鬆地與資料庫互動,培養資料驅動型文化。
- 無縫人工智慧整合與部署:該工具箱專為與 LangChain 等框架協同工作而設計,可實現複雜的代理驅動工作流。它支援本地和雲環境,確保靈活部署。
- 簡化開發:減少模板程式碼,簡化多個人工智慧代理之間的整合。
- 最佳化效能和可擴充套件性:具有資料庫聯結器和連線池功能,可實現高效資源管理。
- 零停機部署:配置驅動方法允許無縫更新,不會中斷服務。
- 增強安全性:支援 OAuth2 和 OpenID Connect (OIDC),可安全地控制對工具和資料的訪問。
- 端到端可觀察性:與 OpenTelemetry 整合可實現即時日誌、指標和跟蹤,從而更好地進行監控和故障排除。
透過將自動化、靈活性和安全性相結合,GenAI 工具箱使開發人員和資料分析師能夠更高效地使用資料庫。
與LangChain整合
LangChain是廣泛使用的LLM應用程式開發人員框架,與Toolbox完全相容。 透過 LangChain,開發人員可以利用 LLM(如 Vertex AI 上的 Gemini)來構建複雜的代理工作流。
LangGraph 擴充套件了 LangChain 的功能,為多角色人工智慧應用提供了狀態管理、協調和工作流結構。該框架可確保精確的工具執行、可靠的響應和受控的工具互動,是 Toolbox 管理人工智慧代理工作流的理想合作伙伴。
LangChain執行長哈里森-蔡斯(Harrison Chase)強調了這一整合的重要意義,他說:“Gen AI工具箱與LangChain的整合,將為我們的人工智慧應用帶來新的機遇: Gen AI Toolbox for Databases 與 LangChain 生態系統的整合為所有開發人員帶來了福音。特別是,Toolbox 與 LangGraph 的緊密整合將使開發人員能夠構建比以往更加可靠的代理。”
使用Python、PostgreSQL和LangGraph在本地設定Toolbox
要充分發揮 GenAI Toolbox 的潛力,使用 Python、PostgreSQL 和 LangGraph 進行本地設定至關重要。這種設定可實現無縫資料庫互動、人工智慧驅動的查詢生成以及與現有應用程式的平滑整合。請按照以下步驟開始操作。
前提條件
在開始之前,請確保在系統上安裝了以下裝置:
- Python 3.9+:安裝 Python 以及用於依賴關係管理的 pip 和 venv。
- PostgreSQL 16+:安裝 PostgreSQL 以及 psql 客戶端。
- LangChain 聊天模型設定:根據您對模型的偏好,您需要安裝以下軟體包之一:
- langchain-vertexai
- langchain-google-genai
- langchain-anthropic
第 1 步:設定資料庫
在這一步中,我們將建立 PostgreSQL 資料庫、設定身份驗證並插入一些示例資料。
1.1 連線到PostgreSQL
首先,使用以下命令連線 PostgreSQL 伺服器:
psql -h 127.0.0.1 -U postgres
這裡,postgres 是預設的超級使用者。
1.2 建立新資料庫和使用者
為安全起見,建立一個專門用於工具箱的新使用者,併為其分配一個新資料庫:
CREATE USER bookstore_user WITH PASSWORD 'my-password'; CREATE DATABASE bookstore_db; GRANT ALL PRIVILEGES ON DATABASE bookstore_db TO bookstore_user; ALTER DATABASE bookstore_db OWNER TO bookstore_user;
這將確保 bookstore_user 擁有對 bookstore_db 的完全訪問許可權。
1.3 退出並以新使用者身份重新連線
退出當前會話:
\q
現在,使用新使用者重新連線:
psql -h 127.0.0.1 -U bookstore_user -d bookstore_db
1.4 建立圖書表
現在我們將建立一個書籍表來儲存書籍的詳細資訊。
CREATE TABLE books( id SERIAL PRIMARY KEY, title VARCHAR NOT NULL, author VARCHAR NOT NULL, genre VARCHAR NOT NULL, price DECIMAL(10,2) NOT NULL, stock INTEGER NOT NULL, published_on DATE NOT NULL );
該表包含書名、作者、流派、價格、庫存情況和出版日期等圖書後設資料。
1.5 插入樣本資料
在資料庫中新增一些圖書:
INSERT INTO books(title, author, genre, price, stock, published_on) VALUES ('The Great Gatsby', 'F. Scott Fitzgerald', 'Classic', 12.99, 5, '1925-04-10'), ('1984', 'George Orwell', 'Dystopian', 9.99, 8, '1949-06-08'), ('To Kill a Mockingbird', 'Harper Lee', 'Fiction', 14.50, 3, '1960-07-11'), ('The Hobbit', 'J.R.R. Tolkien', 'Fantasy', 15.00, 6, '1937-09-21'), ('Sapiens', 'Yuval Noah Harari', 'Non-Fiction', 20.00, 10, '2011-02-10');
使用以下命令退出會話:
\q
第 2 步:安裝和配置Gen AI工具箱
現在,我們將安裝工具箱並進行配置,以便與 PostgreSQL 資料庫互動。
2.1 下載並安裝工具箱
下載最新版本的工具箱:
export OS="linux/amd64" # Adjust based on your OS curl -O https://storage.googleapis.com/genai-toolbox/v0.2.0/$OS/toolbox chmod +x toolbox
該命令下載相應版本的工具箱並使其可執行。
2.2 配置工具箱
建立 tools.yaml 檔案,定義資料庫連線和 SQL 查詢。
定義資料庫連線
sources: my-pg-source: kind: postgres host: 127.0.0.1 port: 5432 database: bookstore_db user: bookstore_user password: my-password
這將工具箱連線到 PostgreSQL 資料庫。
定義基於查詢的工具
我們為各種操作定義 SQL 查詢:
tools: search-books-by-title: kind: postgres-sql source: my-pg-source description: Search for books based on title. parameters: - name: title type: string description: The title of the book. statement: | SELECT * FROM books WHERE title ILIKE '%' || $1 || '%'; search-books-by-author: kind: postgres-sql source: my-pg-source description: Search for books by a specific author. parameters: - name: author type: string description: The name of the author. statement: | SELECT * FROM books WHERE author ILIKE '%' || $1 || '%'; check-book-stock: kind: postgres-sql source: my-pg-source description: Check stock availability of a book. parameters: - name: title type: string description: The title of the book. statement: | SELECT title, stock FROM books WHERE title ILIKE '%' || $1 || '%'; update-book-stock: kind: postgres-sql source: my-pg-source description: Update stock after a purchase. parameters: - name: book_id type: integer description: The ID of the book. - name: quantity type: integer description: The number of books purchased. statement: | UPDATE books SET stock = stock - $2 WHERE id = $1 AND stock >= $2;
2.3 執行工具箱伺服器
使用配置檔案啟動工具箱伺服器:
./toolbox --tools_file "tools.yaml"
Step 3:將代理連線到工具箱
現在,我們設定一個 LangGraph 代理與 Toolbox 互動。
3.1 安裝依賴項
要連線 LangGraph 代理,請安裝所需的依賴項:
pip install toolbox-langchain pip install langgraph langchain-google-vertexai # Optional: # pip install langchain-google-genai # pip install langchain-anthropic
3.2 建立 LangGraph 代理
建立名為 langgraph_hotel_agent.py 的 Python 指令碼,幷包含以下程式碼:
import asyncio from langgraph.prebuilt import create_react_agent from langchain_google_genai import ChatGoogleGenerativeAI from langgraph.checkpoint.memory import MemorySaver from toolbox_langchain import ToolboxClient import time prompt = """ You're a helpful bookstore assistant. You help users search for books by title and author, check stock availability, and update stock after purchases. Always mention book IDs when performing any searches. """ queries = [ "Find books by George Orwell.", "Do you have 'The Hobbit' in stock?", "I want to buy 2 copies of 'Sapiens'.", ] def main(): # Replace ChatVertexAI with ChatGoogleGenerativeAI (Gemini) model = ChatGoogleGenerativeAI( model="gemini-1.5-flash", temperature=0, max_retries=5, retry_min_seconds=5, retry_max_seconds=30 ) # Load tools from Toolbox client = ToolboxClient("http://127.0.0.1:5000") tools = client.load_toolset() agent = create_react_agent(model, tools, checkpointer=MemorySaver()) config = {"configurable": {"thread_id": "thread-1"}} for query in queries: inputs = {"messages": [("user", prompt + query)]} try: response = agent.invoke(inputs, stream_mode="values", config=config) print(response["messages"][-1].content) except Exception as e: print(f"Error processing query '{query}': {e}") # Wait before trying the next query time.sleep(10) main()
3.3 執行代理
執行指令碼與工具箱互動:
python langgraph_hotel_agent.py
輸出:
從輸出中我們可以看到,指令碼 langgraph_bookstore_agent.py 透過列出圖書、確認可用性和更新庫存來管理書店庫存。Sapiens 的庫存在各次執行中都在減少(從 8 次減少到 6 次),這表明存在持久儲存或資料庫更新。
這種設定為在本地使用 Python、PostgreSQL 和 LangGraph 開始使用 Google Gen AI 工具箱提供了一種快速高效的方法。按照這些步驟,您可以配置 PostgreSQL 資料庫,定義基於 SQL 的工具,並將它們與 LangGraph 代理整合,從而無縫管理商店的庫存。
使用Gen AI工具箱的挑戰
在整合工具、框架和資料庫時,使用人工智慧代理的開發人員往往會面臨多重挑戰。在使用谷歌 Gen AI 工具箱時也是如此。其中一些挑戰包括
- 擴充套件工具管理:管理人工智慧工具需要在各種應用程式中進行大量的重複編碼和修改,從而阻礙了一致性和整合性。
- 複雜的資料庫連線:配置資料庫以獲得最佳的大規模效能需要連線池、快取和高效的資源管理。
- 安全漏洞:確保 GenAI 模型和敏感資料之間的安全訪問需要強大的身份驗證機制,從而增加了複雜性和風險。
- 工具更新不靈活:新增或更新工具的過程往往需要重新部署整個應用程式,從而導致潛在的停機時間。
- 工作流程可觀察性有限:現有解決方案缺乏內建監控和故障排除支援,因此很難深入瞭解人工智慧工作流程。
SQL查詢生成的替代人工智慧解決方案
雖然谷歌的 Gen AI 工具箱為人工智慧驅動的資料庫互動提供了一種創新方法,但其他一些工具也使用生成式人工智慧簡化了 SQL 查詢。這些解決方案能讓使用者毫不費力地檢索資料,而無需深厚的 SQL 專業知識。
以下是一些值得注意的替代方案:
- SQLAI.ai:這是一款由人工智慧驅動的工具,可以生成、最佳化、修復、簡化和解釋 SQL 查詢。它支援多種資料庫系統,讓非專業人士也能快速提取見解。
- Text2SQL.ai:將日常語言轉換為 SQL 查詢,支援多種資料庫引擎,以簡化查詢生成。
- Uber 的 QueryGPT:使用大型語言模型從自然語言提示生成 SQL 查詢,大大縮短查詢編寫時間。
- SQLPilot:使用知識庫生成 SQL 查詢,支援使用者定製,包括 OpenAI 金鑰整合。
- BlazeSQL:由聊天機器人驅動的 SQL AI 工具,可直接連線資料庫,提供即時 SQL 生成、儀表板和安全功能。
- Azure SQL 中的 Microsoft Copilot:整合在 Azure 門戶中,可為 T-SQL 查詢生成提供自然語言提示。
- NL2SQL 框架:將自然語言轉換為 SQL 的研究和商業實施,可滿足特定行業和用例的需求。
這些替代方案,如谷歌的 Gen AI 工具箱,旨在彌合 AI 與 SQL 之間的差距,使資料庫互動更直觀、更易用。根據具體的使用案例,企業可以選擇最符合其資料庫基礎設施和工作流程需求的工具。
小結
谷歌 Gen AI 工具箱透過自然語言處理簡化了 SQL 查詢,使開發人員和非技術使用者都能直觀地進行資料庫互動。憑藉 LangChain 整合和對主要 SQL 資料庫的支援,它可以確保安全、可擴充套件和高效的人工智慧驅動資料檢索。透過應對可擴充套件性、安全性和工作流管理等挑戰,該工具箱簡化了資料庫操作中的人工智慧應用。展望未來,該工具箱的不斷發展將帶來更智慧、更易用的人工智慧資料解決方案。
評論留言