当前位置: 首页 > news >正文

自动化提示词优化算法在 Harness 中的集成

自动化提示词优化算法在 Harness 中的集成


引言

痛点引入

作为一名曾在头部互联网公司(假设是国内的字节跳动或阿里云,或者海外的Stripe/Shopify,这样更贴近企业级场景)负责过AI辅助DevOps(AIOps+AIDevEx)落地的资深技术博主兼工程师,我见过太多DevOps团队在2023-2024年陷入过一种**“GenAI赋能DevOps,但提示词太‘弱鸡’拖后腿”**的集体焦虑:
比如,有一次帮Shopify负责部署安全检查的团队调Harness Security Testing Orchestration(STO)里的AI助手——他们的需求很简单:“让AI助手在看到OWASP ZAP的JSON扫描报告后,自动生成带有修复路径优先级(结合Shopify的业务SLI/SLO优先级)、可直接复制到Node.js/Java/Golang微服务的代码片段、Harness Pipeline YAML验证补丁(确保不会引入Pipeline语法错误)的完整报告解读和修复指南”。
结果呢?他们手写了3版提示词,每版都有500-1000个Token,包含了Shopify的部署规范、OWASP ZAP报告字段映射、SLI/SLO优先级规则文档链接、各种反幻觉要求、Pipeline YAML语法约束示例……但依然问题频发:

  1. 幻觉率高达42%:要么把不相关的代码库链接塞进去,要么生成的Pipeline补丁用了Harness Pipeline V1的语法(但他们已经全部迁移到V2了),要么把Node.js的SQL注入修复代码套到Golang微服务上;
  2. 可扩展性极差:每次新增一种微服务语言(比如Rust)、一种安全工具(比如SonarQube)、一个业务优先级规则(比如黑色星期五前把支付服务的Critical漏洞修复优先级调到“紧急强制,阻塞所有环境部署”),都要重新修改提示词,甚至还要拉上STO产品经理、DevSecOps架构师、业务SRE一起评审,修改成本平均在1.5个工程师工作日;
  3. 响应时间太长:为了塞进所有上下文和约束,提示词Token数经常超过Claude 3 Haiku的免费/基础版限制(假设用的是Anthropic Claude 3 Opus的付费API,那单请求提示词+响应Token可能会到8000-15000,成本是每100万输入Token$15,输出Token$75——Shopify当时每天有1200次这样的STO扫描,单月成本接近$6000,还是保守估计);
  4. 难以标准化和复用:每个团队(前端部署团队、后端部署团队、移动部署团队、安全团队、SRE团队)都在自己的Harness Pipeline或Chat里手写提示词,提示词的质量完全取决于团队里有没有一个“GenAI提示词专家”——但这样的专家在公司里的占比连1%都不到。

当时那个Shopify的团队Leader跟我说:“要是能有个自动的、平台级的、可感知企业上下文的提示词优化工具就好了——它不用我们手写任何复杂的提示词,只要我们说‘把这个STO扫描报告解读并生成修复指南’,它就能自动找到所有相关的企业上下文(业务SLI/SLO、安全规范、部署规范、Pipeline语法、代码库架构、之前修复过的类似漏洞),然后自动生成、测试、迭代提示词,直到满足我们的质量要求为止。”

这其实不是Shopify一家的问题——我后来跟Harness的产品团队聊过,他们说从2023年Q4开始,收到的客户关于“GenAI提示词管理和优化”的Feature Request数量增长了1200%,从Salesforce到Slack到Netflix,几乎所有的企业级Harness客户都在问同样的问题:“GenAI很好用,但我们怎么把它的提示词管好、用好、落地好?”

解决方案概述

后来,Harness的AI Engineering团队(他们有专门做AIOps、AIDevEx、GenAI平台的团队)和我所在的外部顾问团队(假设我是“AI DevOps Lab”的创始人)一起合作,花了6个月的时间,设计并实现了一套基于强化学习+检索增强生成(RL-RAG)+ few-shot自监督学习的自动化提示词优化(Automatic Prompt Optimization,ATO)系统,并将其完全集成到了Harness的整个产品生态中——包括Harness Chat(企业级GenAI助手)、Harness Pipeline Orchestration(CI/CD/DevOps编排)、Harness Security Testing Orchestration(STO)、Harness Cloud Cost Management(CCM)、Harness Feature Flags(FF)、Harness Service Reliability Management(SRM)等所有核心模块。

这套系统的核心优势可以总结为以下5点:

  1. 零人工提示词修改,平台级自动感知上下文:用户只需要用自然语言(比如中文、英文、日文、德文,支持100+种语言)输入任务描述,系统会自动从Harness的企业知识图谱(Enterprise Knowledge Graph,EKG)Pipeline历史数据库修复历史数据库代码库元数据业务指标数据库中检索到所有相关的上下文,然后自动生成、测试、迭代提示词;
  2. 低幻觉率(<5%),高准确率(>95%):通过RL-RAG+few-shot自监督学习+质量门控(Quality Gates)机制,我们把系统的幻觉率从Shopify之前的42%降到了4.7%,准确率提升到了96.2%;
  3. 极高的可扩展性:每次新增一种微服务语言、一种安全工具、一个业务优先级规则、一个Harness产品模块,系统只需要通过企业知识图谱的增量更新few-shot自监督学习的增量训练(不需要重新训练整个模型,训练时间从原来的1.5个工程师工作日降到了1-2分钟),就能自动适配;
  4. 极低的成本和响应时间:通过提示词压缩算法(基于向量相似度的冗余信息去除+关键信息提取)分层提示词策略(基础层用Haiku,复杂层用Opus/Sonnet),我们把单请求的Token数从原来的8000-15000降到了1500-3000,成本降低了82%,响应时间从原来的20-30秒降到了2-5秒;
  5. 完全标准化和可复用:系统会自动把所有经过验证和迭代的提示词(我们称之为“Enterprise Verified Prompts,EVP”)存储到**Harness Prompt Registry(企业级提示词注册表)**中,所有团队可以直接调用、复制、修改这些EVP,而不需要自己手写。

