上下文文档的更新方法及装置与流程

摘要: 本说明书一个或多个实施例涉及计算机,尤其涉及一种上下文文档的更新方法及装置。背景技术:1、在大语言模型辅助编码时,需要读取上下文文档,以理解领域知识、编码规范和...
上下文文档的更新方法及装置与流程

本说明书一个或多个实施例涉及计算机,尤其涉及一种上下文文档的更新方法及装置。

背景技术:

1、在大语言模型辅助编码时,需要读取上下文文档,以理解领域知识、编码规范和架构决策等,上下文文档的完整性和准确性,会直接影响大语言模型生成代码的质量。

2、目前,上下文文档的维护,目前主要依赖人工方式。开发人员需要手动编写上下文文档,并在代码变更过程中,手动更新上下文文档。

3、然而,凭借开发人员的经验来编写上下文文档,无法确定开发人员编写的知识和规则是否真的有效,从而无法保证上下文文档的准确性。而且,在开发人员编写上下文文档的过程中,可能会遗漏一些重要的知识和规则,从而无法保证上下文文档的完整性。

4、因此,在编写上下文文档的过程中,如何保证上下文文档的准确性和完整性,成为目前亟需解决的技术问题。

技术实现思路

1、本说明书一个或多个实施例提供了一种上下文文档的更新方法及装置,以保证上下文文档的准确性和完整性。

2、第一方面,本说明书一个或多个实施例提供了一种上下文文档的更新方法,该方法包括:获取目标需求文档和代码变更信息,目标需求文档用于指示实现至少一个功能,代码变更信息用于指示第二代码文本相对于第一代码文本的变更信息,第二代码文本为通过验证且用于实现至少一个功能的代码文本;调用代码生成模型基于目标需求文档、第一代码文本和上下文文档生成待评测代码,上下文文档为代码生成模型在生成代码的过程中所需遵守的规则集合;基于代码变更信息生成代码评测基准,代码评测基准包括至少一个变更项,至少一个变更项用于表征至少一个功能;确定代码评测基准中未被待评测代码实现的目标变更项;基于目标变更项生成改进信息,改进信息为代码生成模型在生成代码的过程中所需遵守的至少一个规则;基于改进信息更新上下文文档。

3、一种可能的实现方式中,获取目标需求文档,包括:获取原始需求信息,原始需求信息包括产品需求文档、技术实现文档和代码变更信息中的至少一个;将原始需求信息拆解为产品意图信息、验收标准信息和技术方案信息;基于产品意图信息和验收标准信息生成目标需求文档;其中,产品意图信息用于指示实现至少一个功能的目的和背景,验收标准信息用于指示实现至少一个功能的功能边界、预期行为和约束条件,技术方案信息用于指示至少一个功能的具体实现方式。

4、一种可能的实现方式中,在基于产品意图信息和验收标准信息生成目标需求文档以前,方法还包括:确定技术方案信息中的第一约束信息,第一约束信息为代码生成模型无法从上下文文档中推断出的约束信息;将第一约束信息添加至验收标准信息中。

5、一种可能的实现方式中,在基于产品意图信息和验收标准信息生成目标需求文档以前,方法还包括:确定验收标准信息中的第二约束信息,第二约束信息为代码生成模型可以从上下文文档中推断出的约束信息;删除验收标准信息中的第二约束信息。

6、一种可能的实现方式中,基于代码变更信息生成代码评测基准,包括:删除代码变更信息中的测试代码变更信息和格式化代码变更信息得到目标变更信息;基于目标变更信息生成至少一个变更项,变更项包括变更标识、变更类型、文件路径和变更描述;将至少一个变更项确定为代码评测基准。

7、一种可能的实现方式中,变更类型用于指示变更项属于新增、修改或删除;文件路径用于指示变更项涉及的代码文件在代码仓库中的存储位置;变更描述用于以自然语言描述变更项所实现的功能。

