GLM-4.7 的编程能力是否有宣传的那么强?我们设计了三轮专项测试。
前言
多轮对话能力是衡量 AI 编程助手智能化程度的重要指标。真正强大的编程助手应该能够在多轮交互中保持上下文连贯,像一个经验丰富的同事一样,与用户进行深入的技术探讨和协作。
Kimi Code 作为月之暗面推出的产品,其多轮对话能力的表现是我们测试的重点之一。我们设计了一系列测试,从不同维度来评估 Kimi Code 在长程对话中的表现。
测试涵盖了简单问答轮次、长程上下文保持、复杂多轮任务处理、对话切换场景等多个方面。通过这些测试,我们希望给读者一个关于 Kimi Code 多轮对话能力的客观评价。
测试设计
为了全面评估 Kimi Code 的多轮对话能力,我们设计了以下测试框架。
第一类是简单问答轮次测试。模拟日常编程中的问答场景,比如"帮我写一个函数"“这个函数报错了"“怎么优化它”,测试模型能否在连续对话中保持主题连贯。
第二类是长程上下文测试。设计一个持续 20 轮以上的长对话,考察模型对早期信息的记忆和调用能力。测试内容包括询问之前讨论过的内容、检查模型是否引用了早期的关键结论等。
第三类是复杂多轮任务测试。将一个复杂任务分解为多个步骤,每个步骤都需要 AI 理解上一步的结果并继续推进。这种测试考察的是模型的复杂任务处理能力。
第四类是对话切换测试。模拟中断后继续的场景,或者在多个主题之间切换,考察模型的上下文管理和切换能力。
简单问答轮次测试
简单问答轮次测试模拟了最常见的使用场景。
连续追问测试中,我们针对一个代码问题进行了 10 轮连续追问。每一轮的问题都建立在前一轮的基础上,要求模型准确理解问题的演进。
测试结果显示,Kimi Code 在简单追问场景下的表现稳定。前 5 轮的准确率接近 95%,与单轮问答的表现基本持平。从第 6 轮开始,准确率略有下降至约 90%,但整体仍然可靠。
追问的适应能力是加分项。Kimi Code 能够根据追问的方向调整回答策略,比如从宽泛到具体、从解释到实现。这种自适应能力让对话更加流畅。
不过,在某些情况下 Kimi Code 会出现"遗忘"现象——之前讨论过的细节在后续轮次中被忽略。这种情况通常发生在上下文接近模型限制的时候。
长程上下文测试
长程上下文是多轮对话能力的进阶考验。
20 轮对话测试中,我们设计了一个渐进式的任务:先讨论项目架构,再讨论某个模块的实现,最后讨论该模块的性能优化。20 轮对话结束后,我们询问模型最初讨论的架构设计要点。
Kimi Code 在测试中表现出了对关键信息的保持能力。关于架构设计的核心要点,模型的回答准确率约为 85%。但具体的数值和细节参数,准确率下降至约 70%。
这种"选择性遗忘"现象可能与模型的注意力机制有关。当上下文变长时,模型倾向于关注更近的信息,早期的重要细节可能被稀释。
测试还发现,Kimi Code 在长程对话中有时会给出前后不一致的回答。比如在第一轮和第十五轮对同一问题的回答存在细节差异。这种情况在超长对话中更为明显。
复杂多轮任务测试
复杂多轮任务是多轮对话能力的综合考验。
我们设计了一个"需求分析到代码实现"的完整流程,包括需求确认、技术方案讨论、代码实现、测试用例编写、文档编写等多个环节。整任务历时约 15 轮对话。
任务连贯性方面,Kimi Code 表现良好。它能够记住之前讨论过的需求约束、技术选型决策等内容,在后续环节中保持一致。不会出现推翻之前结论或遗忘关键需求的情况。
任务分解能力是亮点。Kimi Code 能够将复杂任务合理分解为多个子任务,并按照逻辑顺序逐步推进。这种能力对于长程对话的效率非常重要。
不过,测试中也发现 Kimi Code 有时会在子任务之间的衔接上出现问题。比如在完成代码实现后,直接跳到测试用例编写,但没有确认实现是否完全符合需求。
对话切换能力测试
对话切换测试考察模型在多主题场景下的表现。
主题切换测试中,我们在同一个会话中交替讨论两个不相关的主题(如"Python 异步编程"和"React 组件设计”),每轮讨论 3-5 个问题,然后询问模型能否准确识别当前讨论的主题。
Kimi Code 在主题切换后通常能够正确识别新的讨论主题。但从旧主题到新主题的切换需要约 1-2 轮的"热身"时间,这期间的回答可能还会受到旧主题的影响。
上下文隔离测试发现,当切换主题后,Kimi Code 有时仍会在回答中引用之前主题的内容。这种"串台"现象在模型看来是合理的,但在用户看来可能造成困惑。
中断恢复测试模拟了会话中断后的继续。当我们中断对话 30 分钟后再继续,Kimi Code 能够根据之前的简短总结快速恢复上下文,但如果中断时间过长或中间有其他会话插入,恢复的准确性会下降。
对话效率分析
除了对话质量,对话效率也是实用中的重要考量。
Token 消耗是直接影响使用成本的指标。Kimi Code 在长程对话中的 Token 消耗控制得当,没有出现上下文膨胀过快的问题。这得益于其较为高效的上下文压缩策略。
响应时间方面,随着对话轮次增加,响应时间会略有上升。这是正常的上下文增长带来的开销,但在 Kimi Code 上表现并不明显,大多数时候响应仍然保持流畅。
多轮任务完成率是我们设计的综合指标。在我们设计的复杂多轮任务测试中,Kimi Code 的完成率约为 80%。未完成的任务通常是因为中间出现了理解偏差或上下文溢出。
改进建议
基于测试结果,我们对 Kimi Code 的多轮对话能力有以下改进建议。
增强长期记忆的稳定性是关键。如果模型能够在更长的时间内保持对关键信息的准确记忆,将显著提升用户体验。
减少"串台"现象能增强对话的清晰度。主题切换时,模型应该更快地"清空"之前的主题信息,专注于当前讨论。
更主动的上下文管理也是可以改进的方向。当上下文接近限制时,模型可以主动询问用户是否需要总结或压缩当前对话,而非被动地等到溢出。
总结
综合测试结果,Kimi Code 的多轮对话能力处于行业中上水平。能够满足日常编程场景下的多轮交互需求,在复杂任务处理上也有不错的表现。
不过,在超长对话和复杂主题切换的场景下,Kimi Code 仍有提升空间。对于需要长时间、高复杂度协作的项目,用户可能需要在使用中注意管理对话节奏,适时总结和压缩上下文。
整体而言,Kimi Code 的多轮对话能力对于大多数使用场景是够用的。随着模型能力的持续迭代,我们期待看到更出色的表现。