Marscode AI 可能的技术原理猜测及可扩展功能推荐-大模型篇| 豆包MarsCode AI 刷题

69 阅读2分钟

前言

在大模型的加持下,Marscode让刷算法题,成为一种非常易上手的游戏。今天想从Marscode的功能角度,猜测一下其可能使用的大模型相关技术,以及未来可以扩展的功能,目的是分享一下自己使用Marscode的经验,希望能帮助大家更快上手,也希望Marscode能越来越好,如有不到位的地方,烦请批评指正。

Prompt Engineering

任何和大模型相关的应用,都离不开提示词工程(Prompt Engineering, PE)。 提示词是与大模型黑盒交互的窗口,在Marscode中拿到一个算法题后,右边Marscode交互部分的每一个按钮都对应着一组提示词,而我们也可以在对话框中编写内容,这个内容也会通过提示词工程注入进大模型的输入部分,以此来补全生成的内容。

功能界面.png 在工程实现上,一个完整的提示词可能包含“题目描述”、“代码编辑器内容”、“用户输入框内容”等未定内容,以及“提示词模版”等预先定义好的内容。

Multi-agent Thread

在每一轮回复结束后,注意到Marscode会自动生成一些可能的“追问”(Follow-ups),这个可能是另一个大模型在做这个事

Follow-ups.png

在工程实现上,这个功能行为通过提示词工程生成的可能性不大,因为模型泛化能力没法保证每一次都会按照提示词要求生成可能的追问,更不方便对生成的内容进行抽取和分割。所以极有可能是BERT类的大模型对先前的提示词内容以及补全的内容进行的“评估任务”。

可能的功能扩充-Tool Calling

既然已经能够补全代码,并且提供复制按钮,为什么不能直接覆盖掉原有的代码呢?在甲方眼里可能是非常顺从直觉的事情,实现起来可没这么简单。

首先是要让大模型理解到整个在线编辑器的API,这个工作量并不是简单地PE可以一蹴而就的,同时,在目前的大模型辅助编码应用场景下,大模型上下文长度限制基本够用,不需要采用RAG也可以实现很好的生成效果,不需要RAG也就意味着没有外接知识库,所有的“知识”,在模型训练完成时就被冻结了。而根据在线编辑器的状态,补全API调用代码并执行,需要的技术包括但不限于如下:

  • 具备工具调用能力的大模型
  • 具备参数信息抽取和检查的模型
  • 具备完整的与在线编辑器环境交互的运行环境