最近闲下来,开始关注最近比较火的 AI 新闻。感觉这几个月,世界变化真的太快了,有一点愚蠢的人类,终于开始掌握魔法的感觉😄。关注开发者社区,尤其是 openai-gpt3.5-turbo 出来之后,感觉每天都有人 commit 新项目。而我每天的聊天量,感觉和 chatGPT 聊天的数据量已经大过了我和真实人类(和人类聊天本来也不怎么多)。
这种情况即让人好奇,又让人焦虑,仿佛站在时代变化的当口,又不知道该何去何从。和行业里的朋友聊天,大家都说以后一个人就可以开一个项目,也有人说开一家公司只需要 import openai
。
对于不了解的东西,往往试一试才知道(我鼓励所有的产品经理都要能自己写一点代码)。前一阵我在 5 年来第一篇更新 中提到,最近开始重拾基于 RSS 的长内容阅读了,有一些非常不错的英文财经博客,读起来还是很吃力和费时的。所以就在想能不能 import 一下魔法。我不是开发者,在春节左右我才开始了解 Python 编程,所以也在想试试能否在 chatGPT 的帮助下写一个能用的项目。
写了一个自用小项目
经过几天的零散时间,我完成了这个叫做 OpenAI Feed Trans 的小脚本:将我订阅的英文博客 RSS,使用 OpenAI 的 API 进行翻译,并保留所有样式生成一份新的 RSS Feed,供我自己订阅。
![OpenAI Feed Trans 的 Github 截图](https://fri.sh/blog/wp-content/uploads/2023/03/image-1024x629.png)
尝试让 chatGPT 帮我完成代码
最开始的想法是,是否可以将我的整个脚本交给 chatGPT 完成(因为功能实在是非常简单)。于是我非常详细的和 chatGPT 说了一下我的需求,以及定义了我要的输入输出。这货非常快的给了我结果,但是… 指望它直接可以 run 起来,果然是不行的😓。
但非常有效率的是,我可以自己将脚本的整个框架搭起来,然后让 chatGPT 帮我快速完成一些函数。比如
帮我使用 python 完成一个函数 def splits_content(content, max_tokens): 输入是一个名为 content 的字符串,字符串中通常包含了 html 语言的代码片段。函数的的作用是将这段文本拆分成不大于 max_tokens 的字符串数组,并返回这个数组。注意,在拆分字符串的时候,不能够将一句完整的句子拆分,遇到这种情况把这句话放到下一个分组。同时也不能拆散 html 标签。如 <p>test</p> 不可拆分为
<p>test<
与/p>
,只能是<p>test
和</p>
。请给出一个简洁的示例代码。
然后这货真的可以把代码写出来,并且偶尔给你示例的输入输出。但是需要注意的是,它给出的代码往往会包含很多 bug,这时候你连着预期输出或报错信息,它会抱歉后为你提供一份新的代码。运气好的话,你就可以得到一个真正能用的函数。在我的项目里,拆分段落的函数,基本就是原封不动 gtp 帮我写的,注释都写好啦。
而对于不太常用的第三方库,chatGTP 会表现得错误百出,比如 feedparser
模块相关的代码,就真的调不好了(我甚至劝它好好读一读文档)。因为我是 Python 新手,chatGTP 对我最大的价值就是我不用读完整本编程指南。我想做什么,可以直接让 chatGTP 帮我写示例,对于不懂的地方,让它给我做详细的解释。
我觉得这是一个非常快的学习路径,比我自己翻 doc 快太多。未来可能交互式学习法会大有可为。
同时,我还可以让 chatGTP 帮我去完成润色我的一部分注释,我的项目 README.md 就是它帮我完成的英文版本。
![通过 openai-rss-trans 翻译订阅源](https://fri.sh/blog/wp-content/uploads/2023/03/image-1-1024x574.png)
内容来自 Webto 推荐给我的一个内容很好的 IT财经 blog, Ben Thompson 的 https://stratechery.com
阅读器为开启 BR 模式的 Reeder
顺便说说 OpenAI Feed Trans
这是一个非常简单的小脚本,因为我也是新手,就不写编码教程了。简单分享一下思路:
1. 使用 `feedparser` 模块做 feed 解析 ( https://feedparser.readthedocs.io/en/latest/ )
2. 将每个 Entry 分割成小片段,这样每一次的 openai 请求不会超过最大 tokens
3. `import openai` (使用魔法)对每一个片段做翻译。Prompt 大概意思就是:将内容中的英文替换成中文,
只替换内容, 不要破坏html标签和结构。通过这样的指令,保留 RSS 内的 HTML 标签和样式正确。
4. 将 feedparser 的 feed 字典转换为 `feedgen`( https://feedgen.kiesow.be ) 的数据结构,使用 feedgen 保存新 feed
5. 处理 cache,因为每次请求都是要耗费 tokens 的,所以把翻译过的内容做缓存
如果你也有 RSS 阅读的习惯,也订阅一些外文 feed,自己有 www 服务器,欢迎速食… 🍚
Log 大概长这样… 凑合看
![](https://fri.sh/blog/wp-content/uploads/2023/03/Screenshot-2023-03-12-at-17.58.31-1024x492.png)
闲聊两句
最近和每个朋友聊天,都避不开最近的 AI 话题,总之 “人类又有新的自行车了”这件事一定是必然,变化也是必然的,这件事情想想让人兴奋。我感觉未来的 6 – 12 个月,很多事情都会翻天覆地的变化,那么我们在这个变化中能做点什么?做点什么有价值,又不是去投机地赶一个新的时髦?还不知道。
上一周憋在家里上网冲浪,没有冬天的时候逛公园逛的勤快,百望山的花儿开了,下周可以踏踏青。
一张几个礼拜前在圆明园拍的照片,下周再去看看,估计这一片已经开始冒出绿色了:)
![圆明园的一片空地](https://fri.sh/blog/wp-content/uploads/2023/03/SDI0176_tmp.jpeg)