from config import OPENAI_API_KEY import sqlite3 from langchain_openai import ChatOpenAI from langchain_community.agent_toolkits import create_sql_agent from langchain_community.utilities import SQLDatabase # 导入 SQLDatabase import os # 配置llm llm = ChatOpenAI( model="deepseek-chat", api_key=OPENAI_API_KEY, base_url="https://api.deepseek.com" ) # 创建一个临时的数据库--用于演示 db_file = "test_sql.db" if os.path.exists(db_file): os.remove(db_file) conn = sqlite3.connect(db_file) cursor = conn.cursor() cursor.execute("CREATE TABLE users (id INT,name TEXT,age INT);") cursor.execute("INSERT INTO users (id,name,age) VALUES (1,'Alice',30);") cursor.execute("INSERT INTO users (id,name,age) VALUES (2,'Bob',25);") conn.commit() conn.close() # 连接数据库 -- LangChain 使用 SQLAlchemy URI (连接方式) db_uri = f'sqlite:///{db_file}' db = SQLDatabase.from_uri(db_uri) # 创建sqlAgent -- 一键完成,无需定义tools,仅告诉它使用openai-tools,即Tool Calling(工具调用)模式 agent_executor = create_sql_agent( llm=llm, db=db, agent_type="openai-tools", verbose=True ) # 运行 response = agent_executor.invoke({"input":"告诉我Alice多大了?"}) print(response['output']) # 清理 db._engine.dispose() # 关闭连接池,避免文件被占用 if os.path.exists(db_file): os.remove(db_file)