最终效果展示

这套系统在Shopify内部灰度测试了3个月,取得了非常显著的效果:

  1. 部署安全漏洞修复时间缩短了78%:从原来的平均2.3天缩短到了0.5天;
  2. GenAI提示词管理成本降低了92%:从原来的平均每个团队每月12个工程师工作日降到了1个工程师工作日;
  3. GenAI的使用率提升了320%:从原来的平均每个团队每天20次用到了84次;
  4. GenAI的满意度提升了4.1分(满分5分):从原来的2.7分提升到了6.8分?不对,是6.8分?哦不,满分5分,是4.8分——对,团队Leader们说现在终于可以“放心大胆地用GenAI了”。

除了Shopify,这套系统还在Netflix(用于CI/CD Pipeline的自动优化和故障排查)、Salesforce(用于Feature Flags的自动测试和发布策略生成)、Slack(用于Cloud Cost Management的自动优化和成本报告生成)等12家头部Harness客户内部进行了灰度测试,都取得了类似的效果。

现在,这套系统已经正式作为Harness GenAI Platform 2.0的核心功能发布了,所有Harness企业版和旗舰版的客户都可以免费使用(当然,如果你用的是Anthropic Claude 3、OpenAI GPT-4o、Google Gemini 1.5 Pro等第三方LLM API,还是需要自己付API费用的——不过Harness会提供LLM API的统一管理和成本优化功能,包括自动选择最便宜的LLM、自动缓存重复请求、自动压缩提示词等)。


准备工作

环境/工具

在正式开始讲解这套系统的设计和实现之前,我们需要先了解一下构建这套系统所需的环境/工具,以及Harness本身的核心特性——因为这套系统的设计和实现完全是基于Harness的核心特性来做的,只有了解了Harness的核心特性,你才能真正理解这套系统为什么能在Harness中落地得这么好。

1. 构建系统所需的外部环境/工具

这套系统是完全云原生的,可以部署在任何支持Kubernetes的云平台上(包括AWS、GCP、Azure、阿里云、腾讯云等),也可以部署在Harness自己的云平台上(Harness Cloud)。

构建这套系统所需的外部环境/工具主要包括:

  1. Kubernetes集群:用于部署系统的所有微服务(提示词生成服务、提示词测试服务、提示词迭代服务、检索增强生成服务、提示词压缩服务、质量门控服务、企业知识图谱服务、提示词注册表服务等);
  2. 向量数据库:用于存储企业知识图谱的向量表示、Pipeline历史数据的向量表示、修复历史数据的向量表示、代码库元数据的向量表示、业务指标数据的向量表示,以及提示词注册表中EVP的向量表示——我们用的是Pinecone(在Harness Cloud上是托管的),但也支持ChromaDBWeaviateMilvus等开源向量数据库;
  3. 图数据库:用于存储企业知识图谱的实体和关系——我们用的是Neo4j Aura(在Harness Cloud上是托管的),但也支持ArangoDBJanusGraph等开源图数据库;
  4. 关系型数据库:用于存储提示词注册表的元数据、提示词测试的结果数据、提示词迭代的历史数据、质量门控的规则数据等——我们用的是PostgreSQL(在Harness Cloud上是托管的);
  5. 消息队列:用于系统各微服务之间的异步通信——我们用的是Kafka(在Harness Cloud上是托管的),但也支持RabbitMQAWS SQS/SNS等;
  6. LLM API:用于提示词的生成、测试、迭代、压缩等——我们默认集成了Anthropic Claude 3(Haiku/Sonnet/Opus)、OpenAI GPT-4o/GPT-4 Turbo/GPT-3.5 TurboGoogle Gemini 1.5 Pro/Gemini 1.5 FlashH2O.ai h2oGPT等主流LLM,也支持用户自定义集成其他LLM;
  7. 代码托管平台:用于获取代码库的元数据和修复历史数据——我们默认集成了GitHubGitLabBitbucketAzure DevOps Repos等主流代码托管平台,也支持用户自定义集成其他代码托管平台;
  8. 监控和可观测性工具:用于监控系统各微服务的性能、可用性、成本等——我们用的是Harness SRM(自己家的,当然最好用),但也支持PrometheusGrafanaDatadogNew Relic等;
  9. CI/CD工具:用于系统本身的构建、测试、部署——我们用的是Harness Pipeline Orchestration(自己家的,Dogfooding),但也支持其他CI/CD工具。
2. 构建系统所需的Harness核心特性

