CodeFuse-CodeLlama-34B基座大模型对KSQL支持效果的调研报告

目录

一、调研背景

二、调研方法

三、测试用例设计说明

四、详细测试用例设计

(一)基本SQL语法支持用例设计

(二)数据操作(CRUD)用例设计

(三)复杂查询用例设计

(四)窗口函数应用用例设计

(五)聚合函数使用用例设计

(六)异常和错误处理用例设计

五、评测结果记录

(一)测试用例1评测结果

(二)测试用例2评测结果

(三)测试用例3评测结果

(四)测试用例4评测结果

(五)测试用例5评测结果

(六)测试用例6评测结果

(七)测试用例7评测结果

(八)测试用例8评测结果

(九)测试用例9评测结果

六、评测结果分析

七、结论与建议


一、调研背景

随着大数据技术的快速发展,Kafka作为分布式流处理平台,在实时数据处理领域得到了广泛应用。Kafka Streaming SQL(ksql)作为Kafka生态系统中的一部分,提供了一种声明式的方式来处理Kafka中的数据流,极大地简化了流处理应用的开发。CodeFuse-CodeLlama-34B模型作为一种先进的语言模型,具备强大的代码理解和生成能力。为了评估该模型在实时数据处理领域的潜力,特别是其对ksql的支持效果,本调研旨在通过一系列测试案例,全面验证CodeFuse-CodeLlama-34B模型在处理ksql任务时的准确性和效率。

二、调研方法

本次调研采用以下方法:

  1. 文献调研:收集和分析关于CodeFuse-CodeLlama-34B模型、Kafka及ksql的相关文献资料,了解它们的基本原理、特性和应用场景。
  2. 实验设计:根据ksql的功能特性和CodeFuse-CodeLlama-34B模型的能力,设计一系列测试案例,覆盖基本的SQL语法、数据操作、复杂查询、窗口函数应用、聚合函数使用等多个维度。
  3. 模型调用:将测试案例中的ksql语句或相关数据作为输入传递给CodeFuse-CodeLlama-34B模型,记录其输出。
  4. 结果验证:将模型的输出与预期输出进行比较,评估模型准确性和效率。

三、测试例设计说明

测试案例设计围绕ksql的核心功能展开,包括但不限于以下几个方面:

  1. 基本SQL语法支持:测试模型对ksql基本语法(如CREATE STREAM、SELECT等)的解析和执行能力。
  2. 数据操作:模拟数据流处理中的常见操作,如数据插入(虽然ksql不直接支持INSERT,但测试模型是否能生成合理的SQL语句)、更新(通过流转换实现)。
  3. 复杂查询:设计包含多表连接、子查询等复杂查询的测试案例。
  4. 窗口函数应用:测试模型对ksql中窗口函数(如TUMBLING WINDOW)的支持情况。
  5. 聚合函数使用:验证模型在处理分组聚合查询时的准确性和效率。

四、详细测试设计

为了测试CodeFuse-CodeLlama-34B模型对Kafka Streaming SQL(ksql)的支持效果,我们可以从多个维度设计测试用例。这些维度可以包括基本的SQL语法支持、数据操作(CRUD)、复杂查询、窗口函数应用、聚合函数使用等。以下是一些具体的测试用例示例:

(一)基本SQL语法支持用例设计

测试用例1:创建流测试模型是否能正确生成这类基本的ksql语句。

Prompt:你是一个专业的ksql专家,这里的ksql指的是Kafka Streaming SQL。请根据我下面的要求生成或者解析相关的ksql语句。

Question: 帮我创建一个流,流的名字叫user_actions,包含useridaction两个属性字段,所属的Kafka主题是user_actions

Answer:CREATE STREAM user_actions (userid VARCHAR, action VARCHAR) WITH (kafka_topic='user_actions', value_format='DELIMITED');

测试用例2解析创建流语句,测试模型是否能正确解析这类基本的ksql语句。

