""" NL2SQL Agent:将自然语言转换为 SQL 查询,自动执行并返回分析结果。 """ import os import sys # 确保父目录可导入(支持直接运行 python agents/sql_agent.py) sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from langchain_community.agent_toolkits import SQLDatabaseToolkit from langchain.agents import create_agent from config import llm, db # ---- 创建 SQL 工具包 ---- toolkit = SQLDatabaseToolkit(db=db, llm=llm) tools = toolkit.get_tools() # ---- System Prompt ---- SQL_AGENT_PROMPT = """你是一名专业的 SQL 数据分析师。 ## 工作流程 1. 先用 sql_db_list_tables 查看数据库中有哪些表 2. 用 sql_db_schema 获取相关表的字段结构和类型 3. 生成 SQL 之前,用 sql_db_query_checker 检查语法 4. 确认无误后,用 sql_db_query 执行查询 5. 用中文总结查询结果,给出简洁的业务洞察 ## 约束 - 只使用数据库中实际存在的表和字段,不要凭空编造 - 单次查询结果限制在 50 条以内 - 如果查询出错,分析错误原因后重新生成 SQL - 回答要简洁专业,不要啰嗦 """ # ---- 创建 Agent ---- sql_agent = create_agent( model=llm, tools=tools, system_prompt=SQL_AGENT_PROMPT, ) if __name__ == "__main__": print(f"📊 数据库:{db}") print(f" 可用表:{db.get_usable_table_names()}") print(f"\nSQL 工具包已加载({len(tools)} 个工具):") for t in tools: print(f" - {t.name}") print("\n✅ NL2SQL Agent 创建完成,可以开始提问了!")