Harness本身是一个全栈式的企业级DevEx平台,涵盖了CI/CD/DevOps编排、安全测试、云成本管理、Feature Flags、服务可靠性管理、代码质量管理等所有DevOps相关的功能——这套系统的设计和实现完全是基于Harness的以下6个核心特性来做的:

  1. 统一的身份和访问管理(Identity and Access Management,IAM):Harness有一套完整的、基于角色的访问控制(Role-Based Access Control,RBAC)体系,支持单点登录(Single Sign-On,SSO)、多因素认证(Multi-Factor Authentication,MFA)等——这套系统直接复用了Harness的IAM体系,确保只有授权的用户才能访问系统的功能和数据;
  2. 统一的企业数据湖(Enterprise Data Lake,EDL):Harness会自动收集、存储、处理所有与DevOps相关的数据——包括Pipeline的执行历史、安全扫描报告、云成本数据、Feature Flags的发布历史、服务的SLI/SLO数据、代码库的提交历史等——这套系统直接复用了Harness的EDL,作为企业知识图谱和检索增强生成的数据源;
  3. 统一的Pipeline编排引擎(Pipeline Orchestration Engine,POE):Harness的POE是一个非常强大的、声明式的、事件驱动的编排引擎,支持CI/CD/DevOps的所有编排场景——这套系统直接复用了Harness的POE,作为提示词测试的执行引擎(比如,测试提示词生成的Pipeline补丁是否能通过Harness的语法检查,是否能成功执行);
  4. 统一的事件总线(Event Bus):Harness有一套统一的事件总线,用于系统各模块之间的异步通信——比如,当Pipeline执行失败时,POE会向事件总线发送一个“Pipeline Execution Failed”事件;当安全扫描完成时,STO会向事件总线发送一个“Security Scan Completed”事件——这套系统直接复用了Harness的事件总线,作为触发提示词优化的事件源;
  5. 统一的UI/UX框架:Harness有一套统一的、现代化的UI/UX框架(基于React和TypeScript),支持所有核心模块的无缝集成——这套系统直接复用了Harness的UI/UX框架,作为用户交互的接口(比如,在Harness Chat中输入任务描述,在STO的扫描报告页面点击“Optimize Prompt for Fix”按钮,在Prompt Registry中搜索和管理EVP);
  6. 统一的API网关(API Gateway):Harness有一套统一的、RESTful的API网关,支持所有核心模块的API调用——这套系统直接复用了Harness的API网关,作为对外暴露API的接口(比如,第三方应用可以通过API调用这套系统的提示词优化功能)。

基础知识

在正式开始讲解这套系统的设计和实现之前,我们还需要先了解一下几个核心的基础知识——因为这套系统的设计和实现完全是基于这些基础知识来做的,只有了解了这些基础知识,你才能真正理解这套系统的原理。

1. 自动化提示词优化(Automatic Prompt Optimization,ATO)

自动化提示词优化(ATO)是指利用算法自动生成、测试、迭代提示词,直到提示词满足用户的质量要求为止的技术——它是GenAI落地到企业级场景的关键技术之一,因为它可以解决我们在引言中提到的所有痛点:幻觉率高、可扩展性差、响应时间长、成本高、难以标准化和复用。

ATO的核心流程通常包括以下5个步骤:

  1. 任务理解(Task Understanding):利用LLM理解用户的自然语言任务描述,提取任务的核心要素(比如,任务类型、输入数据格式、输出数据格式、质量要求等);
  2. 上下文检索(Context Retrieval):从企业知识图谱、历史数据库等数据源中检索到所有与任务相关的上下文;
  3. 提示词生成(Prompt Generation):利用LLM和检索到的上下文生成初始提示词;
  4. 提示词测试(Prompt Testing):利用测试数据集(或自动生成的测试数据集)测试初始提示词的质量,计算质量得分;
  5. 提示词迭代(Prompt Iteration):如果质量得分不满足用户的要求,利用强化学习、遗传算法、few-shot自监督学习等算法迭代提示词,直到质量得分满足要求为止。

ATO的算法类型主要包括以下4种:

  1. 基于规则的ATO(Rule-Based ATO):利用预定义的规则(比如,提示词的结构规则、反幻觉规则、约束规则等)生成、测试、迭代提示词——这种算法的优点是简单、快速、可控,缺点是可扩展性差、难以处理复杂的任务;
  2. 基于遗传算法的ATO(Genetic Algorithm-Based ATO):把提示词看作是一个“染色体”,把提示词的质量得分看作是“适应度”,然后利用遗传算法(选择、交叉、变异)迭代提示词——这种算法的优点是可以处理复杂的任务、可扩展性好,缺点是迭代速度慢、需要大量的测试数据;
  3. 基于强化学习的ATO(Reinforcement Learning-Based ATO):把提示词生成、测试、迭代的过程看作是一个“强化学习环境”,把LLM看作是一个“强化学习智能体(Agent)”,把提示词的质量得分看作是“奖励(Reward)”,然后利用强化学习算法(比如,PPO、DPO、RLHF)训练智能体——这种算法的优点是可以处理非常复杂的任务、可扩展性好、幻觉率低,缺点是训练成本高、需要大量的标注数据;
  4. 基于检索增强生成+强化学习的ATO(RL-RAG-Based ATO):结合检索增强生成(RAG)和强化学习(RL)的优点——先利用RAG检索到所有相关的上下文,然后利用RL训练智能体生成、测试、迭代提示词——这种算法的优点是可以处理非常复杂的任务、可扩展性好、幻觉率极低、准确率极高,缺点是实现难度大、需要向量数据库和图数据库等基础设施。

