谷歌推出了用于数据库的谷歌 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 数据库的支持,它可以确保安全、可扩展和高效的人工智能驱动数据检索。通过应对可扩展性、安全性和工作流管理等挑战,该工具箱简化了数据库操作中的人工智能应用。展望未来,该工具箱的不断发展将带来更智能、更易用的人工智能数据解决方案。
评论留言