乐于分享
好东西不私藏

工具|再次被AI工具同化了,MAXKB使用数据库

工具|再次被AI工具同化了,MAXKB使用数据库
前言
刚接到一个需要,需要使用MAXKB对数据库查询,然后做出处理。我小小试了一下,突然又打开了一扇门,AI工具真的好。
正文

1.部署MaxKB后创建函数库

2.增加Python语句

Python语句:

import pymysqlfrom typing import DictAnydef get_devices_by_name(InputData: str) -> Dict[strAny]:"""根据外部输入的人名片段模糊查询 deviceinfo 表。参数 InputData: 要匹配的中文名字段(如 "张"),自动包装为 %关键词%返回格式: {"success": bool, "data": list, "error": str}"""# 自动构造模糊匹配模式like_pattern = f"%{InputData}%"config = {'host''192.168.74.235','port'3306,'user''mysql-onelink','password'"sk$dhfs4df4s*fd4s$44$sshg-4hy@mysql@onelink",'database''onelink.db.device','charset''utf8mb4','cursorclass': pymysql.cursors.DictCursor}sql = "SELECT * FROM `deviceinfo` WHERE `NameCN` LIKE %s"try:with pymysql.connect(**config) as conn:with conn.cursor() as cursor:cursor.execute(sql, (like_pattern,))result = cursor.fetchall()return {"success"True"data": result, "error"""}except pymysql.OperationalError as e:return {"success"False"data": [], "error"str(e)}except Exception as e:return {"success"False"data": [], "error"f"未知错误: {str(e)}"}

3.调试

4.优化查询语句

优化口语查询:

import reimport pymysqlfrom typing import DictAny# ------------------ 指令提取(只去动作词,保留全名)------------------def extract_name_from_command(raw_input: str) -> str:"""从自然语言指令中提取设备名称。只去掉开头的动作词,保留剩余全部内容。"""action_words = ['打开''关闭''启动''停止''开启''关掉''断开''切换']for w in action_words:if raw_input.startswith(w):return raw_input[len(w):].strip()return raw_input.strip()# ------------------ 可选:无结果时自动尝试去掉后缀再查 ------------------def fallback_search(raw_name: str) -> str:"""如果直接用“xxx灯”查不到,可以尝试去掉常见的设备后缀再查一次。返回更短的查询词(如“彩灯” -> “彩”)。"""suffixes = ['灯''设备''电器''开关''插座''窗帘''空调''电视''风扇']for s in suffixes:if raw_name.endswith(s):return raw_name[:-len(s)]return raw_name  # 没有匹配后缀则原样返回# ------------------ 主查询函数 ------------------def get_devices_by_name(InputData: str) -> Dict[strAny]:"""根据外部输入(可以是“彩灯”或“打开彩灯”)模糊查询 deviceinfo 表。先尝试用完整提取词查,若无结果,自动去掉常见后缀再查一次。"""# 1. 解析指令,得到初步查询词search_term = extract_name_from_command(InputData)config = {'host''192.168.74.235','port'3306,'user''mysql-onelink','password'"sk$dhfs4df4s*fd4s$44$sshg-4hy@mysql@onelink",'database''onelink.db.device','charset''utf8mb4','cursorclass': pymysql.cursors.DictCursor}sql = "SELECT * FROM `deviceinfo` WHERE `NameCN` LIKE %s"def do_query(like_pattern: str):"""内部查询执行器"""with pymysql.connect(**config) as conn:with conn.cursor() as cursor:cursor.execute(sql, (like_pattern,))return cursor.fetchall()try:# 2. 第一次查询:使用完整名词(如“彩灯”)results = do_query(f"%{search_term}%")if results:return {"success"True"data": results, "error"""}# 3. 如果没结果,尝试去掉后缀再查(如“彩灯”->“彩”)short_term = fallback_search(search_term)if short_term != search_term:results2 = do_query(f"%{short_term}%")if results2:return {"success"True"data": results2, "error"""}# 4. 仍无结果,返回空return {"success"True"data": [], "error"""}except pymysql.OperationalError as e:return {"success"False"data": [], "error"str(e)}except Exception as e:return {"success"False"data": [], "error"f"未知错误: {str(e)}"}

5.设置聊天对话

6.进入AI聊天框,就能得到你需要的数据了

最后

 是否可以通过AI聊天就能实现轻松对话控制设备?

    有需要定制可以找我哦!