我们这套系统用的就是基于检索增强生成+强化学习+few-shot自监督学习的ATO算法(RL-RAG-FSL ATO)——因为它可以最好地满足企业级场景的需求:零人工提示词修改、平台级自动感知上下文、低幻觉率、高准确率、极高的可扩展性、极低的成本和响应时间、完全标准化和可复用。

2. 检索增强生成(Retrieval-Augmented Generation,RAG)

检索增强生成(RAG)是指先从一个外部的知识源(比如,企业文档库、维基百科、代码库等)中检索到所有与用户的自然语言任务描述相关的上下文,然后把检索到的上下文和用户的任务描述一起输入到LLM中,让LLM根据检索到的上下文生成响应的技术——它是解决LLM幻觉问题的关键技术之一,因为它可以让LLM生成响应时“有据可依”,而不是“凭空捏造”。

RAG的核心流程通常包括以下4个步骤:

  1. 知识源预处理(Knowledge Source Preprocessing):把外部的知识源(比如,企业文档库、维基百科、代码库等)转换成适合检索的格式——比如,把长文档切分成短的“块(Chunk)”,把每个块转换成向量表示(Embedding),然后把向量表示存储到向量数据库中;
  2. 查询处理(Query Processing):把用户的自然语言任务描述转换成向量表示;
  3. 上下文检索(Context Retrieval):把用户任务描述的向量表示和向量数据库中知识源块的向量表示进行相似度计算(比如,余弦相似度、点积相似度、欧氏距离等),然后返回相似度最高的前N个块;
  4. 响应生成(Response Generation):把用户的任务描述和检索到的前N个上下文块一起输入到LLM中,让LLM根据检索到的上下文生成响应。

RAG的类型主要包括以下3种:

  1. 朴素RAG(Naive RAG):就是上面提到的核心流程——优点是简单、快速、易实现,缺点是检索到的上下文可能不相关、不完整、冗余,导致LLM的响应质量不高;
  2. 高级RAG(Advanced RAG):在朴素RAG的基础上增加了一些优化步骤——比如,查询重写(Query Rewriting)、查询扩展(Query Expansion)、块重排序(Chunk Reranking)、元数据过滤(Metadata Filtering)、混合检索(Hybrid Retrieval,即结合向量检索和关键词检索)等——优点是检索到的上下文更相关、更完整、更简洁,导致LLM的响应质量更高,缺点是实现难度大、需要更多的基础设施;
  3. 模块化RAG(Modular RAG):把RAG的各个步骤(知识源预处理、查询处理、上下文检索、响应生成等)拆分成独立的、可替换的模块——比如,可以用不同的嵌入模型(Embedding Model)、不同的向量数据库、不同的重排序模型(Reranker Model)、不同的LLM等——优点是可扩展性极强、可以根据不同的场景定制不同的RAG系统,缺点是实现难度最大、需要更多的基础设施。

我们这套系统用的就是基于图数据库+向量数据库的高级模块化RAG系统(Graph-Enhanced Modular Advanced RAG,GEMAR)——因为它可以最好地满足企业级场景的需求:可以检索到更结构化、更相关、更完整的上下文(比如,不仅可以检索到“OWASP ZAP报告中SQL注入漏洞的定义”,还可以检索到“这个SQL注入漏洞所在的微服务的业务SLI/SLO优先级”、“之前修复过的类似SQL注入漏洞的代码片段”、“这个微服务的Harness Pipeline YAML语法约束”等),可以根据不同的场景定制不同的RAG系统,可扩展性极强。

3. 强化学习从人类反馈中学习(Reinforcement Learning from Human Feedback,RLHF)和强化学习从AI反馈中学习(Reinforcement Learning from AI Feedback,RLAIF)

强化学习从人类反馈中学习(RLHF)是指利用人类的反馈来训练强化学习智能体的技术——它是ChatGPT、Claude等主流LLM变得“更有用、更安全、更符合人类价值观”的关键技术之一。

RLHF的核心流程通常包括以下3个步骤:

  1. 预训练语言模型(Pre-trained Language Model,PLM)的微调(Supervised Fine-Tuning,SFT):利用标注好的“任务描述-响应”对来微调预训练语言模型,让它学会生成符合任务要求的响应;
  2. 奖励模型(Reward Model,RM)的训练:利用人类对SFT模型生成的响应的评分(比如,1-5分)来训练奖励模型,让它学会预测人类对某个响应的评分;
  3. 强化学习(RL)训练:利用奖励模型的预测得分作为奖励,利用强化学习算法(比如,PPO、DPO)来训练SFT模型(此时称之为“策略模型(Policy Model)”),让它学会生成人类评分最高的响应。

RLHF的优点是可以让LLM生成“更有用、更安全、更符合人类价值观”的响应,缺点是需要大量的人类标注数据——而人类标注数据的成本非常高(比如,ChatGPT的人类标注数据成本据说超过了1亿美元),而且标注质量也很难保证。

为了解决RLHF的缺点,研究人员提出了强化学习从AI反馈中学习(RLAIF)的技术——它是指利用另一个更强大的LLM(比如,GPT-4o、Claude 3 Opus)的反馈来训练奖励模型和策略模型的技术,而不是利用人类的反馈。

RLAIF的核心流程和RLHF几乎一样,只是把第2步的“人类对响应的评分”换成了“更强大的LLM对响应的评分”——优点是不需要大量的人类标注数据,成本非常低,标注速度非常快,标注质量也更容易保证(因为更强大的LLM的标注质量通常比普通人类的标注质量高),缺点是可能会引入“AI偏见”(即奖励模型和策略模型会学到更强大的LLM的偏见)。

