声韵终端
声韵终端是我在2023年7月开发的一款让 LLM 根据用户指令主动调用在 Linux Shell 中生成并运行命令,并帮助用户完成文件处理,代码编写,系统配置等工作的“执行引擎”——至少当时 Agent 这个词还没被发明出来,于是我们给他命名为执行引擎….
事情是这样的,最近登录自己好多年没有登录过的 gitee 翻出来了自己曾今的项目…..
分享给当时的组员….(我说 现在 agent 那么火 其实我们真是 agent 开发领域的先驱了)
2023年,高一暑假,我受到学校信息课老师推荐参加了一个为期5天的名为“科创青禾 - Intel 青少年人工智能夏令营”的暑期活动。在活动中,大约有3天的时间由来自各个学校的AI教授给我们开讲座,最后两天时间是自由开发+项目展示。
我对于做项目也没什么灵感,但是我当时刚从 Copilot 作为主力转向使用 ChatGPT —— 我觉得 ChatGPT 考虑不到整个整个项目的结构,只能实现单个功能,在大型项目中并不实用,所以觉得他的价值根本匹配不上这么高的热度….但是相反,这种对话形式的 AI 很适合在 Linux 终端里作为命令翻译的辅助工具,于是我就构思了一个在终端中将用户的自然语言转换为 Linux 命令,然后直接执行帮助用户完成任务的程序。
那时还是 GPT3.5 时期,连 tool calling 这个概念都没有广泛的被模型厂商接受并训练到模型内部。模型的指令遵循能力也远没有现在那么强大也没有 json schema ——我们需要在提示词中使用非常大量的技巧才能让模型理解自己需要输出的是一条 Linux 命令,而不是作为助手输出一大段讲解,更不用说让模型主动通过命令探索项目,完善代码了….
我们设想的是,不管未来如何,按照目前的模型能力,至少可以让 AI 模型自己在 Linux Shell 里调用 ffmpeg,imagemagick 等工具,用户只需要对着电脑说说话,就能轻松的完成各种视频剪辑,图片处理等任务。为了处理语音输入,我们还用 tkinter 写了一个小 UI,能够随时唤起,听你的需求,然后再后台执行 Linux 命令。既然有声音,有终端,我们就可以给项目起一个非常炫酷的名字——声韵终端(Sonisphere Terminal),也是因为这个,我们的小组被命名为 Terminal Group。
我对于模型能力的判断是:在各种提示词技巧的辅助下,可以输出完成2到3轮的 Linux 命令调用,但是不能自主规划并完成任务。因此,相比“让 AI 帮助程序员写代码”,我们最初的构想是“让 AI 辅助不愿意记住复杂命令参数的用户完成一些批处理任务”。例如,当时我们的其中一个现场演示 demo 是让 AI 生成 tar 命令对目录进行打包:
你可能注意到,Response 和 “生成的命令” 是分开的,那是因为当时的 AI 非常难在请求中只输出命令,我们还要对 Response 进行解析,提取出命令:
最后一天的活动是每个小组摆一个摊位,让大家相互体验对方的项目,这是我们当时的海报:
当时活动的举办方说,他们会通过投票的方式选出一个“最受欢迎项目”,没有说其他的奖项。于是我把投票的链接发在了我的几个几千人的小群里…..后来发现这个最受欢迎项目并不是一个很高的奖项,他还是有一二三等奖的,并且从其他项目来看,我们拿个二等奖应该没什么问题,有点可惜()
后来我们去参加了一个名为“徐汇区未来工程师大赛”的区级比赛,所谓“交通大学专家”来评价我们的项目,结果…(虽然说还是给了我们一个二等奖)
现在来看,Agent 显然已经成为了一个 AI 领域非常重要且有用的概念,在这之前,比如 2024 年,我都不好意思把这个项目拿出来展示….当时觉得这个并没有什么技术含量,也做不了什么展示,仅仅是一个 shell 工具(虽然说现在好像也是)。但是有了 Agent 这个概念作为光环之后,这个项目的意义好像就发生了一些变化…