8、一种可能的实现方式中,在基于产品意图信息和验收标准信息生成目标需求文档以后,方法还包括:对目标需求文档进行质量检查得到检查结果;根据检查结果生成目标需求文档的质量标记,质量标记用于指示目标需求文档的质量等级,质量等级为合格、过度规范或规范不足。

9、一种可能的实现方式中,质量检查包括以下至少一项:检查目标需求文档中的产品意图信息是否完整;检查目标需求文档中的验收标准信息是否完整;检查目标需求文档中是否包含技术方案信息;检查验收标准信息中是否包含代码生成模型依据上下文文档能够推断出的信息;检查验收标准信息与代码变更信息的一致性。

10、一种可能的实现方式中,在基于产品意图信息和验收标准信息生成目标需求文档以后,方法还包括:基于代码变更信息对应的代码仓库地址、上下文文档所在的分支信息和目标需求文档对应的评审人信息生成元信息文件;将目标需求文档、元信息文件和代码评测基准关联存储,形成评测数据集。

11、一种可能的实现方式中,确定代码评测基准中未被待评测代码实现的目标变更项,包括:对比代码评测基准和待评测代码得到比较结果;在比较结果指示代码评测基准中存在被待评测代码部分实现的第一变更项的情况下,将第一变更项确定为目标变更项;在比较结果指示代码评测基准中存在未被待评测代码实现的第二变更项的情况下,将第二变更项确定为目标变更项;在比较结果指示代码评测基准中存在被待评测代码部分实现的第三变更项,且代码评测基准中存在未被待评测代码实现的第四变更项的情况下,将第三变更项和第四变更项确定为目标变更项。

12、一种可能的实现方式中,方法还包括:在比较结果指示代码评测基准中的第五变更项的描述粒度无法区分待评测代码的功能差异的情况下,确定第五变更项对应的第一代码逻辑;确定待评测代码对应的第二代码逻辑;在第一代码逻辑的功能行为与第二代码逻辑的功能行为不等价或部分等价的情况下,将第五变更项确定为目标变更项。

13、一种可能的实现方式中,基于目标变更项生成改进信息,包括:确定目标变更项在第二代码文本中对应的目标代码;将目标代码转化为通用规则;将通用规则确定为改进信息;其中,通用规则满足以下至少一个条件:不包含具体的代码行号,不包含目标需求文档中的特定名称,能够复用于至少一个场景,能够持久化至上下文文档中。

14、一种可能的实现方式中,在基于目标变更项生成改进信息以前,方法还包括:基于代码评测基准与待评测代码的匹配度确定待评测代码的第一分数,第一分数大于或等于0;基于待评测代码中存在的多余代码变更确定待评测代码的第二分数,第二分数小于或等于0,多余代码变更为代码评测基准中未要求的变更;基于第一分数与第二分数确定待评测代码的综合分数;在待评测代码的综合分数大于或等于阈值的情况下,生成第一指令,第一指令用于指示停止更新上下文文档;在待评测代码的综合分数小于阈值的情况下,生成第二指令,第二指令用于指示继续更新上下文文档。

15、一种可能的实现方式中,多余代码变更包括以下至少一种:删除了代码评测基准未要求删除的已有代码;修改了代码评测基准未涉及的已有代码;新增了代码评测基准未要求的代码、文件或方法。

16、一种可能的实现方式中,调用代码生成模型基于目标需求文档、第一代码文本和上下文文档生成待评测代码,包括:基于第一代码文本创建评测基线分支;基于上下文文档创建上下文分支;基于评测基线分支和上下文分支构建编码分支;调用代码生成模型基于目标需求文档在编码分支上生成待评测代码。

17、一种可能的实现方式中,在调用代码生成模型基于目标需求文档在编码分支上生成待评测代码以前,方法还包括:向代码生成模型发送访问约束指令,访问约束指令用于指示代码生成模型禁止访问除了编码分支和目标需求文档以外的任何内容。

