找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2511

积分

1

好友

348

主题
发表于 前天 03:33 | 查看: 8| 回复: 0

12-Factor Agents 架构图

前言:企业智能化的新机遇与挑战

随着人工智能的快速发展,尤其是大型语言模型的普及,企业正经历一场深刻的数字化与智能化变革。无论是IT运维、DevOps自动化,还是ERP和OA流程管理,LLM都在加速业务自动化与决策优化。

然而,在实践落地过程中,企业仍面临诸多严峻挑战:

  1. 不可控:LLM的输出具有不可预测性,尤其是在多步骤复杂决策中,一旦出错很难进行有效纠正。
  2. 不可恢复:任务执行过程中若发生中断,LLM通常无法自动保存状态或从中断点恢复执行。
  3. 不可扩展:单一、庞大的“全能型”Agent维护复杂度高,难以适应企业多业务线、多场景的部署需求。
  4. 高风险操作缺乏审计:当涉及资金流转、权限变更或关键业务流程时,现有方案往往难以满足企业严格的合规与审计要求。

为了解决上述核心问题,HumanLayer团队提出了 12-Factor Agents框架 。它并非一个具体的SDK,而是一套面向工程化的LLM Agent设计原则,其核心目标是将LLM从“实验性工具”提升为可控、可审计、可扩展、可恢复的企业级可靠助手。

12-Factor Agents 框架总览

12-Factor Agents是一套工程化设计方法论,旨在指导构建能够真正在企业环境中落地运行的LLM Agent系统。它的核心理念可以概括为以下几点:

  • LLM应定位为推理与规划引擎,而非直接的执行者或状态管理中心。
  • 上下文工程优先于单条Prompt,历史事件、知识库和提示模板必须进行结构化管理。
  • 采用微代理化设计思想,使系统更易于维护和横向扩展。
  • 通过事件日志状态管理确保任务全程可追踪、可回放、可审计。

基于这些设计思路,12个核心原则(Factor)可归纳为四大类别:

类别 核心思想 对应 Factor
LLM 与工具交互 自然语言 → 结构化指令;Prompt 可控 1, 2, 4
状态与流程管理 上下文可控、事件可追踪、可暂停/恢复 3, 5, 6, 8, 12
人机协作 高风险操作必须引入人工参与 7, 11
生产与扩展 错误自修复;微代理化;多触发渠道 9, 10

技术解读与工程实践

接下来,我们将对这12个Factor进行逐一解析,从核心原理工程实践企业落地案例,提供详细的实施指南。

Factor 1:Natural Language → Tool Calls

自然语言到工具调用的转化流程图

核心思想:LLM的输出应转化为结构化的指令,如JSON或特定的Action对象,而不是直接执行操作。这实现了决策与执行的解耦。

工程实践

  • 预先定义统一的工具调用Schema,并对LLM的输出进行严格格式校验。
  • LLM仅负责生成可测试、可解析的“计划”,具体执行由后端系统可靠地完成。

企业案例

  • ITSM:自动解析用户描述,生成结构化工单创建指令。
  • DevOps:根据需求描述,自动生成结构化的部署或回滚计划。

示例输出:

{
  “action”: “create_ticket”,
  “params”: {“system”: “email”, “severity”: “P1”}
}

Factor 2:Own Your Prompts

自定义提示词与代码结构示例

核心思想:提示词应被视为应用程序代码的一部分,需要进行版本控制、模块化管理和测试。

工程实践

  • 将Prompt模板化、参数化,与业务逻辑分离存放。
  • 在CI/CD流水线中引入Prompt的测试用例,确保其修改不会引入回归问题。

企业案例

  • ERP:将不同的业务审批规则抽象为可配置的Prompt模板。
  • OA:构建标准化的流程通知与询问模板库。

Factor 3:Own Your Context Window

上下文工程核心要素关系图

核心思想:上下文是Agent的“工作记忆”,必须被精心设计和主动管理,而非被动接受所有历史信息。

工程实践

  • 动态筛选历史事件,只保留与当前任务最相关的信息,避免上下文污染。
  • 集成动态检索能力,从知识库、文档中实时获取必要信息,提升推理效率与准确性。

企业案例

  • ITSM:在上下文中保留最近50条相关工单交互和SLA信息,而不是全部对话历史。
  • DevOps:仅保留最近10次部署的关键日志和结果,用于本次部署的决策参考。

Factor 4:Tools Are Just Structured Outputs

工具即结构化输出:JSON Schema与示例

核心思想:工具调用应由系统执行层(Executor)处理,LLM仅负责规划“要做什么”,而不是“如何做”。