Prompt:你是一个专业的ksql专家,这里的ksql指的是Kafka Streaming SQL。请根据我下面的要求生成或者解析相关的ksql语句。

Question: 帮我分析这句ksql是什么意思?CREATE STREAM user_actions (userid VARCHAR, action VARCHAR) WITH (kafka_topic='user_actions', value_format='DELIMITED');

Answer:创建一个流,存放关于用户行为的记录,流的名字叫user_actions,包含useridaction两个属性字段,所属的Kafka主题是user_actions

测试用例3查询流测试模型在给定查询条件下的输出是否准确。

Prompt:你是一个专业的ksql专家,这里的ksql指的是Kafka Streaming SQL。请根据我下面的要求生成或者解析相关的ksql语句。

Question: 有一个流,存放关于用户行为的记录,流的名字叫user_actions,包含useridaction两个属性字段,查询user_actions中action为login的行为

Answer:SELECT * FROM user_actions WHERE action = 'login';

(二)数据操作(CRUD)用例设计

测试用例4插入数据(虽然ksql主要面向流数据,但测试生成INSERT语句的合理性)

Prompt:你是一个专业的ksql专家,这里的ksql指的是Kafka Streaming SQL。请根据我下面的要求生成或者解析相关的ksql语句。

Question: 有一个流,存放关于用户行为的记录,流的名字叫user_actions,包含useridaction两个属性字段,user_actions中插入一条用户ID为‘user123’,行为为‘login’的记录

Answer:INSERT INTO user_actions (userid, action) VALUES ('user123', 'login');

测试用例5更新数据(ksql中通常通过转换流来“更新”数据)测试模型能否处理条件逻辑和流转换。

Prompt:你是一个专业的ksql专家,这里的ksql指的是Kafka Streaming SQL。请根据我下面的要求生成或者解析相关的ksql语句。

Question:有一个流,存放关于用户行为的记录,流的名字叫user_actions,包含useridaction两个属性字段,user_actions中对于'login'动作,我们将其更改为'active'

Answer:CREATE STREAM updated_actions AS SELECT CASE WHEN action = 'login' THEN 'active' ELSE action END as new_action, userid FROM user_actions;

(三)复杂查询用例设计

测试用例6:多表连接测试模型能否处理复杂的表连接和条件过滤。
Prompt:你是一个专业的ksql专家,这里的ksql指的是Kafka Streaming

SQL。请根据我下面的要求生成或者解析相关的ksql语句。

Question: 有一个流,存放关于用户行为的记录,流的名字叫user_actions,包含useridaction两个属性字段,假设有另一个流user_profiles,包含用户信息,有属性字段userid和name,现在需要连表查询action'purchase'的用户名以及对应的action信息

Answer:CREATE STREAM user_profiles (userid VARCHAR, name VARCHAR) WITH (kafka_topic='user_profiles', value_format='DELIMITED');

SELECT up.name, ua.action FROM user_actions ua JOIN user_profiles up ON ua.userid = up.userid WHERE ua.action = 'purchase';

(四)窗口函数应用用例设计

测试用例7滑动窗口聚合测试模型对窗口函数和聚合函数的支持。

Prompt:你是一个专业的ksql专家,这里的ksql指的是Kafka Streaming SQL。请根据我下面的要求生成或者解析相关的ksql语句。

Question: 有一个流,存放关于用户行为的记录,流的名字叫user_actions,包含useridaction两个属性字段,创建一个新的表格,表格名称为purchase_counts.从user_actions表格中选择userid和购买行为的次数,使用TUMBLING窗口,窗口大小为10分钟。只选择action字段等于'purchase'的行,按照userid进行分组,并计算每个userid的购买行为次数

Answer:CREATE TABLE purchase_counts AS SELECT userid, COUNT(*) AS purchase_count FROM user_actions WINDOW TUMBLING (SIZE 10 MINUTES)

WHERE action = 'purchase' GROUP BY userid;

(五)聚合函数使用用例设计

