较复杂sql任务发现比较差,对提示词不太敏感
query:2022年7月到2023年7月之间发布的歌曲,按播放量取top 100,再按月粒度来统计近1年的运营播放量
以上是测试案例
简单的sql可以写,复杂的就比较差了
对提示词不太敏感,GPT4,qwen1.5-110B和deepseek v2可以
这个任务对模型来说应该还算简单,需要在输入prompt中有更详细的任务需求,如果已知SQL表结构的话,加上表的详细字段描述,生成会更准确。
这是我尝试的输入:
请帮我写一个SQL语句,实现以下功能:2022年7月到2023年7月之间发布的歌曲,按播放量取top 100,再按月粒度来统计近1年的运营播放量
输出:
要实现这个功能,我们需要使用SQL查询来从数据库中提取所需的数据。假设我们有一个名为 songs
的表,其中包含以下字段:
song_id
:歌曲IDtitle
:歌曲标题release_date
:发布日期play_count
:播放量
以下是一个可能的SQL查询,用于实现你的需求:
WITH MonthlyPlayCounts AS (
SELECT
DATE_FORMAT(release_date, '%Y-%m') AS release_month,
SUM(play_count) AS total_play_count
FROM
songs
WHERE
release_date BETWEEN '2022-07-01' AND '2023-07-31'
GROUP BY
release_month
ORDER BY
release_month DESC
LIMIT 12
)
SELECT
release_month,
total_play_count
FROM
MonthlyPlayCounts
ORDER BY
total_play_count DESC
LIMIT 100;
这个查询分为两个部分:
CTE(公共表表达式)部分:
MonthlyPlayCounts
是一个CTE,用于计算每个月的播放量。我们首先筛选出2022年7月到2023年7月之间发布的歌曲,然后按月粒度对播放量进行求和。最后,我们按发布月份降序排列,并限制结果为最近12个月。主查询部分:从CTE中选择月份和播放量,并按播放量降序排列,最后限制结果为前100条记录。
请注意,这个查询假设 release_date
字段是 DATE
或 DATETIME
类型,并且 play_count
字段是整数类型。如果你的数据库表结构不同,请相应地调整字段名和类型。
此外,DATE_FORMAT
函数用于格式化日期,使其按月显示。如果你的数据库系统不支持 DATE_FORMAT
,你可能需要使用其他函数来格式化日期。
因为这是一个9B的模型,确实没办法跟这些72B以上的模型比,需要使用我们的商业模型 GLM-4-0520 用于对比
这个任务对模型来说应该还算简单,需要在输入prompt中有更详细的任务需求,如果已知SQL表结构的话,加上表的详细字段描述,生成会更准确。
这是我尝试的输入:
请帮我写一个SQL语句,实现以下功能:2022年7月到2023年7月之间发布的歌曲,按播放量取top 100,再按月粒度来统计近1年的运营播放量
输出:
要实现这个功能,我们需要使用SQL查询来从数据库中提取所需的数据。假设我们有一个名为
songs
的表,其中包含以下字段:
song_id
:歌曲IDtitle
:歌曲标题release_date
:发布日期play_count
:播放量以下是一个可能的SQL查询,用于实现你的需求:
WITH MonthlyPlayCounts AS ( SELECT DATE_FORMAT(release_date, '%Y-%m') AS release_month, SUM(play_count) AS total_play_count FROM songs WHERE release_date BETWEEN '2022-07-01' AND '2023-07-31' GROUP BY release_month ORDER BY release_month DESC LIMIT 12 ) SELECT release_month, total_play_count FROM MonthlyPlayCounts ORDER BY total_play_count DESC LIMIT 100;
这个查询分为两个部分:
CTE(公共表表达式)部分:
MonthlyPlayCounts
是一个CTE,用于计算每个月的播放量。我们首先筛选出2022年7月到2023年7月之间发布的歌曲,然后按月粒度对播放量进行求和。最后,我们按发布月份降序排列,并限制结果为最近12个月。主查询部分:从CTE中选择月份和播放量,并按播放量降序排列,最后限制结果为前100条记录。
请注意,这个查询假设
release_date
字段是DATE
或DATETIME
类型,并且play_count
字段是整数类型。如果你的数据库表结构不同,请相应地调整字段名和类型。此外,
DATE_FORMAT
函数用于格式化日期,使其按月显示。如果你的数据库系统不支持DATE_FORMAT
,你可能需要使用其他函数来格式化日期。
数据库信息:
#"dbSchema": "Table: 歌曲库, Columns = ["歌曲语言", "歌曲来源", "运营播放量", "播放量", "歌曲名", "结算播放量", "专辑名", "发布日期", "歌曲版本", "歌曲类型", "数据日期"]"
(补充信息:当前的日期是2023-09-10)
问题是一个是要选择播放量,9b总是选择运营播放量,其次,limit要放前面。
我中间很多提示词写了,但输出一模一样,无变化。给的是一个表,很担心表稍多一点就撑不住了。
完整提示词如下:
#任务:
请将用户提出的当前query查询请求转换为SQL语句
#规则要求:
1.理解用户的请求,提取关键词,并按先后顺序拆解用户的请求,对于复杂请求,可以使用子句嵌套,“AS”语句等按先后顺序一步步推理出最终结果
2.如果请求Query或补充信息涉及日期,则回答中一定要涉及“数据日期”这个字段作为回答的一部分,“数据日期”指的是当前时间
3.如果涉及日期函数段的推理计算则使用datediff()
4.要从dbSchema选取正确字段,因为不同列名之间可能容易非常相似容易混淆,所以要注意用词的区别
#Query: "2022年7月到2023年7月之间发布的歌曲,按播放量取top 100,再按月粒度来统计近1年的运营播放量"
#"dbSchema": "Table: 歌曲库, Columns = ["歌曲语言", "歌曲来源", "运营播放量", "播放量", "歌曲名", "结算播放量", "专辑名", "发布日期", "歌曲版本", "歌曲类型", "数据日期"]"
(补充信息:当前的日期是2023-09-10)
#输出:{推理过程:"提取关键字、词或字段名,并按先后顺序拆解用户的请求逐步完成",SQL:""}
对了,我部署这个服务时,发现没法传参,比如调temperature。部署的错误如下:
{
"error": "Generation error: Input length of input_ids is 220, but max_length
is set to 20. This can lead to unexpected behavior. You should consider increasing max_length
or, better yet, setting max_new_tokens
."
}
不知道哪里有max_new_tokens
max_new_tokens 要自己传,transformers的接口传递这个max_new_tokens参数就行
max_new_tokens 要自己传,transformers的接口传递这个max_new_tokens参数就行
谢谢你