工程实践

  • 构建统一的Executor执行模块,专门处理从LLM接收到的JSON/Action指令。
  • 明确分离“决策层”(LLM)与“执行层”(Executor),提升系统整体的可靠性与可控性。

企业案例

  • 将LLM输出的JSON指令,映射到具体的内部API或第三方服务API进行调用。
  • 将工单处理指令,通过Executor可靠地更新到Jira、ServiceNow等ITSM系统中。

Factor 5:Unify Execution and Business State

统一执行状态与业务状态的序列化流程

核心思想:将事件日志作为系统的单一可信源,完整记录业务状态的变化轨迹,而非只记录最终状态。

工程实践

  • 采用Event Sourcing(事件溯源)模式或使用专门的状态数据库来存储状态变更事件序列。
  • 基于完整的事件日志,可以轻松实现任务回放、审计追踪以及在异常崩溃后的状态恢复。

企业案例

  • ERP:完整记录一笔采购申请从提交、各级审批到最终执行的全过程事件。
  • DevOps:记录一次应用部署过程中每一个步骤的执行结果和上下文,支持失败后精准回放分析。

Factor 6:Launch / Pause / Resume via API

通过简单API实现Agent的暂停与恢复机制

核心思想:Agent应被设计为可通过API进行生命周期管理的服务,支持随时暂停与后续恢复。

工程实践

  • 对外暴露 startpauseresume 等标准化的控制API。
  • 设计支持长时间运行、异步任务的架构,并在暂停时将完整状态序列化持久化。

企业案例

  • 一个需要多天完成的复杂审批流程,可以在任意审批节点暂停,等待人工补充材料后恢复。
  • 一个自动化部署任务可以在“预发布检查”阶段暂停,等待确认后再继续执行部署操作。

Factor 7:Contact Humans with Tool Calls

通过工具调用联系人类进行交互的流程

核心思想:对于高风险或关键决策点,必须通过结构化工具调用的方式引入人工审批或确认环节。

工程实践

  • 提供 request_human_approval 之类的工具,支持“是/否”或表单式的人工输入。
  • Agent执行到此处时异步暂停,等待人工通过接口返回结果后,再继续执行后续流程。

企业案例

  • 超预算采购:当采购金额超过预设阈值时,自动触发向部门总监的审批请求。
  • 高权限变更:执行服务器Root权限修改、数据库删库等危险操作前,必须经过二级人工确认。

Factor 8:Own Your Control Flow

自定义控制流程的决策与执行切换

核心思想:业务流程的控制逻辑(如条件判断、循环、重试)应由系统掌控,LLM仅作为决策建议的提供者。

工程实践

  • 使用编程语言中的条件、循环、状态机等结构来定义主干业务流程。
  • LLM在流程的每个决策点上,只输出“下一步建议”,由系统逻辑决定是否采纳及如何跳转。

企业案例

  • ITSM:系统定义工单分类规则和分派策略,LLM负责建议具体的分类和负责人。
  • CI/CD:系统定义部署失败后的重试逻辑(如间隔、次数),LLM负责分析失败原因并建议修复方案。

Factor 9:Compact Errors into Context Window

将错误信息压缩并反馈至上下文窗口以实现自修复

核心思想:当工具调用或执行步骤失败时,不应简单抛出异常终止,而应将错误信息摘要后反馈给LLM,使其有机会自我修复。

工程实践

  • 捕获执行失败异常,将其提炼成简明的自然语言描述。
  • 将错误描述作为新输入的一部分,连同原有上下文再次提交给LLM,请求其生成修复方案或替代步骤。

企业案例

  • 部署失败:K8s部署命令失败,将错误日志摘要后让LLM分析原因,并生成相应的回滚或修正命令。
  • 工单执行异常:更新CRM系统时API返回404,让LLM根据错误信息判断是重试、创建新记录还是转人工处理。

Factor 10:Small, Focused Agents

小型化、专注化的微代理设计与协作流程

核心思想:设计多个小型、功能专注的Agent,每个只负责3-10个步骤的明确任务,避免构建单一、臃肿的“全能Agent”。

工程实践

  • 采用微代理化架构,每个Agent职责单一。
  • 通过DAG工作流引擎将多个微代理组合起来,协作完成复杂的业务流程。

企业案例

  • ITSM流程:拆分为“工单分类Agent”、“工单分派Agent”、“SLA监控与升级Agent”。
  • DevOps流程:拆分为“代码审查Agent”、“构建测试Agent”、“部署发布Agent”。

