1. 文档概述
本文档基于 LangChain4j 框架下的 AgenticServices 核心工具类源码,完成全方位代码分析。该类是智能体体系的统一工厂入口,核心职责是提供静态工厂方法,用于创建、配置各类智能体服务、工作流智能体、远程通信智能体及声明式智能体系统,是 LangChain4j Agentic 模块的顶层入口类。
核心定位:统一封装所有智能体构建能力,整合工作流、编排、远程通信、人工介入、规划调度等全场景智能体创建逻辑,支撑声明式智能体体系的快速构建。
2. 类基础信息
| 项目 | 详情 |
|---|---|
| 包路径 | dev.langchain4j.agentic |
| 类修饰符 | public final 工具类(私有构造,禁止实例化) |
| 核心职责 | 提供全场景智能体静态工厂方法、声明式智能体系统构建、智能体配置与扩展、工作流加载与自定义 |
| 设计模式 | 静态工厂模式、建造者模式、服务提供者模式(SPI)、枚举单例模式 |
3. 核心结构拆解
3.1 私有构造方法
类构造方法私有化,强制作为工具类使用,禁止外部实例化,符合静态工具类设计规范。
3.2 内部枚举:WorkflowBuilderProvider
基于枚举实现线程安全单例,用于加载、缓存、自定义全局工作流构建器 WorkflowAgentsBuilder,核心能力:
- SPI 自动加载:通过
ServiceLoader加载自定义工作流构建器,无自定义实现时使用默认WorkflowAgentsBuilderImpl - 动态覆盖:支持通过外部API手动设置工作流构建器,实现业务自定义扩展
- 全局缓存:单例缓存构建器实例,避免重复加载资源
3.3 内部辅助实体类
封装智能体构建上下文与配置参数,简化复杂构建逻辑传参:
- DeclarativeAgentCreationContext:声明式智能体创建上下文,存储智能体服务类、智能体构建器实例
- DefaultDeclarativeAgentCreationContext:上述接口的默认只读实现(Record 不可变结构体)
- AgentConfigurator:智能体全局配置器,封装四大扩展能力:智能体配置回调、子智能体解析器、智能体实例工厂、默认内存ID供给器,支持空默认实例
3.4 内部工具封装类
内置两个函数式内部类,用于快速封装自定义智能体行为:
- AgentAction:封装无参可执行任务,适配简单智能体动作,捕获异常并包装为运行时异常
- AgenticScopeAction / AgenticScopeFunction:封装基于
AgenticScope上下文的消费逻辑与函数逻辑,支持上下文参数传递
4. 核心对外API能力分类
所有对外能力均为 public static 方法,按场景可分为基础智能体构建、工作流智能体构建、高阶智能体构建、远程通信智能体、声明式系统构建五大类。
4.1 基础智能体构建API
用于创建通用基础智能体构建器,支持泛型强类型与无类型两种场景:
agentBuilder():创建无类型智能体构建器UntypedAgentBuilderagentBuilder(Class<T>):创建强类型智能体构建器,绑定指定智能体服务接口humanInTheLoopBuilder():创建人工介入智能体构建器,用于人机协同工作流
4.2 工作流智能体构建API
基于全局 WorkflowAgentsBuilder 构建各类编排工作流,全部支持无类型/强类型双模式:
| 工作流类型 | API方法 | 能力说明 |
|---|---|---|
| 顺序工作流 | sequenceBuilder() / sequenceBuilder(Class) | 串行执行多个子智能体 |
| 并行工作流 | parallelBuilder() / parallelBuilder(Class) | 并行执行多个子智能体 |
| 并行映射工作流 | parallelMapperBuilder() / parallelMapperBuilder(Class) | 根据集合元素批量创建子智能体并行执行 |
| 循环工作流 | loopBuilder() / loopBuilder(Class) | 循环执行子智能体,支持最大迭代次数限制 |
| 条件工作流 | conditionalBuilder() / conditionalBuilder(Class) | 根据上下文条件动态触发对应子智能体 |
4.3 高阶智能体构建API
面向复杂智能体场景,提供调度、规划类高级智能体构建能力:
- 监督者智能体:
supervisorBuilder()支持无类型/强类型,用于管理、调度、监控其他子智能体,适配复杂多智能体系统 - 规划者智能体:
plannerBuilder()支持无类型/强类型,具备任务拆解、规划执行能力,适配复杂任务场景
4.4 远程通信智能体API
提供 A2A(Agent to Agent)远程通信客户端构建能力,支持跨服务智能体交互:
a2aBuilder(String serverUrl):创建无类型A2A客户端,绑定远程服务地址a2aBuilder(String serverUrl, Class<T>):创建强类型A2A客户端,绑定自定义智能体服务接口
4.5 声明式智能体系统核心API
本类最核心能力,支持通过注解声明快速构建完整智能体系统,提供多权重重载方法,适配不同自定义需求:
createAgenticSystem(Class<T>):最简方式,自动读取类注解配置与默认模型createAgenticSystem(Class<T>, ChatModel):指定全局对话模型,覆盖默认配置createAgenticSystem(Class<T>, AgentConfigurator):指定智能体全局配置器,实现自定义扩展createAgenticSystem(Class<T>, ChatModel, AgentConfigurator):全参数自定义,支持模型+配置双重定制
5. 核心内部实现逻辑
5.1 声明式智能体构建核心流程
createAgenticSystem 整体执行链路:
- 读取默认模型:通过
declarativeChatModel扫描目标类@ChatModelSupplier注解,获取自定义对话模型 - 构建组合智能体:通过
createComposedAgent扫描类方法注解,匹配工作流/高阶智能体类型(Sequence/Loop/Conditional/Supervisor等) 分支处理:
- 匹配到注解:调用对应
buildXXXAgent方法构建对应类型智能体 - 未匹配到组合智能体:判断是否为A2A远程客户端,构建远程智能体
- 普通智能体:通过基础构建器配置并构建
- 匹配到注解:调用对应
- 异常兜底:构建结果为空时,抛出非法参数异常,提示非有效智能体类
5.2 各类智能体构建逻辑
针对不同注解标记的智能体,提供专属构建逻辑,统一流程规范:
- 通用构建步骤:读取注解配置(名称、描述、输出Key、错误补偿、子智能体列表)→ 配置实例工厂与内存ID → 组装子智能体 → 构建实例
- 条件智能体特殊逻辑:扫描
@ActivationCondition注解,绑定条件断言与对应子智能体,实现条件触发机制 - 并行映射特殊逻辑:绑定集合数据供给器,实现动态批量创建子智能体
- 监督者智能体特殊逻辑:配置最大调用次数、上下文生成策略、响应策略等专属调度参数
5.3 子智能体创建逻辑
createSubagent / createSubagents 负责批量/单个创建子智能体,支持扩展优先级:
- 优先使用
AgentConfigurator自定义子智能体解析器 - 解析器为空时,创建内置智能体执行器
- 无匹配内置类型时,通过基础构建器构建普通智能体
- 统一封装为
AgentExecutor执行器,统一调度入口
5.4 内置智能体执行器创建
createBuiltInAgentExecutor 扫描类所有支持的注解类型,覆盖全场景内置智能体:工作流智能体、A2A远程智能体、MCP客户端智能体、人工介入智能体、注册中心智能体、普通静态方法智能体。
5.5 远程与MCP智能体特殊逻辑
- A2A客户端:支持注解硬编码地址 + 动态方法供给地址两种模式,二者不可同时配置;支持自定义客户端配置器、监听器
- MCP客户端:强制要求
@McpClientSupplier注解提供客户端实例,绑定工具名称、输入输出参数、异步策略
6. 关键扩展点
该类预留丰富的扩展接口,支持业务自定义改造:
- 全局工作流构建器自定义:通过
setWorkflowAgentsBuilder替换默认工作流实现 - 智能体全局配置:通过
AgentConfigurator自定义子智能体解析、实例创建、内存ID生成 - 动态模型供给:通过
@ChatModelSupplier注解动态提供对话模型 - 远程地址动态供给:通过
@A2AServerUrlSupplier动态提供远程服务地址 - 自定义监听器:通过
@AgentListenerSupplier为智能体绑定自定义监听
7. 异常约束与校验规则
- 禁止同时配置A2A地址注解与动态地址供给方法,否则抛出参数异常
- MCP客户端必须配置客户端供给方法,否则抛出异常
- 同一个智能体类中仅允许存在一个
@Agent静态方法,多方法冲突抛异常 - 非有效智能体类调用构建方法,抛出类型不匹配异常
8. 核心设计亮点
- 统一入口:所有智能体构建能力收敛到单一工具类,降低使用与维护成本
- 声明式编程:基于注解实现零配置快速构建复杂智能体工作流,简化开发
- 全场景覆盖:支持基础智能体、工作流、调度规划、远程通信、人机协同全场景
- 高可扩展性:SPI机制+自定义配置器+动态供给方法,多层扩展能力
- 强类型兼容:所有能力支持无类型快速使用 + 强类型工程化使用,适配不同场景
- 统一异常处理:封装底层异常,提供友好的参数校验与异常提示
9. 总结
AgenticServices 是 LangChain4j Agentic 模块的核心门面类,整合了智能体创建、工作流编排、远程通信、声明式构建、自定义扩展的全部核心能力。通过静态工厂模式简化调用,通过注解声明降低开发成本,通过SPI与自定义配置预留扩展空间,是构建标准化、可扩展、复杂化智能体系统的基础核心组件。