18、一种可能的实现方式中,获取目标需求文档和代码变更信息,包括:由第一子代理执行,获取目标需求文档和代码变更信息;调用代码生成模型基于目标需求文档、第一代码文本和上下文文档生成待评测代码,包括:由第二子代理执行,调用代码生成模型基于目标需求文档、第一代码文本和上下文文档生成待评测代码;基于代码变更信息生成代码评测基准,包括:由第三子代理执行,基于代码变更信息生成代码评测基准;确定代码评测基准中未被待评测代码实现的目标变更项,包括:由第四子代理执行,确定代码评测基准中未被待评测代码实现的目标变更项;基于目标变更项生成改进信息,包括:由第五子代理执行,基于目标变更项生成改进信息;基于改进信息更新上下文文档,包括:由第六子代理执行,基于改进信息更新上下文文档。

19、一种可能的实现方式中,第一子代理、第二子代理、第三子代理、第四子代理、第五子代理和第六子代理之间通过文件系统传递数据;禁止第一子代理、第二子代理、第三子代理、第四子代理、第五子代理和第六子代理之间共享对话上下文;第一子代理、第二子代理、第三子代理、第四子代理、第五子代理和第六子代理中的每一个子代理在执行对应的步骤时,仅获取执行对应的步骤所需的信息,禁止获取执行对应的步骤不需要的信息。

20、一种可能的实现方式中,基于改进信息更新上下文文档,包括:确定目标变更项在第二代码文本中对应的目标代码;基于上下文文档和目标代码,确定对上下文文档执行的改进动作;基于上下文框架信息和目标代码确定目标文档,上下文框架信息用于指示不同类型的规则在上下文文档中的存储位置;按照改进动作将改进信息更新至上下文文档内的目标文档中。

21、一种可能的实现方式中,改进动作为以下任一种:向上下文文档中新增规则、更新上下文文档中的已有规则或删除上下文文档中的已有规则。

22、一种可能的实现方式中,其特征在于基于上下文文档和目标代码,确定对上下文文档执行的改进动作,包括:对比上下文文档和目标代码,确定目标代码的归因类型,归因类型包括以下至少一种:上下文文档内缺少必要信息、上下文文档内的信息过时或上下文文档内的信息模糊;在归因类型为上下文文档内缺少必要信息的情况下,将向上下文文档中新增规则确定为改进动作;在归因类型为上下文文档内的信息过时的情况下,将更新上下文文档中的已有规则确定为改进动作;在归因类型为上下文文档中的信息描述模糊的情况下,将删除上下文文档中的已有规则并重新写入澄清后的规则确定为改进动作。

23、一种可能的实现方式中,基于上下文框架信息和目标代码确定目标文档,包括:基于目标代码确定改进类型,改进类型包括以下至少一种:缺少关键路径说明、缺少约束条件、上下文误导、规范描述模糊;基于上下文框架信息确定改进类型对应的目标文档;其中,上下文框架信息用于指示以下对应关系:缺少关键路径说明对应上下文文档中的流程文档,缺少约束条件对应上下文文档中的编码规范文档,上下文误导对应上下文文档中的待修正文档,规范描述模糊对应上下文文档中的编码规范文档。

24、一种可能的实现方式中,基于改进信息更新上下文文档,包括:将改进信息作为一条独立的提交记录,提交至上下文文档所在的分支。

25、一种可能的实现方式中,在基于改进信息更新上下文文档以后,方法还包括:重复执行以下步骤迭代更新上下文文档,直至满足停止条件停止更新上下文文档:将上一次迭代更新的上下文文档确定为本次迭代更新的上下文文档;调用代码生成模型基于目标需求文档、第一代码文本和本次迭代更新的上下文文档生成目标待评测代码;确定代码评测基准中未被目标待评测代码实现的特定变更项;基于特定变更项生成目标改进信息;基于目标改进信息更新本次迭代更新的上下文文档;停止条件包括以下至少一项:迭代更新的次数达到最大迭代次数;基于目标变更项未生成新的改进信息;待评测代码的综合得分高于阈值,待评测代码的综合得分为基于代码评测基准与待评测代码的对比得到的分数;连续两次迭代更新对应的待评测代码的综合得分相同。