测试用例8分组聚合测试模型能否处理基本的分组聚合查询。

Prompt:你是一个专业的ksql专家,这里的ksql指的是Kafka Streaming SQL。请根据我下面的要求生成或者解析相关的ksql语句。

Question: 有一个流,存放关于用户行为的记录,流的名字叫user_actions,包含useridaction两个属性字段,查询每种action的数量

Answer:SELECT action, COUNT(*) as count FROM user_actions

(六)异常和错误处理用例设计

测试用例9语法错误处理尝试生成一个包含语法错误的SQL语句,测试模型是否能识别并报告语法错误。

Prompt:你是一个专业的ksql专家,这里的ksql指的是Kafka Streaming SQL。请根据我下面的要求生成或者解析相关的ksql语句。

Question: 有一个流,存放关于用户行为的记录,流的名字叫user_actions,包含useridaction两个属性字段,给你一段语句,帮我判断是否正确?SELECT * FROM user_actions WHER action = 'login';

Answer:不正确,WHER 应该是WHERE

五、评测结果记录

1.模型调用 将测试例中的ksql语句作为输入传递CodeFuse-CodeLlama-34B

2.结果记录记录模型生成的输出和执行时间。

3.结果验证:将模型输出与预期输出进行比较,评估准确性和效率。

4.异常处理:记录并分析任何异常情况或不符合预期的结果。

下面将使用CodeFuse编程助手快速对上述第四步里的测试用例进行评测。

(一)测试用例1评测结果

如上图所示,和预期输出结果吻合。

(二)测试用例2评测结果

如上图所示,和预期输出结果吻合。

(三)测试用例3评测结果

如上图所示,和预期输出结果吻合。

(四)测试用例4评测结果

如上图所示,和预期输出结果吻合。

(五)测试用例5评测结果

如上图所示,和预期输出结果吻合。

(六)测试用例6评测结果

如上图所示,和预期输出结果吻合。

(七)测试用例7评测结果

如上图所示,和预期输出结果吻合。

(八)测试用例8评测结果

如上图所示,和预期输出结果吻合。

测试用例9评测结果

如上图所示,和预期输出结果差距较大。

六、评测结果分析

1.基本语法支持:CodeFuse-CodeLlama-34B模型能够准确解析和执行ksql的基本语法,包括CREATE STREAM和SELECT语句,显示出良好的语法理解能力。

2.数据操作:模型在模拟数据插入和转换时表现良好,能够生成合理的SQL语句来模拟这些操作。然而,需要注意的是,ksql本身不直接支持INSERT操作,因此这部分测试主要评估了模型的SQL生成能力。

3.复杂查询:在处理包含多表连接和子查询的复杂查询时,模型表现出较高的准确性,但执行效率相比专业的数据库系统有所欠缺。

4.窗口函数应用:模型对ksql中的窗口函数支持良好,能够正确应用TUMBLING WINDOW等窗口函数进行时间窗口内的数据聚合。

5.聚合函数使用:在分组聚合查询中,模型表现出较高的准确性,能够准确地对指定字段进行分组和计数。

6.异常和错误处理:在一些异常的检测方面还存在疏漏。

七、结论与建议

CodeFuse-CodeLlama-34B模型对Kafka Streaming SQL支持效果尚佳,但如果是针对用户的特定需求,模型的理解和生成能力未必能达到要求,可能还是需要微调才能提升模型能力。目前并没有针对KSQL相关的公开数据集,需要自己构建整理出训练数据集、验证数据集和测试数据集,使用前面自定义的数据集对模型进行训练和测评。本报告里的评测比较粗略,数据量少而且没有建立相关评测指标去对齐,只是采用的人工审核的方式评判模型效果。后续可以使用swift里的评测脚本,用上测试数据集生成最终的评测报告,通过准确率acc等技术指标科学地评估CodeFuse-CodeLlama-34B模型对KSQL的支持效果如何。

猜你喜欢

转载自blog.csdn.net/GOOD_CODER/article/details/140920623