文章目录
- 一,时长统计需求
- 二,一波三折
- 三,终极方案 AI+Java
- 总结
今天为了写一篇博客,这篇博客介绍了B站的一个Java项目,这个项目分为三个阶段:
- 初级篇
- 高级篇
- 运维篇
一,时长统计需求
我想根据每个阶段的总时长制定学习计划,B站只有每一集的时长,格式如下。
思路很简单:
- 首先找到每一阶段的起止集数;
- 然后把每个阶段的每集的时间加起来就可以算出每一阶段总耗时了。
第一个步骤很简单啊,从内容上可以区分。
- P1~P101 是初级篇
- P102~P338 是高级篇
- P339到最后 是运维篇
二,一波三折
我的想法是把视频选集的内容copy出来,和算法以前丢给大模型,让它给我统计出来。
拷贝出来之后粘贴到文本文件,格式有点意外,但还算是格式化文本。
如上,一行信息变三行了。
我把这个文档提交给大模型,把算法写在提示词里。
这个文档的规则如下:
1,每三行是一个单元;
2,每个单元第三行表示一个视频的时长,如11:30表示11分钟30秒,
3,美格单元第一行表示集数,如P1表示第一集;请分别统计:
1,P1~P101的总时长;
2,P102~P338的总时长;
3,P339到最后一集的总时长。最后的结果请以[小时:分钟:秒]给出,并给出这三部分的总时长。
我惊奇的发现,大模型搞不定这个,虽然我不知道原因,或许是我用的姿势不对。
首先看看Kimi的表现。
Kimi貌似是异步的处理,但是我等了很久,一直不给我结果。
我追问,它回答马上开始,似乎也不是异步执行。
最后我强制要求它给出结果,不要让我等待。
来来回回纠缠了好多次,终于给出了统计结果,结果却是错的。
然后又试了通义千问,它倒是能爽快的给出结果,可惜也是错的。
最后又试了智谱清言,它的计算速度最快,结果秒出,可惜还是错的。
这也太不靠谱了。
三,终极方案 AI+Java
最后,我觉得不要让它直接算,让它给我写个Java程序,我自己来跑这个程序,这样即便错了,我也能知道是哪里错的。
Kimi完成了这个任务。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class VideoDurationStatistics {public static void main(String[] args) {String filePath = "path/to/your/document.txt"; // 替换为文档的实际路径try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {String line;int totalDuration = 0;Pattern durationPattern = Pattern.compile("^(\\d{1,2}):(\\d{2})$");while ((line = reader.readLine()) != null) {// 检查是否是时长行(每三行的第三行)if (line.matches(durationPattern)) {Matcher matcher = durationPattern.matcher(line);if (matcher.find()) {int minutes = Integer.parseInt(matcher.group(1));int seconds = Integer.parseInt(matcher.group(2));totalDuration += (minutes * 60) + seconds;}}}// 将总时长转换为小时、分钟、秒long hours = totalDuration / 3600;totalDuration %= 3600;long minutes = totalDuration / 60;long seconds = totalDuration % 60;System.out.printf("Total Duration: %d hours, %d minutes, %d seconds%n", hours, minutes, seconds);} catch (IOException e) {e.printStackTrace();}}
}
我把这段代码放到Idea,稍微改吧改吧,很快结果就出来了。
我验证了总的时间,和B站基本吻合,说明程序跑出来的结果是正确的。
总结
现在的AI能力有限,有些工作它很擅长,有些它不擅长。
其中很大的问题是AI大模型是个黑盒,你不知道它是怎么得出结果的,很难去纠正它,只能不断尝试,但或许它永远也不能给出正确的结果。
但是把它作为辅助工具还是非常不错的,比如让它写一段代码,不到一分钟就写出来了,要是纯人工码,可能得个把小时,如果是要边查API边写代码,那就更慢了。