Page 238 - 《软件学报》2026年第5期
P. 238

张添翼 等: LLM-Extractor: 基于大语言模型的软件配置间约束提取方法                                       2117


                 的语句. LLM-Extractor 将这些语句输入给      LLM  并提供少量样本案例, 抽取       E C  对软件功能  E F  的依赖关系, 最后将
                 找到的   Require 关联关系加入   CFRG  中.
                    (2)  E C -E C  关系抽取
                    这一步的目的是抽取配置项之间的直接关联关系. 由于第                   3.1.1  节中的配置标注步骤已经标注了每个语句中
                 的软件配置项, LLM-Extractor 只需筛选出直接包含多个配置项的语句, 进而引导                  LLM  分析这些语句抽取多个配
                 置之间的直接关联. 多个配置之间的直接关联可以分为                  3  种情况: 1) LeadTo  关系, 表示一个或多个配置条件成立
                 时, 会导致特定的影响, 该种影响可能是配置生效相关的, 也可能是系统功能状态相关的. 例如从文档语句“If fsync
                 is set to off, the setting of wal_sync_method does not take effect”中可以提取得到: (fsync==off) LeadTo AtStatus
                 (wal_sync_method, doesn’t take effect). 2) Require 关系, 该种关联关系结构与条件导致型相反, 由配置条件作为配
                 置生效或者特定系统功能正常运行的必要条件. 例如从配置文档语句“resource_track_duration is valid only when
                 enable_resource_track is set to on”中可以提取: Effect(resource_track_duration, valid) Require (enable_resource
                 _track==on). 3) Otherwise 关系, 这种关系存在于配置建议、配置警告语句中, 句中建议或者要求配置项应满足一
                 定的取值条件, 以达到系统正常运行等目的, 这些目的需要结合该句语句的上下文进行分析获得. 例如从 “You are
                 advised to set max_cached_tuplebufs to a value greater than or equal to twice of max_changes_in_memory”中可以提取
                 (max_cached_tuplebufs≥max_changes_in_memory) Otherwise AtStatus(cache for logical decoding not enough).
                    借助  LLM  提示工程, 辅以思维链和少样本学习方法, LLM-Extractor 分            3  个步骤提取上述的     3  种关联关系:
                 1) 判断是否存在可检测的配置条件; 2) 提取所有配置条件并使用合取析取连接; 3) 判断这些组合配置条件是否构
                 成上述   3  种逻辑关系, 并输出关联关系. 获得输出后          LLM-Extractor 在  CFRG  中添加新的关联关系和配置状态实
                 体. 对于在  3  种逻辑关联关系涉及的       Effect, LLM-Extractor 分成两类处理: 1) 对于配置生效的影响, LLM-Extractor
                 在  CFRG  中添加一个配置状态实体        E CS , 并添加  RelatedTo  关系将  E CS  关联到对应的软件配置项  E C ; 2) 不涉及软
                 件配置项, 这种情况      Effect 可能可以关联   CFRG  中已有的软件功能实体       E F , 即  Effect  ∈ E FS , 此时  LLM-Extractor 通
                 过向量匹配的方式匹配        Effect 与  E FS , 若相似度高于特定阈值  s, 则认为该   Effect 与该  E FS  相同. 若  Effect 无法匹配
                         E FS , LLM-Extractor 在  CFRG                                            E F . 对于
                 到已有的                           中添加新的     E FS  节点, 但是该节点不关联已有的软件功能实体
                 E Cond Otherwise E FS  关系, 可以把这种关系实际等同于   not E Cond LeadTo E FS , 并在  CFRG  中添加相应的条件节点
                 E Cond  和  LeadTo  关系.
                    (3)  E F -E F  关系抽取
                    这一步的目的是在       CFRG  上进一步添加软件功能        E F  之间存在的依赖关系, 进而链接可能通过多个            E F  节点相
                       E C  节点. 通过第  2.2.1  节的经验研究我们发现, 软件功能实体之间也可能存在一定的约束关系, 例如在图                     5
                 关联的
                 中, audit logs 依赖  auditing function  的开启. 同时通过图  5  的例子可以发现, 这些功能间依赖可能传递配置约束关
                 系. 因此抽取功能间的依赖关系, 有助于提取经过多层传递形成的复杂配置间约束.
                    通过第   2  节的配置文档分析我们发现, 软件功能实体及其状态间的依赖关系具有                       3  方面特点: 1) 一般不直接
                 出现在配置文档的文本描述中, 需要研究人员结合专家经验判断; 2) 一般出现在同一章节涉及的功能实体之间. 例
                 如在配置项    wal_receiver_status_interval 的描述中提到“If this parameter is set to 0, the standby server does not send
                 information”, 根据  CFRG  初始化规则, 我们从该句中提取软件功能实体“the standby server”以及对应的功能状态
                 “does not send information”, 同时补充相反状态“can send information”. 而在同一章节的配置项  hot_standby  的描述
                 中, 我们发现   hot_standby  的功能是“hot_standby specifies whether to allow connections and queries on a standby
                 server during its recovery”. 研究人员基于软件使用和运维经验, 认为“connections and queries on a standby server”应
                 当依赖于“the standby server can send information”. 从上述的例子中我们发现, 研究人员的判断过程结合了涉及功
                 能描述的文本以及自身经验, 而且这两个功能实体均出现在“standby server”章节中. 我们认为                    LLM  在使用大量各
                 类数据预训练的过程中可以获得此类经验, 因此                LLM-Extractor 调用  LLM  接口, 引导  LLM  判断不同文段描述中
                 的功能实体是否存在依赖关系.
   233   234   235   236   237   238   239   240   241   242   243