Factor 11:Trigger Anywhere, Meet Users Where They Are

支持多渠道触发与用户交互的Agent设计

核心思想:Agent应支持从企业内各种常用渠道被触发,并能通过用户习惯的渠道与之交互,实现“随处可用”。

工程实践

  • 集成Slack、Teams、电子邮件、Webhook、定时任务等多种触发源。
  • 支持事件驱动和定时调度两种触发模式,适应不同业务场景。

企业案例

  • 员工在Slack频道中@机器人并描述问题,自动触发ITSM工单创建流程。
  • 每天上午9点定时触发Agent,自动汇总前一天的系统运维报告并发送给相关负责人。

Factor 12:Stateless Reducer

将Agent设计为无状态化简器的核心流程

核心思想:将Agent的核心逻辑设计为一个纯函数,输入是当前状态和请求,输出是新的状态和动作,自身不维护任何隐藏状态。

工程实践

  • 遵循函数式编程思想,Agent函数签名类似于 (state, input) -> (new_state, actions)
  • 所有状态的管理和持久化都由外部系统(如数据库)负责,Agent函数本身是无状态的。

企业案例

  • ERP审批Agent:每次调用只根据当前审批单状态和审批意见,输出下一步状态和动作(如通过、驳回、转交)。
  • OA流程Agent:根据流程实例的当前节点和用户输入,决定流程如何流向下一个节点。

这种设计使得Agent易于测试支持并行扩展,并且行为可预测

企业级工程落地实践要点

将12-Factor Agents原则付诸实践,需要重点关注以下几个工程层面:

  1. 微代理化设计

    • 采用DAG工作流组合多个单一职责的微代理。
    • 好处是每个微代理更易开发、测试和独立升级。
  2. 上下文工程

    • 系统化地管理历史事件精选、知识库检索和提示模板。
    • 建立错误反馈闭环,使LLM能基于错误上下文进行自修复。
  3. 事件日志与状态管理

    • 采用Event Sourcing或状态数据库记录完整的状态变迁。
    • 为系统审计、问题回放和异常恢复提供坚实基础。
  4. 人机协作与审批

    • 为高风险操作预设结构化的人工审批节点。
    • 支持从多种渠道触发审批并异步等待结果。
  5. 工具执行与监控

    • 构建统一的Executor模块来安全、可靠地执行所有工具调用。
    • 对关键任务的执行过程进行全面监控和记录,确保可审计。

典型应用场景落地案例

场景 功能 LLM 输出 执行器操作 企业价值
ITSM 工单创建与分派 JSON格式的工单信息 调用ITSM系统(如Jira)API创建工单 自动分类、判断优先级、触发SLA升级,提升效率
DevOps CI/CD 部署 结构化的部署或回滚计划 执行K8s或Pipeline相关命令 降低部署失败率,实现失败自修复,全程审计可回放
ERP 审批与预算控制 通过/驳回/转交等审批指令 调用ERP系统审批流API 大幅降低审批流程延迟,自动拦截超预算申请
OA 日程/流程管理 日程安排或流程跳转建议 更新日历或工作流引擎状态 实现流程自动化,人机协作节点清晰,提升体验

总结

12-Factor Agents为企业构建LLM Agent系统提供了一套完整的工程化方法论。它通过以下核心价值点,解决了LLM落地的主要痛点:

  • 可控:系统掌控主干流程,LLM专注于推理与规划,输出结构化。
  • 可审计:结合上下文管理与事件日志,实现任务全过程可追溯。
  • 可扩展:微代理与无状态设计,使系统能够轻松水平扩展。
  • 自修复:将错误信息压缩并反馈至上下文,使Agent具备自动生成修复方案的能力。
  • 人机协作:高风险操作通过结构化工具调用引入人工审批,并支持多渠道触发。

遵循12-Factor Agents的设计原则,企业能够构建起可信赖、可维护、可扩展、可审计的LLM Agent系统,从而真正推动数字化与智能化战略的扎实落地。

本文探讨的12-Factor Agents框架为人工智能应用的企业级工程化提供了宝贵思路。如果你想了解更多关于AI Agent、LLM应用架构的深度讨论或获取相关实践资源,欢迎访问云栈社区进行交流与探索。


项目地址https://github.com/humanlayer/12-factor-agents/tree/main




上一篇:Ubuntu 24.04 LTS安装COSMIC桌面环境指南:与GNOME共存体验
下一篇:Spring Boot与Kubernetes微服务无损下线实践指南
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-14 15:40 , Processed in 0.213933 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表