探索 AI 大模型的 API 使用
自从 AI 大模型风靡全球以来,我一直因为没有乘上这辆快车而有些沮丧。不仅仅是因为工作中的业务上没能强行靠上去,平日闲暇生活,也不知道错过了多少时机。有一种别人都是热火朝天、吃饱喝足、乐在其中,而我只能围观看戏,还看不明白的感觉。
不过,终于还是花了不少时间和精力,也亲自体验了一下,使用 Flutter 开发了一个挂名'智能生活助手'的应用。虽然只是支持选择调用各个云平台上部署的大模型的 API 来进行对话、绘图等功能,但依旧感觉把自己累到了。
不管效果如何,还是分享一下,也算是自己的一个阶段性总结,避免重蹈覆辙。
开发初衷
- 五月底各个厂商第一批次大模型接口降价时,就发现价格大都很美丽,但我始终不知道能拿来做什么。
- 平时有用到几个平台的网页版本,切来切去不是很方便。
- 我的老农父亲好像对这个话题也很感兴趣。
- 父辈老年人手机用得比我都勤,而我暂时只会初级的 Flutter。
- BAT 都算是大平台,之前也有账号。
- 永久免费的 API 逐渐多了起来。
其实最主要的就是有免费的 API,我就想试试看效果怎么样,高级一点的功能因为模型级别有限,但如果当个翻译器、问个菜谱、查一下历史名人、讲两个笑话、写个文档摘要什么的,也不是不行。
艰难历程
总结起来就是:操之过急、盲目从事、瞎忙一气、收效甚微。
一开始就想着单纯试试百度免费的 API 就好,那个时候甚至连 AIGC 具体是啥都闹不明白,只是想着,有 API,那就发起请求、得到响应、处理响应、显示数据,done and done。
然后又发现好像腾讯的混元 lite 也免费了,然后又发起请求得到响应、处理响应数据、显示数据……
既然 BT 都有了,那 A 也要加上。千问虽然没有免费的,但那个时候'通义法睿'是免费的,一些第三方模型有限时限量免费的额度,然后又发起请求……
都写好了,发现好像都是聊天对话,是不是都可以放在一起?页面放在一起、请求方法放在一起、参数响应类放在一起……那不就是全都重构了?
- 那个时候,BAT 的接口参数都是各有特点,都不完全兼容现在的 OpenAI 的参数形式:阿里有自己的输入响应结构,腾讯的请求响应栏位是帕斯卡命名,百度的 system 参数在最外层而不是指定 message 的 role……而我在 Flutter 直接调用,基本属于是前端调用,也算是用不了 SDK。大费周章之后,所谓的兼容所有 3 个平台的所有参数,其实就是把栏位全部铺满了而已。
当时我甚至还不知道流式响应是怎么回事,我还以为每次推送的 token 都要累加,那就是非流式可能几十个 token,流式的得几百几千了,那我肯定不舍得。
……
就这样,在基础概念都没搞明白的情况,本着'发起请求、得到响应、处理响应、显示数据'的前端老流程,6 月底我就写出了第一个版本。那个时候到还简单,就想着这个