26、一种可能的实现方式中,在满足停止条件的情况下,禁止基于最后一次迭代更新的目标改进信息更新本次迭代更新的上下文文档。

27、一种可能的实现方式中,在满足停止条件的情况下,将最后一次迭代更新后的上下文文档提交至上下文文档的主分支。

28、第二方面,本说明书一个或多个实施例还提供了一种上下文文档的更新装置,装置包括:获取模块,用于获取目标需求文档和代码变更信息,目标需求文档用于指示实现至少一个功能,代码变更信息用于指示第二代码文本相对于第一代码文本的变更信息,第二代码文本为通过验证且用于实现至少一个功能的代码文本;第一生成模块,用于调用代码生成模型基于目标需求文档、第一代码文本和上下文文档生成待评测代码,上下文文档为代码生成模型在生成代码的过程中所需遵守的规则集合;第二生成模块,用于基于代码变更信息生成代码评测基准,代码评测基准包括至少一个变更项,至少一个变更项用于表征至少一个功能;确定模块,用于确定代码评测基准中未被待评测代码实现的目标变更项;第三生成模块,用于基于目标变更项生成改进信息,改进信息为代码生成模型在生成代码的过程中所需遵守的至少一个规则;更新模块,用于基于改进信息更新上下文文档。

29、一种可能的实现方式中,获取模块,具体用于获取原始需求信息,原始需求信息包括产品需求文档、技术实现文档和代码变更信息中的至少一个;将原始需求信息拆解为产品意图信息、验收标准信息和技术方案信息;基于产品意图信息和验收标准信息生成目标需求文档;其中,产品意图信息用于指示实现至少一个功能的目的和背景,验收标准信息用于指示实现至少一个功能的功能边界、预期行为和约束条件,技术方案信息用于指示至少一个功能的具体实现方式。

30、一种可能的实现方式中,获取模块,具体用于确定技术方案信息中的第一约束信息,第一约束信息为代码生成模型无法从上下文文档中推断出的约束信息;将第一约束信息添加至验收标准信息中。

31、一种可能的实现方式中,获取模块,具体用于确定验收标准信息中的第二约束信息,第二约束信息为代码生成模型可以从上下文文档中推断出的约束信息;删除验收标准信息中的第二约束信息。

32、一种可能的实现方式中,第二生成模块,具体用于删除代码变更信息中的测试代码变更信息和格式化代码变更信息得到目标变更信息;基于目标变更信息生成至少一个变更项,变更项包括变更标识、变更类型、文件路径和变更描述;将至少一个变更项确定为代码评测基准。

33、一种可能的实现方式中,变更类型用于指示变更项属于新增、修改或删除;文件路径用于指示变更项涉及的代码文件在代码仓库中的存储位置;变更描述用于以自然语言描述变更项所实现的功能。

34、一种可能的实现方式中,获取模块,具体用于对目标需求文档进行质量检查得到检查结果;根据检查结果生成目标需求文档的质量标记,质量标记用于指示目标需求文档的质量等级,质量等级为合格、过度规范或规范不足。

35、一种可能的实现方式中,质量检查包括以下至少一项:检查目标需求文档中的产品意图信息是否完整;检查目标需求文档中的验收标准信息是否完整;检查目标需求文档中是否包含技术方案信息;检查验收标准信息中是否包含代码生成模型依据上下文文档能够推断出的信息;检查验收标准信息与代码变更信息的一致性。

36、一种可能的实现方式中,获取模块,具体用于在基于产品意图信息和验收标准信息生成目标需求文档以后,方法还包括:基于代码变更信息对应的代码仓库地址、上下文文档所在的分支信息和目标需求文档对应的评审人信息生成元信息文件;将目标需求文档、元信息文件和代码评测基准关联存储,形成评测数据集。

