帖子

Memorial Edition

查看: 12|回复: 0

Write up: 让AI听得懂人话的一些努力

[复制链接]

男同大王

人气
7 点
金粒
350 粒
宝石
0 颗
爱心
0 颗
钻石
47 颗
贡献
0 点
发表于 昨天 23:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 huzpsb 于 2024-12-24 00:04 编辑

最近写了AIMC,可能也有人注意到了,它对MC插件的生成能力好像比正常的GPT要强一些,并且没什么幻觉。

这是为什么呢?本篇Write up旨在分享AIMC背后的设计理念。

#0:先测试,再立项
在一切的开始,我让ChatGPT使用Java、js、lua、(遗憾的是没有Python,因为运行时太大了)
调用了一些Bukkit的api。原始的实验结果在这里就不贴出了,但是结论是——
它最会js。
它写的Java总是没有导入。虽然理论上我可以写一个语法解析器帮他自动Alt+Enter一些,但是我总归是一只鸽子
除此之外,它写的lua狗屁不通不尽人意
因此最终选择了js

#1:基于幻觉,利用幻觉
当你在设计一个AI-LC的时候,你一定遇到过这个问题:
这AI怎么又tm的使用不存在的方法哇!
咳咳,其实我也遇到了这个问题。我是怎么解决的呢?
其实很简单——当一切都是幻觉的时候,一切就都不是幻觉。
具体来说,我先什么资料也没有提供,直接向ChatGPT要求,“使用JS写一个插件,xxxx”
它的确捏造了很多函数。作为修复,我实现了这些函数。当然,为了防止它再忘,我还是把这些函数的定义加入了上下文。
假想朋友总是很容易被记住;而ChatGPT也似乎异乎寻常地理解这些由它自己编造的函数。
甚至它倾向于把这个脚本语言叫做BukkitJS?因此在LangChain的内部环节,我都使用“BukkitJS”来称呼这个语言。
连$都是幻觉的一部分——可能是写jq写的吧。
不管怎么说,这项工作近乎消除了全部的幻觉。

#2:DRY,DSL

但是#1的方法总是仅限于Bukkit——对于第三方插件,比如说Vault,事实上无法控制API的定义。
不过这也没关系。只需要声明“BukkitJS有相关的工具类”,它总是很乐于编造一些wrapper函数。
以至于它甚至编造了一些关于Bukkit本身的函数,比如说ItemBuilder?
基于此我向$中又塞了许多链式的、基于ChatGPT幻觉的Wrapper。
总的来说$看上去更像是一种DSL——完全由幻觉产生的那种。
我做了一些轻微的工作来确保这些Wrapper的功能是完备的,仅此而已。

#3:放下性能情节,尊重AI智商
后续发现AI不是很能处理长函数——这倒不是什么新鲜事,Cognitive Complexity对AI也生效。
但是对GUI来说就很头大了——哪怕是有DSL,一堆回调组成的函数也不是简单东西...
括号不闭合可是要命的。
后来发现AI对命令的理解不是很到位。具体来说,AI眼中的命令貌似和事件广播是有一点混淆的?
我尝试引导AI,“GUI具有简单的回调“
结果它提出了给每个物品单独绑定一个命令。抛开性能不谈,这确是一个好方法。
就是性能很幽默。
此类事件不一而足;从这个意义上说$不适合人类编写,因为其实设计的不怎么人类,
并且性能也很一般。但是对于Chat来说,这便是如虎添翼!

#4:Summary
最终的结果大家也看到了,这套基于幻觉的设计理念确实给AI的能力带来了飞跃。
主观的说,AI就像一个自闭症儿童。放下知识的诅咒,接受AI的幻想,你会发现,其实它的幻想是自称逻辑的。
它也有自己的美丽世界,只不过逻辑和你我熟悉的不太一样罢了。
以上,hs。
放个demo镇楼。



插件搜索:
1000+收录/免登录/全汉化



https://plugin.started.ink/


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

人的一切痛苦,本质上都是对自己无能的愤怒。

Archiver|小黑屋| MCBBS纪念版 ( 新ICP备2024014954号|兵公网安备66010002000149号 )|隐私政策| 手机版

GMT+8, 2024-12-24 07:25 , Processed in 0.090769 second(s), 13 queries , Redis On.

"Minecraft"以及"我的世界"为美国微软公司的商标 本站与微软公司没有从属关系

© 2010-2024 MCBBS纪念版 版权所有 本站内原创内容版权属于其原创作者,除作者或版规特别声明外未经许可不得转载

返回顶部