AI 写书,升级了!

   日期:2024-12-26    作者:2ce1y 移动:http://3jjewl.riyuangf.com/mobile/quote/54247.html

大家好,我是屑老板鱼皮,上周给大家分享了下我们 的写书功能。只需要输入你想写的书名和描述,就能够自动让 AI 帮你生成一本书籍:

由于也是刚刚上线嘛,功能没有做到特别完备,也收到了很多小伙伴们的反馈,比如:

收到大家的反馈后,我就开始写代码来修复这些问题了。

现在,AI 写书功能已经全面升级,改进如下:

欢迎大家体验一下,AI 写出来的书,还是挺有意思的哈哈!

鱼聪明 AI:https://yucongming.com

介绍完了优化点,接下来我想给大家分享一下 AI 写书程序的优化方法。

当我们要开发一个执行时间很长、中间过程很多的任务时,都可以采用下面的方法来设计程序,能够给发起任务的用户带来更好的体验。

比如我们鱼聪明的 AI 写书任务,要经过:任务校验 => 生成目录 => 依次生成多篇文章 => 结果生成等多个流程,总耗时可能要超过 10 分钟。

最简单粗暴的方式,就是一个方法内,把所有这套流程的代码全部写完。像下面这样:

但是这样的缺点很明显:

所以,首先我们要进行 任务拆分 ,把每个任务作为一个单独的方法(函数),将上一个任务的结果作为下一个任务的输入来进行参数传递。

像下面这样:

这样,程序的结构就很清晰了。但只要有一个方法失败,整个写书任务还是会终止,再次重试时还会从第一步(任务校验)开始执行。

怎么解决呢?

我们可以对任务状态进行 持久化 ,比如把每个任务的执行结果、任务整体的执行状态保存到数据库中,比如当前正在写第几篇文章。如果失败了,就把失败的信息和当前步骤记录到数据库中,相当于保存了个断点。

然后,写书任务的每个小步骤在执行前,都要从数据库(而不是从程序中)获取当前任务的最新状态,从而判断自己是否需要执行当前步骤。

举个例子,如果已经生成过书籍的目录,然后服务器挂了导致任务失败。点击重试后,生成目录的任务就不用再执行了。

伪代码如下:

通过上面的 和 ,我们的程序就已经有了从中间失败状态继续执行的能力。

但是还要考虑一些特殊情况,比如任务失败了,还没来得及把 “失败” 状态保存到数据库中服务器就挂了,给用户的感觉就是 “任务仍在执行中”。

对于这种情况,可以编写定时任务来轮询数据库中所有执行超过一定时间、并且状态仍为执行中的任务,并且将这些任务状态置为 “失败”,算是一种补偿机制。

当然,系统资源允许的情况下,还可以适当增加重试策略,任务失败后自动重试,不影响用户体验。但一定要设置最大重试次数、重试间隔时间等,避免 “滚雪球”。

此外,只要是开发这种长耗时的任务,在上线初期最好多加一些监控和日志,后面排查问题会方便很多。

这样一套流程下来,程序的可靠性、可用性就会增强不少~


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号