37、一种可能的实现方式中,确定模块,具体用于对比代码评测基准和待评测代码得到比较结果;在比较结果指示代码评测基准中存在被待评测代码部分实现的第一变更项的情况下,将第一变更项确定为目标变更项;在比较结果指示代码评测基准中存在未被待评测代码实现的第二变更项的情况下,将第二变更项确定为目标变更项;在比较结果指示代码评测基准中存在被待评测代码部分实现的第三变更项,且代码评测基准中存在未被待评测代码实现的第四变更项的情况下,将第三变更项和第四变更项确定为目标变更项。

38、一种可能的实现方式中,确定模块,具体用于在比较结果指示代码评测基准中的第五变更项的描述粒度无法区分待评测代码的功能差异的情况下,确定第五变更项对应的第一代码逻辑;确定待评测代码对应的第二代码逻辑;在第一代码逻辑的功能行为与第二代码逻辑的功能行为不等价或部分等价的情况下,将第五变更项确定为目标变更项。

39、一种可能的实现方式中,第三生成模块,具体用于确定目标变更项在第二代码文本中对应的目标代码;将目标代码转化为通用规则;将通用规则确定为改进信息;其中,通用规则满足以下至少一个条件:不包含具体的代码行号,不包含目标需求文档中的特定名称,能够复用于至少一个场景,能够持久化至上下文文档中。

40、一种可能的实现方式中,第三生成模块,具体用于基于代码评测基准与待评测代码的匹配度确定待评测代码的第一分数,第一分数大于或等于0;基于待评测代码中存在的多余代码变更确定待评测代码的第二分数,第二分数小于或等于0,多余代码变更为代码评测基准中未要求的变更;基于第一分数与第二分数确定待评测代码的综合分数;在待评测代码的综合分数大于或等于阈值的情况下,生成第一指令,第一指令用于指示停止更新上下文文档;在待评测代码的综合分数小于阈值的情况下,生成第二指令,第二指令用于指示继续更新上下文文档。

41、一种可能的实现方式中,多余代码变更包括以下至少一种:删除了代码评测基准未要求删除的已有代码;修改了代码评测基准未涉及的已有代码;新增了代码评测基准未要求的代码、文件或方法。

42、一种可能的实现方式中,第一生成模块,具体用于基于第一代码文本创建评测基线分支;基于上下文文档创建上下文分支;基于评测基线分支和上下文分支构建编码分支;调用代码生成模型基于目标需求文档在编码分支上生成待评测代码。

43、一种可能的实现方式中,第一生成模块,具体用于向代码生成模型发送访问约束指令,访问约束指令用于指示代码生成模型禁止访问除了编码分支和目标需求文档以外的任何内容。

44、一种可能的实现方式中,获取模块,具体用于由第一子代理执行,获取目标需求文档和代码变更信息;第一生成模块,具体用于由第二子代理执行,调用代码生成模型基于目标需求文档、第一代码文本和上下文文档生成待评测代码;第二生成模块,具体用于由第三子代理执行,基于代码变更信息生成代码评测基准;确定模块,具体用于由第四子代理执行,确定代码评测基准中未被待评测代码实现的目标变更项;第三生成模块,具体用于由第五子代理执行,基于目标变更项生成改进信息;更新模块,具体用于由第六子代理执行,基于改进信息更新上下文文档。

45、一种可能的实现方式中,第一子代理、第二子代理、第三子代理、第四子代理、第五子代理和第六子代理之间通过文件系统传递数据;禁止第一子代理、第二子代理、第三子代理、第四子代理、第五子代理和第六子代理之间共享对话上下文;第一子代理、第二子代理、第三子代理、第四子代理、第五子代理和第六子代理中的每一个子代理在执行对应的步骤时,仅获取执行对应的步骤所需的信息,禁止获取执行对应的步骤不需要的信息。