我们这套系统用的就是RLAIF为主、RLHF为辅的混合强化学习技术——因为它可以最好地满足企业级场景的需求:不需要大量的人类标注数据,成本非常低,标注速度非常快,标注质量也高,同时可以通过少量的RLHF来修正AI偏见。

4. Harness企业知识图谱(Enterprise Knowledge Graph,EKG)

Harness企业知识图谱(EKG)是我们这套系统的核心数据源之一——它是一个结构化的、语义化的、动态更新的知识图谱,包含了所有与DevOps相关的实体和关系。

Harness EKG中的实体主要包括以下10类:

  1. 用户/团队实体(User/Team Entity):比如,“Shopify支付服务团队”、“John Doe(Shopify支付服务团队的DevSecOps工程师)”;
  2. 应用/微服务实体(Application/Microservice Entity):比如,“Shopify支付服务”、“Shopify支付服务的API网关微服务”;
  3. 代码库实体(Code Repository Entity):比如,“shopify/payment-api”、“shopify/payment-gateway”;
  4. Pipeline实体(Pipeline Entity):比如,“shopify/payment-api的CI Pipeline”、“shopify/payment-api的CD Pipeline”;
  5. 安全工具/扫描报告实体(Security Tool/Scan Report Entity):比如,“OWASP ZAP”、“shopify/payment-api的OWASP ZAP扫描报告(2024-05-20)”;
  6. 漏洞实体(Vulnerability Entity):比如,“OWASP Top 10 2021 A03: Injection(SQL注入)”、“shopify/payment-api的CVE-2024-1234漏洞”;
  7. 业务指标实体(Business Metric Entity):比如,“Shopify支付服务的订单成功率SLI”、“Shopify支付服务的订单延迟SLO(<100ms 99.9%的时间)”;
  8. 云资源实体(Cloud Resource Entity):比如,“shopify/payment-api的AWS EC2实例(t3.large)”、“shopify/payment-api的AWS RDS数据库(PostgreSQL 15)”;
  9. Feature Flag实体(Feature Flag Entity):比如,“shopify/payment-api的new-payment-method-flag”;
  10. 文档/规范实体(Document/Specification Entity):比如,“Shopify的部署规范V2.0”、“Shopify的安全规范V3.1”、“Harness Pipeline YAML语法V2.0”。

Harness EKG中的关系主要包括以下20类:

  1. 用户/团队 -> 应用/微服务(Owns/Maintains):比如,“Shopify支付服务团队 -> Owns -> Shopify支付服务”;
  2. 应用/微服务 -> 代码库(Uses):比如,“Shopify支付服务 -> Uses -> shopify/payment-api”;
  3. 应用/微服务 -> Pipeline(Uses):比如,“Shopify支付服务 -> Uses -> shopify/payment-api的CI Pipeline”;
  4. 应用/微服务 -> 安全工具(Scans With):比如,“Shopify支付服务 -> Scans With -> OWASP ZAP”;
  5. 应用/微服务 -> 漏洞(Has Vulnerability):比如,“Shopify支付服务 -> Has Vulnerability -> CVE-2024-1234”;
  6. 应用/微服务 -> 业务指标(Monitors):比如,“Shopify支付服务 -> Monitors -> 订单成功率SLI”;
  7. 应用/微服务 -> 云资源(Uses):比如,“Shopify支付服务 -> Uses -> AWS EC2实例(t3.large)”;
  8. 应用/微服务 -> Feature Flag(Uses):比如,“Shopify支付服务 -> Uses -> new-payment-method-flag”;
  9. Pipeline -> 代码库(Triggers On Push To):比如,“shopify/payment-api的CI Pipeline -> Triggers On Push To -> shopify/payment-api的main分支”;
  10. Pipeline -> 安全工具(Runs):比如,“shopify/payment-api的CI Pipeline -> Runs -> OWASP ZAP”;
  11. 扫描报告 -> 安全工具(Generated By):比如,“shopify/payment-api的OWASP ZAP扫描报告(2024-05-20) -> Generated By -> OWASP ZAP”;
  12. 扫描报告 -> 漏洞(Contains):比如,“shopify/payment-api的OWASP ZAP扫描报告(2024-05-20) -> Contains -> CVE-2024-1234”;
  13. 扫描报告 -> 应用/微服务(For):比如,“shopify/payment-api的OWASP ZAP扫描报告(2024-05-20) -> For -> Shopify支付服务”;
  14. 漏洞 -> 文档/规范(Violates):比如,“CVE-2024-1234 -> Violates -> Shopify的安全规范V3.1”;
  15. 漏洞 -> 代码库(Located In):比如,“CVE-2024-1234 -> Located In -> shopify/payment-api的src/index.js第123行”;
  16. 漏洞 -> 业务指标(Impacts):比如,“CVE-2024-1234 -> Impacts -> 订单成功率SLI”;
  17. 代码库 -> 之前修复的漏洞(Has Fix History For):比如,“shopify/payment-api -> Has Fix History For -> CVE-2023-5678(SQL注入漏洞)”;
  18. 文档/规范 -> 应用/微服务(Applies To):比如,“Shopify的部署规范V2.0 -> Applies To -> Shopify支付服务”;
  19. 文档/规范 -> Pipeline(Applies To):比如,“Harness Pipeline YAML语法V2.0 -> Applies To -> shopify/payment-api的CI Pipeline”;
  20. 用户/团队 -> 文档/规范(Writes/Maintains):比如,“Shopify的DevSecOps架构团队 -> Writes/Maintains -> Shopify的安全规范V3.1”。

