背景

马上要进入 2023 了,但是 Databend 社区仍然忙的热火朝天,我们正在让 Databend 成为真正的 Warehouse + Datalake,致力于解决大数据的低成本和易用性问题,让大家在 2023 和未来生活更加美好!

最近,一直在探索 OpenAI 的 ChatGPT,刚开始只是觉得好玩,写 PPT 的时候用它做了一些辅助,效果还不错,总算找到了一个对个人有用的点。

经过一番探索,发现 GPT3 的代码能力非常强大,于是琢磨着怎么让”他”跟 Databend 融合起来。

探索 1

提优化建议

早上,给 Databend 写了一段代码(Rust),目的是限定 CSV 的换行分隔符在:单个 char 或者 \r\n,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
pub fn check_record_delimiter(option: &mut String) -> Result<()> {
match option.len() {
0 => *option = "\n".to_string(),
1 => {}
2 => {
if option != "\r\n" {
return Err(ErrorCode::InvalidArgument(
"record_delimiter with two chars can only be '\\r\\n'",
));
};
}
_ => {
return Err(ErrorCode::InvalidArgument(
"record_delimiter can not more than two chars, please use one char or '\\r\\n'",
));
}
}

Ok(())
}

这段代码老感觉什么地方可以再被优化下,于是向 ChatGPT 这个大聪明征求意见:

me: please improve it

ChatGPT 首先对这段代码做了专业解读:

第一次给了一个答案,目测没有我写的好 :),于是再次征求,发现他的代码几乎跟我的一样,这下就放心了。

编写单元测试

me: please write a test for it

ChatGPT 果然一步到位,单元测试代码也写的很专业,对代码逻辑的理解很到位,真是结对编程的好搭档,第一次体验到超级 AI 的威力。

他写的单测代码一行没改放到了我的PR里:这里,真感谢这个大聪明!

探索 2

第二个探索是 Databend 的 logic test。

虽然 Databend 已经有大量的测试用例,是否可以利用 ChatGPT 生成更多的测试用例,进一步提升软件的质量呢?

还有很多用例是可以改进的,比如这个 issue#9184 ,基本是一些流程性的 prompt,怎么让 ChatGPT 帮助我们完成?

这块目前还没有探索出来,不过非常期待这块的进展。

References

[1] ChatGPT: https://chat.openai.com/
[2] Databend, Cloud Lakehouse: https://github.com/datafuselabs/databend