46、一种可能的实现方式中,更新模块,具体用于确定目标变更项在第二代码文本中对应的目标代码;基于上下文文档和目标代码,确定对上下文文档执行的改进动作;基于上下文框架信息和目标代码确定目标文档,上下文框架信息用于指示不同类型的规则在上下文文档中的存储位置;按照改进动作将改进信息更新至上下文文档内的目标文档中。

47、一种可能的实现方式中,改进动作为以下任一种:向上下文文档中新增规则、更新上下文文档中的已有规则或删除上下文文档中的已有规则。

48、一种可能的实现方式中,更新模块,具体用于对比上下文文档和目标代码,确定目标代码的归因类型,归因类型包括以下至少一种:上下文文档内缺少必要信息、上下文文档内的信息过时或上下文文档内的信息模糊;在归因类型为上下文文档内缺少必要信息的情况下,将向上下文文档中新增规则确定为改进动作;在归因类型为上下文文档内的信息过时的情况下,将更新上下文文档中的已有规则确定为改进动作;在归因类型为上下文文档中的信息描述模糊的情况下,将删除上下文文档中的已有规则并重新写入澄清后的规则确定为改进动作。

49、一种可能的实现方式中,更新模块,具体用于基于目标代码确定改进类型,改进类型包括以下至少一种:缺少关键路径说明、缺少约束条件、上下文误导、规范描述模糊;基于上下文框架信息确定改进类型对应的目标文档;其中,上下文框架信息用于指示以下对应关系:缺少关键路径说明对应上下文文档中的流程文档,缺少约束条件对应上下文文档中的编码规范文档,上下文误导对应上下文文档中的待修正文档,规范描述模糊对应上下文文档中的编码规范文档。

50、一种可能的实现方式中,更新模块,具体用于将改进信息作为一条独立的提交记录,提交至上下文文档所在的分支。

51、一种可能的实现方式中,更新模块,具体用于重复执行以下步骤迭代更新上下文文档,直至满足停止条件停止更新上下文文档:将上一次迭代更新的上下文文档确定为本次迭代更新的上下文文档;调用代码生成模型基于目标需求文档、第一代码文本和本次迭代更新的上下文文档生成目标待评测代码;确定代码评测基准中未被目标待评测代码实现的特定变更项;基于特定变更项生成目标改进信息;基于目标改进信息更新本次迭代更新的上下文文档;停止条件包括以下至少一项:迭代更新的次数达到最大迭代次数;基于目标变更项未生成新的改进信息;待评测代码的综合得分高于阈值,待评测代码的综合得分为基于代码评测基准与待评测代码的对比得到的分数;连续两次迭代更新对应的待评测代码的综合得分相同。

52、一种可能的实现方式中,更新模块,具体用于在满足停止条件的情况下,禁止基于最后一次迭代更新的目标改进信息更新本次迭代更新的上下文文档。

53、一种可能的实现方式中,更新模块,具体用于在满足停止条件的情况下,将最后一次迭代更新后的上下文文档提交至上下文文档的主分支。

54、第三方面,本说明书一个或多个实施例还提供了一种电子设备,该电子设备包括存储器和处理器;存储器用于存储计算机程序产品;处理器用于执行存储器中存储的计算机程序产品,且计算机程序产品被执行时,实现上述第一方面的方法。

55、第四方面,本说明书一个或多个实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序指令,该计算机程序指令被执行时,实现上述第一方面的方法。

56、综上,在本说明书一个或多个实施例提供的上下文文档的更新方法中,第二代码文本为通过验证的代码文本,代码变更信息用于指示第二代码文本相对于第一代码文本的变更信息,由此可知,基于代码变更信息生成的代码评测基准为用于评判待评测代码的标准答案。通过将待评测代码与代码评测基准进行比对,可以精准定位待评测代码尚未实现的目标变更项,即待评测代码尚未实现的功能,通过目标变更项可以合理的推导出上下文文档中缺失的改进信息,从而可以精准的确定出上下文文档中需要更新的所有内容。因此,本说明书一个或多个实施例提供的上下文文档的更新方法,能够保证上下文文档的准确性和完整性。