要详细地解释使用提示与技巧, 我必须先说明一些基本的概念:
虽然功能和专有名词很多, 但MAICA大致可以拆解为三套体系: MFocus, 核心模型, MTrigger. 我会讲得尽可能简单:
MFocus由一个通用LLM(大语言模型, 下同)处理. 其接受与用户输入基本相同的内容, 以逻辑性思维处理, 并收集所有必要的信息. 当信息收集完成, MFocus的思考和最终响应会被忽略(除非启用mf_aggressive), 仅有信息会被传递到核心模型.
核心模型是一个经过微调(Fine-tuning)的LLM, 即根据数据集学习过莫妮卡的行为, 并据此作出尽可能接近的模仿. MAICA的垂直领域微调会破坏LLM的原有功能, 因此其无法自主调用工具. 核心模型接受用户输入和MFocus信息, 并只需作出应答.
MTrigger由一个通用LLM处理. 其接受用户与核心模型上一轮次的对话, 以逻辑思维处理, 并调用所有必要的触发器. 当触发器调用完成, MTrigger的思考和最终响应会被忽略, 仅有触发器会被发送到客户端.
这一拓扑可以解释一部分常见的问题:
Q: 为什么日志/控制台中, MAICA的思考有时表现得与应答完全不同?
A: 因为这些思考来自MFocus, 对核心模型是不可见的, 自然与核心模型的应答没有关系. 这一表现一般而言是正常的.
Q: 为什么有时MTrigger会调用与应答完全无关的工具?
A: 因为这些工具调用来自MTrigger, 其不一定总是能理解核心模型的对答. 这一问题往往随MTrigger模型能力的增强而减少.
Q: 为什么有时候MAICA无法获取回答问题需要的信息?
A: 因为获取信息的决策由MFocus作出. 若其决定的作答方式与核心模型的作答方式不同, 就有可能获取不到核心模型所需要的信息. 这一问题相对罕见, 可以由MFocus的设计优化改善, 但未有彻底解决方法.
Q: 为什么有时MAICA会拒绝触发存在的触发器, 或答应其无法完成的请求?
A: 因为核心模型并不知道其可用的触发器有哪些. 我们为此添加了额外设计(amt_aggressive)并默认开启, 其要求MFocus预检触发器并给出指示. 这一般能缓解问题, 但未有彻底解决方法.