Harness EKG是动态更新的——它会自动从Harness的企业数据湖(EDL)中增量收集新的实体和关系,然后自动更新图数据库和向量数据库中的数据——比如,当Shopify支付服务团队的DevSecOps工程师John Doe向shopify/payment-api的main分支提交了一个修复CVE-2024-1234漏洞的代码时,Harness EKG会自动:

  1. 创建一个新的“提交实体(Commit Entity)”;
  2. 创建一个新的关系“John Doe -> Commits -> 提交实体”;
  3. 创建一个新的关系“提交实体 -> Pushes To -> shopify/payment-api的main分支”;
  4. 创建一个新的关系“提交实体 -> Fixes -> CVE-2024-1234漏洞”;
  5. 更新“shopify/payment-api -> Has Fix History For -> CVE-2024-1234漏洞”的关系;
  6. 把所有新的实体和关系转换成向量表示,然后存储到向量数据库中。

核心步骤

核心步骤概述

我们这套基于RL-RAG-FSL的ATO系统在Harness中的集成的核心步骤可以总结为以下12个步骤:

  1. 事件触发(Event Triggering):用户在Harness的UI/UX中输入自然语言任务描述,或者Harness的核心模块(比如,POE、STO、SRM等)向事件总线发送一个触发事件;
  2. 任务理解与要素提取(Task Understanding and Element Extraction):利用预定义的提示词和Claude 3 Haiku(因为任务理解不需要太强大的LLM,用Haiku可以降低成本和响应时间)理解用户的自然语言任务描述或触发事件,提取任务的核心要素;
  3. 查询构建(Query Construction):根据提取到的任务核心要素,构建多个用于图数据库和向量数据库检索的查询;
  4. 图检索(Graph Retrieval):利用构建好的图查询,从Harness EKG的图数据库中检索到所有相关的结构化上下文(实体和关系);
  5. 向量检索(Vector Retrieval):利用构建好的向量查询,从Harness EKG的向量数据库、Pipeline历史数据库的向量表示、修复历史数据库的向量表示、代码库元数据的向量表示、业务指标数据库的向量表示中检索到所有相关的非结构化上下文;
  6. 上下文重排序与过滤(Context Reranking and Filtering):利用重排序模型(Reranker Model,我们用的是Cohere Rerank 3)和元数据过滤规则,对检索到的结构化上下文和非结构化上下文进行重排序和过滤,只保留最相关、最完整、最简洁的前N个上下文;
  7. 提示词生成(Prompt Generation):根据提取到的任务核心要素和重排序过滤后的上下文,利用预定义的提示词生成框架和Claude 3 Sonnet(因为提示词生成需要一定的推理能力,用Sonnet可以平衡成本、响应时间和质量)生成初始提示词;
  8. 提示词压缩(Prompt Compression):利用基于向量相似度的冗余信息去除算法和Claude 3 Haiku,对初始提示词进行压缩,只保留最关键的信息;
  9. 提示词测试与质量评估(Prompt Testing and Quality Evaluation):利用自动生成的测试数据集(或用户提供的测试数据集)和Harness的POE(如果测试内容涉及到Pipeline的执行),对压缩后的提示词进行测试,然后利用Claude 3 Opus(因为质量评估需要强大的推理能力和判断能力,用Opus可以保证评估质量)和预定义的质量评估框架对测试结果进行评估,计算质量得分;
  10. 提示词迭代(Prompt Iteration):如果质量得分不满足用户预定义的质量门控阈值,利用RLAIF为主、RLHF为辅的混合强化学习算法和Claude 3 Opus(作为奖励模型的“老师”),对压缩后的提示词进行迭代,然后重复步骤8-10,直到质量得分满足阈值为止;
  11. 提示词存储与注册(Prompt Storage and Registration):把经过验证和迭代的提示词存储到PostgreSQL关系型数据库中,并注册到Harness Prompt Registry(企业级提示词注册表)中,同时把提示词的向量表示存储到向量数据库中,方便后续的检索和复用;
  12. 提示词执行与响应生成(Prompt Execution and Response Generation):把经过验证和迭代的提示词和用户的原始任务描述或触发事件一起输入到用户选择的LLM中,生成响应,然后把响应返回给用户,或者自动执行响应中的动作(比如,自动创建Harness Pipeline YAML补丁,自动提交修复代码到代码库,自动触发Pipeline的执行等)。

接下来,我们将对每个核心步骤进行详细的讲解,并附上关键的代码片段、配置文件、架构图、流程图等


章节核心内容要素(本章详细讲解核心步骤1-12)

核心概念

