Grok支持自然语言查询数据库,自动解析为SQL并执行;需配置数据库连接信息、安装langchain-community等依赖、初始化SQLDatabase与ChatOpenAI模型,并调用create_sql_agent构建Agent。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜
用自然语言向数据库提问,比如“上个月销售额最高的三个产品是什么”,让grok自动解析成sql并执行返回结果,无需手动写查询语句。准备数据库连接信息
确认数据库类型(PostgreSQL/MySQL/SQLite)、主机地址、端口、数据库名、用户名和密码。这些信息将用于构建SQLAlchemy连接字符串。
PostgreSQL示例连接字符串格式为:postgresql+psycopg2://【用户名】:【密码】@【主机】:【端口】/【数据库名】。若密码含特殊字符(如@、/),必须先进行URL编码,否则连接会静默失败。
测试连接是否可用:在Python中运行 engine = create_engine(conn_str); engine.connect()。连接成功后才进入下一步。
安装并配置SQLAgent依赖
执行 pip install langchain-community langchain-openai sqlalchemy psycopg2-binary(PostgreSQL)或 mysql-connector-python(MySQL)。
导入必要模块:from langchain.agents import create_sql_agent;from langchain.sql_database import SQLDatabase;from langchain_openai import ChatOpenAI。
注意:SQLAgent已从langchain旧版迁移至langchain-community,直接pip install langchain会导致缺失sql_toolkit模块,必须安装langchain-community。
初始化SQLDatabase与LLM实例
第一步:用SQLAlchemy连接字符串初始化SQLDatabase对象,传入include_tables参数限定可访问的表(避免Agent扫描全部系统表拖慢响应)。
第二步:初始化ChatOpenAI模型,temperature设为0以保证SQL生成稳定性;model_name建议选gpt-4-turbo或gpt-3.5-turbo-16k,避免使用gpt-4o-mini——它对SQL关键词识别准确率明显下降。
第三步:调用create_sql_agent函数,传入llm、db、agent_type="openai-tools",并设置verbose=True便于调试。这一步会自动加载SQLQueryTool、SchemaRetrieverTool等内置工具。
运行自然语言查询
方法一:直接调用agent.invoke(),传入字符串问题,例如 agent.invoke("统计每个部门的员工人数")。
方法二:使用streaming输出流式响应,适合Web界面:for chunk in agent.stream({"input": "过去7天订单量Top5的用户ID"}): print(chunk.get("output", ""), end="", flush=True)。
首次运行时,Agent会先检索表结构生成schema摘要,耗时取决于表数量。若提示“no such table”,检查include_tables是否拼写错误或大小写不匹配——某些数据库(如PostgreSQL)默认区分大小写。


















