
一、Qwen Code SkillsQwen Code是一个面向开发者的智能编码助手类似于Claude Code随着Claude Code推出Skills功能Qwen Code也迅速集成了相关功能通过Skills可以将专业知识打包成可发现的功能。每个技能由一个SKILL.md文件组成其中包含模型在相关时可以加载的指令以及可选的支持文件如脚本和模板。本文将基于Qwen Code Skills功能构建一个数据库查询Skill并基于该Skill实现数据方面的问答、分析、以及能够根据数据自动生成分析页面。实验效果如下所示其中实验使用数据会在下方实验时说明技能调用问答技能调用、分析生成报表生成效果在开始实验前先简单介绍下Qwen Code Skills的使用过程。1.1 Qwen Code Skills 使用介绍官方文档地址https://qwenlm.github.io/qwen-code-docs/zh/users/features/skills/Skills功能目前是是实验阶段需要更新至最新版本的Qwen Code并且启动时使用--experimental-skills开启Skills功能例如qwen --experimental-skillsSkills技能可以放在个人名下或项目名下个人技能在所有的项目中都可以使用用技能信息存储在~/.qwen/skills/中例如mkdir-p~/.qwen/skills/my-skill-name项目技能可以与团队共享技能信息存储在项目内的.qwen/skills/中例如mkdir-p.qwen/skills/my-skill-name在技能目录下必须要有SKILL.md描述技能示例模版如下--- name: your-skill-name description: 简要描述此技能的作用以及何时使用它 --- # 你的技能名称 ## 指令 为 Qwen Code 提供清晰、逐步的指导。其中name和description不可为空Qwen Code会验证其中的内容。额外文件支持可以根据具体需要添加my-skill/ ├── SKILL.md(必需)├── reference.md(可选文档)├── examples.md(可选示例)├── scripts/ │ └── helper.py(可选工具)└── templates/ └── template.txt(可选模板)二、构建自定义 Skill 数据分析智能体2.1 使用数据说明其中分析数据采用数据采用COVID-19测试案例包括美国2021-01-28号各个县county的新冠疫情累计案例信息包括确诊病例和死亡病例数据格式如下所示date日期,county县,state州,fips县编码code,cases累计确诊病例,deaths累计死亡病例 2021-01-28,Pike,Alabama,01109,2704,35 2021-01-28,Randolph,Alabama,01111,1505,37 2021-01-28,Russell,Alabama,01113,3675,16 2021-01-28,Shelby,Alabama,01117,19878,141 2021-01-28,St. Clair,Alabama,01115,8047,147 2021-01-28,Sumter,Alabama,01119,925,28 2021-01-28,Talladega,Alabama,01121,6711,114 2021-01-28,Tallapoosa,Alabama,01123,3258,112 2021-01-28,Tuscaloosa,Alabama,01125,22083,283 2021-01-28,Walker,Alabama,01127,6105,185 2021-01-28,Washington,Alabama,01129,1454,27下载地址如下https://github.com/BIXUECHAO/covid-19-tes-data/blob/main/us-covid19-counties.csv创建数据表并导入上述数据CREATETABLEus_covid19_counties(datevarchar(255)CHARACTERSETutf8mb4COLLATEutf8mb4_0900_ai_ciDEFAULTNULLCOMMENT日期,countyvarchar(255)CHARACTERSETutf8mb4COLLATEutf8mb4_0900_ai_ciDEFAULTNULLCOMMENT县,statevarchar(255)CHARACTERSETutf8mb4COLLATEutf8mb4_0900_ai_ciDEFAULTNULLCOMMENT州,fipsvarchar(255)CHARACTERSETutf8mb4COLLATEutf8mb4_0900_ai_ciDEFAULTNULLCOMMENT县编码code,casesintDEFAULTNULLCOMMENT累计确诊病例,deathsintDEFAULTNULLCOMMENT累计死亡病例)ENGINEInnoDBDEFAULTCHARSETutf8mb4COLLATEutf8mb4_0900_ai_ciCOMMENTCOVID-19 案例;2.2 构建 Skill在项目的目录下创建.qwen/skills/db技能包整体结构如下所示.qwen/skills/db/ ├── SKILL.md ├── scripts/ │ └── run_sql.py其中scripts/run_sql.py用于动态查询数据库中的数据接收一个SQL参数通过bash指令运行。2.2.1 编写 SKILL.md主要描述出技能的能力这里数据查询的场景可以放入表结构如果表特别多的情况下也可以写一个scripts脚本动态获取。另外为了更好的让大模型处理最好提供调用脚本的指令示例。内容示例如下所示注意Python路径修改为你电脑的实际路径如果配置了环境变量可直接改为python -u scripts/run_sql.py --sql {sql}--- name: db-skill description: COVID-19数据查询, 包括美国 2021-01-28 号各个县county的新冠疫情累计案例信息包括确诊病例和死亡病例 --- # 数据查询 ## 数据表结构 sql CREATE TABLE us_covid19_counties ( date varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT 日期, county varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT 县, state varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT 州, fips varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT 县编码code, cases int DEFAULT NULL COMMENT 累计确诊病例, deaths int DEFAULT NULL COMMENT 累计死亡病例 ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_0900_ai_ci COMMENTCOVID-19 案例; ## 数据样例 data date日期,county县,state州,fips县编码code,cases累计确诊病例,deaths累计死亡病例 2021-01-28,Pike,Alabama,01109,2704,35 2021-01-28,Randolph,Alabama,01111,1505,37 2021-01-28,Russell,Alabama,01113,3675,16 2021-01-28,Shelby,Alabama,01117,19878,141 2021-01-28,St. Clair,Alabama,01115,8047,147 2021-01-28,Sumter,Alabama,01119,925,28 2021-01-28,Talladega,Alabama,01121,6711,114 2021-01-28,Tallapoosa,Alabama,01123,3258,112 2021-01-28,Tuscaloosa,Alabama,01125,22083,283 2021-01-28,Walker,Alabama,01127,6105,185 2021-01-28,Washington,Alabama,01129,1454,27 ## 指令 运行辅助脚本 bash # 查询天气 E:\anaconda\conda\envs\openai\python.exe -u scripts/run_sql.py --sql {sql} ## 示例 - 统计每个州的累计确诊病例 bash E:\anaconda\conda\envs\openai\python.exe -u scripts/run_sql.py --sql SELECT state, COUNT(*) AS total_cases FROM us_covid19_counties GROUP BY state ORDER BY total_cases DESC 2.2.2 编写 scripts 脚本添加一个run_sql.py脚本执行用户数据的查询动作放在.qwen/skills/db/scripts下内容如下所示importjsonimportargparseimportpymysqldefget_conn():returnpymysql.connect(host127.0.0.1,port3306,databasetest3,userroot,passwordroot,autocommitTrue)defquery(sql):connget_conn()cursorconn.cursor()cursor.execute(sql)columns[column[0]forcolumnincursor.description]reslist()forrowincursor.fetchall():res.append(dict(zip(columns,row)))cursor.close()conn.close()returnresdefrun_sql(sql:str):执行MySQL SQL语句查询数据一次仅能执行一句SQLtry:ifnotsql:print(请传递需要查询的SQL)returnfetchquery(sql)print(f数据库查询结果: \n{fetch})exceptExceptionase:print(f执行SQL错误{str(e)},请修正后重新发起。)if__name____main__:parserargparse.ArgumentParser(descriptionRun a SQL query.)parser.add_argument(--sql,typestr,requiredTrue,helpSQL query to execute)argsparser.parse_args()sqlargs.sql run_sql(sql)到这Skill就已经添加完毕了。2.3 使用 Skill在当前项目目录下唤醒Qwen Code注意需要添加--experimental-skillsqwen --experimental-skills输入你当前有哪些Skills输入确诊人数Top10的县是哪几个输入针对确诊人数前5名的州的信息, 深度分析其各个维度为我生成一个炫酷的报表页面执行过程最终生成页面如下