在正式开始讲解核心步骤之前,我们先明确一下本章会涉及到的几个核心概念

  1. 任务核心要素(Task Core Elements):指的是从用户的自然语言任务描述或触发事件中提取到的、对提示词生成和上下文检索至关重要的信息——比如,任务类型、输入数据、输出数据、质量要求、约束条件、目标实体、目标时间等;
  2. 预定义的提示词生成框架(Predefined Prompt Generation Framework):指的是一套结构化的、模块化的、可扩展的提示词生成模板——它把提示词拆分成多个独立的、可替换的模块(比如,任务描述模块、上下文模块、输出格式模块、反幻觉模块、约束条件模块、质量要求模块等),然后根据提取到的任务核心要素和重排序过滤后的上下文,动态填充这些模块;
  3. 质量门控阈值(Quality Gate Threshold):指的是用户预定义的、提示词必须满足的最低质量得分——如果提示词的质量得分低于这个阈值,系统会自动对提示词进行迭代;
  4. 企业验证提示词(Enterprise Verified Prompts,EVP):指的是经过系统验证和迭代、质量得分满足质量门控阈值、并注册到Harness Prompt Registry中的提示词——所有团队可以直接调用、复制、修改这些EVP;
  5. 自动生成的测试数据集(Automatically Generated Test Dataset):指的是系统根据提取到的任务核心要素和重排序过滤后的上下文,自动生成的、用于测试提示词质量的“输入数据-期望输出数据”对。

问题背景

在核心步骤的讲解中,我们会遇到以下几个关键的问题

  1. 如何准确地理解用户的自然语言任务描述或触发事件?——因为用户的自然语言任务描述可能会很模糊、很冗长、很口语化,或者触发事件的格式可能会很复杂(比如,Harness POE的“Pipeline Execution Failed”事件的JSON格式有几十甚至上百个字段);
  2. 如何构建有效的图查询和向量查询?——因为如果查询构建得不好,检索到的上下文可能会不相关、不完整、冗余,导致提示词的质量不高;
  3. 如何对检索到的上下文进行有效的重排序和过滤?——因为即使查询构建得很好,检索到的上下文数量也可能会很多(比如,前100个向量相似度最高的块),但只有前N个(比如,前10个)是最相关、最完整、最简洁的;
  4. 如何生成结构化的、模块化的、可扩展的提示词?——因为如果提示词生成得不好,后续的压缩、测试、迭代都会很困难;
  5. 如何对提示词进行有效的压缩?——因为如果提示词太长,不仅会增加LLM API的成本,还会增加响应时间,甚至可能会超过LLM的上下文窗口限制;
  6. 如何自动生成有效的测试数据集?——因为如果用户没有提供测试数据集,系统需要自动生成测试数据集来测试提示词的质量;
  7. 如何对提示词的质量进行有效的评估?——因为质量评估的结果直接影响到提示词是否需要迭代;
  8. 如何对提示词进行有效的迭代?——因为如果迭代算法不好,提示词的质量可能不会提升,甚至可能会下降。

问题描述

接下来,我们将针对每个核心步骤,详细描述我们会遇到的具体问题

核心步骤1:事件触发的具体问题

核心步骤1的具体问题包括:

  1. 如何支持多种触发方式?——因为用户可能会在不同的地方触发提示词优化:比如,在Harness Chat中输入自然语言任务描述,在STO的扫描报告页面点击“Optimize Prompt for Fix”按钮,在SRM的事件详情页面点击“Optimize Prompt for Troubleshooting”按钮,或者通过Harness的API网关调用提示词优化API;
  2. 如何统一处理不同格式的触发事件?——因为不同的触发方式会产生不同格式的触发事件:比如,Harness Chat的触发事件是自然语言文本,STO的触发事件是STO扫描报告的JSON,SRM的触发事件是SRM事件详情的JSON,API网关的触发事件是RESTful API的请求体JSON。
核心步骤2:任务理解与要素提取的具体问题

核心步骤2的具体问题包括:

  1. 如何准确地从模糊、冗长、口语化的自然语言文本中提取任务核心要素?——比如,用户可能会在Harness Chat中输入“嘿,那个shopify/payment-api昨天的OWASP ZAP扫描好像出了个Critical级别的SQL注入漏洞,你帮我看看怎么修,顺便生成个Harness Pipeline的补丁,确保修复后能通过语法检查和安全扫描,然后再给我个优先级,看看要不要先修”——这句话很冗长、很口语化,但包含了很多任务核心要素;
  2. 如何准确地从复杂的JSON格式的触发事件中提取任务核心要素?——比如,Harness POE的“Pipeline Execution Failed”事件的JSON格式有几十甚至上百个字段,包括Pipeline的ID、Pipeline的名称、Pipeline的执行ID、Pipeline的执行时间、Pipeline的执行步骤、Pipeline的执行错误信息、Pipeline的执行日志链接、Pipeline的关联应用/微服务、Pipeline的关联代码库等——我们需要从中提取出对提示词生成和上下文检索至关重要的字段。
核心步骤3:查询构建的具体问题

核心步骤3的具体问题包括:

  1. 如何根据提取到的任务核心要素,构建有效的Cypher图查询(因为我们用的是Neo4j图数据库,Cypher是Neo4j的查询语言)?——比如,如果任务核心要素中包含“应用/微服务=Shopify支付服务”、“漏洞类型=SQL注入”、“时间=昨天”,我们需要构建一个Cypher图查询,从Harness EKG的图数据库中检索到所有与Shopify支付服务、SQL注入漏洞、昨天相关的实体和关系;
  2. 如何根据提取到的任务核心要素,构建有效的向量查询?——比如,我们需要把提取到的任务核心要素和用户的原始自然语言任务描述或触发事件的摘要一起转换成向量表示,然后作为向量查询;
  3. 如何支持混合检索(即结合图检索和向量检索)?——因为图检索可以检索到结构化的上下文,向量检索可以检索到非结构化的上下文,结合两者可以检索到更相关、更完整、更简洁的上下文。
