较复杂sql任务发现比较差,对提示词不太敏感

#5
by chuangzhidian - opened

query:2022年7月到2023年7月之间发布的歌曲,按播放量取top 100,再按月粒度来统计近1年的运营播放量
以上是测试案例

简单的sql可以写,复杂的就比较差了
对提示词不太敏感,GPT4,qwen1.5-110B和deepseek v2可以

chuangzhidian changed discussion title from 运行意外报错:ValueError: invalid literal for int() with base 10: 'https://git-lfs.github.com/spec/v1' to 复杂sql任务发现比较差,对提示词不太敏感
chuangzhidian changed discussion title from 复杂sql任务发现比较差,对提示词不太敏感 to 较复杂sql任务发现比较差,对提示词不太敏感
Knowledge Engineering Group (KEG) & Data Mining at Tsinghua University org

这个任务对模型来说应该还算简单,需要在输入prompt中有更详细的任务需求,如果已知SQL表结构的话,加上表的详细字段描述,生成会更准确。

这是我尝试的输入:

请帮我写一个SQL语句,实现以下功能:2022年7月到2023年7月之间发布的歌曲,按播放量取top 100,再按月粒度来统计近1年的运营播放量

输出:

要实现这个功能,我们需要使用SQL查询来从数据库中提取所需的数据。假设我们有一个名为 songs 的表,其中包含以下字段:

  • song_id:歌曲ID
  • title:歌曲标题
  • 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;

这个查询分为两个部分:

  1. CTE(公共表表达式)部分MonthlyPlayCounts 是一个CTE,用于计算每个月的播放量。我们首先筛选出2022年7月到2023年7月之间发布的歌曲,然后按月粒度对播放量进行求和。最后,我们按发布月份降序排列,并限制结果为最近12个月。

  2. 主查询部分:从CTE中选择月份和播放量,并按播放量降序排列,最后限制结果为前100条记录。

请注意,这个查询假设 release_date 字段是 DATEDATETIME 类型,并且 play_count 字段是整数类型。如果你的数据库表结构不同,请相应地调整字段名和类型。

此外,DATE_FORMAT 函数用于格式化日期,使其按月显示。如果你的数据库系统不支持 DATE_FORMAT,你可能需要使用其他函数来格式化日期。

Knowledge Engineering Group (KEG) & Data Mining at Tsinghua University org

因为这是一个9B的模型,确实没办法跟这些72B以上的模型比,需要使用我们的商业模型 GLM-4-0520 用于对比

这个任务对模型来说应该还算简单,需要在输入prompt中有更详细的任务需求,如果已知SQL表结构的话,加上表的详细字段描述,生成会更准确。

这是我尝试的输入:

请帮我写一个SQL语句,实现以下功能:2022年7月到2023年7月之间发布的歌曲,按播放量取top 100,再按月粒度来统计近1年的运营播放量

输出:

要实现这个功能,我们需要使用SQL查询来从数据库中提取所需的数据。假设我们有一个名为 songs 的表,其中包含以下字段:

  • song_id:歌曲ID
  • title:歌曲标题
  • 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;

这个查询分为两个部分:

  1. CTE(公共表表达式)部分MonthlyPlayCounts 是一个CTE,用于计算每个月的播放量。我们首先筛选出2022年7月到2023年7月之间发布的歌曲,然后按月粒度对播放量进行求和。最后,我们按发布月份降序排列,并限制结果为最近12个月。

  2. 主查询部分:从CTE中选择月份和播放量,并按播放量降序排列,最后限制结果为前100条记录。

请注意,这个查询假设 release_date 字段是 DATEDATETIME 类型,并且 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

Knowledge Engineering Group (KEG) & Data Mining at Tsinghua University org

max_new_tokens 要自己传,transformers的接口传递这个max_new_tokens参数就行

zRzRzRzRzRzRzR changed discussion status to closed

max_new_tokens 要自己传,transformers的接口传递这个max_new_tokens参数就行

谢谢你

Sign up or log in to comment