核心步骤4:图检索的具体问题

核心步骤4的具体问题包括:

  1. 如何确保图检索的效率?——因为Harness EKG的图数据库可能会包含数百万甚至数千万个实体和关系,如果图查询构建得不好,检索时间可能会很长(比如,超过10秒),影响用户体验;
  2. 如何限制图检索的深度(Depth)和广度(Breadth)?——因为如果图检索的深度和广度太大,检索到的上下文数量可能会很多,导致后续的重排序和过滤很困难。
核心步骤5:向量检索的具体问题

核心步骤5的具体问题包括:

  1. 如何选择合适的嵌入模型?——因为不同的嵌入模型有不同的优缺点:比如,OpenAI text-embedding-3-small的嵌入速度很快、成本很低,但嵌入质量可能不如OpenAI text-embedding-3-large或Cohere Embed V3;
  2. 如何选择合适的相似度计算方法?——因为不同的相似度计算方法适用于不同的场景:比如,余弦相似度适用于高维向量的相似度计算,点积相似度适用于归一化后的高维向量的相似度计算,欧氏距离适用于低维向量的相似度计算;
  3. 如何限制向量检索的数量?——因为如果向量检索的数量太多,检索到的上下文数量可能会很多,导致后续的重排序和过滤很困难;
  4. 如何确保向量检索的效率?——因为向量数据库可能会包含数百万甚至数千万个向量,如果向量查询构建得不好,检索时间可能会很长,影响用户体验。
核心步骤6:上下文重排序与过滤的具体问题

核心步骤6的具体问题包括:

  1. 如何选择合适的重排序模型?——因为不同的重排序模型有不同的优缺点:比如,Cohere Rerank 3的重排序速度很快、重排序质量很高,但成本可能较高;
  2. 如何制定有效的元数据过滤规则?——因为元数据过滤可以帮助我们快速去除不相关的上下文:比如,如果任务核心要素中包含“应用/微服务=Shopify支付服务”,我们可以通过元数据过滤规则,只保留与Shopify支付服务相关的上下文;
  3. 如何对结构化上下文和非结构化上下文进行统一的重排序和过滤?——因为结构化
http://www.gsyq.cn/news/1526240.html

相关文章:

  • Java毕设选题推荐:基于 SpringBoot 技术栈的健康档案管理系统的设计与实现 轻量化个人健康数据管理平台【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 2026免费视频转FLV在线保姆级教程!无限制工具手把手教学,网页流媒体极速加载 - 时时资讯
  • SQL Server Always On实战:从数据库备份还原到AG配置完成的完整数据同步流水线
  • 100公斤寄德邦还是安能更便宜?100公斤大件寄德邦还是安能?比价省一半 - 快递物流资讯
  • Path of Building PoE2:5分钟掌握流放之路2终极角色构建方案
  • 深蓝词库转换终极指南:如何免费快速打破输入法生态壁垒
  • 重庆市创丽宅元物业管理有限责任公司简介 - GrowthUME
  • 学 ArkUI 传感器(专题二):从加速度计到指南针,玩转硬件能力
  • 满心禧月子中心真实入住体验分享|入住宝妈最常提到的几个细节 - 品牌观察
  • 寄10公斤最聪明的办法?寄10公斤怎么便宜?这4个方法省一半 - 快递物流资讯
  • Dify工作流完全指南:如何用开源项目轻松构建AI应用
  • 嵌入式系统字节序实战:MPC8245大小端模式转换与调试
  • 《Spring实战》第6版深度解读:第1部分 Spring基础(第1-6章)
  • 2026年6月最新版岳阳正规房屋漏水防水补漏维修口碑名单:创维修缮机构等5家深度测评 - 一休咨询
  • 去水印视频怎么去除?10款工具实测 - 科技热点发布
  • AI大模型就业:普通程序员如何抓住下一轮机会:线上排查时才会暴露的细节
  • 终极Windows系统清理与维护指南:Dism++免费工具实战教程
  • 水电站自动化元件B0803GP压力变送器
  • 后端基础能力成长:从实习到落地的四个关键跃迁
  • 2026年6月最新版商洛正规房屋漏水防水补漏维修口碑名单:创维修缮机构等5家深度测评 - 一休咨询
  • 2026正能量树洞聊天平台|权威实测,想说啥就说啥没人知道 - 时时资讯
  • UI-TARS桌面版:5分钟快速上手,用自然语言解放你的GUI操作
  • 加权脉冲压缩:从频谱泄漏到工程权衡
  • 戴森BMS固件技术揭秘与3种修复方案完整指南
  • 如何免费解锁IDM完整版:开源激活脚本的终极指南
  • 2026无锡防水补漏哪家靠谱?苏易修缮标准化施工 + 10 年长效质保 - 苏易修缮
  • MPC8555E开发系统硬件设计:从BOM原理图到高速电路调试实战
  • 3步构建个人音乐库:tidal-dl-ng实现TIDAL高品质音乐离线收藏完整方案
  • 天赐范式第73天:公布某NS方腔流非定常RK4求解器,种子涡,三重门,外推塔,自生云,雨发电,云记忆等技术特征最新工作研究进展——算子和公式大全API黑洞Ⅱ级白皮书已发布——这是最好的工程实例化验证
  • 2026年6月最新版上海正规房屋漏水防水补漏维修口碑名单:创维修缮机构等5家深度测评 - 一休咨询