引言
随着人工智能从"部门级工具"向"核心能力"跃迁,组织对自动化系统的要求从简单任务编排升级为高复杂度、高可靠性的生产级智能体协同。传统工作流引擎擅长确定性执行,但缺乏动态适应能力;而纯自主智能体虽灵活,却受困于黑箱决策与不可控性。如何融合两者优势,构建一个既能智能规划又能可靠执行的底座?
本文提出一种 AI模块单元(AI Module Unit, AMU) 机制,将提示词(Prompt)、JSON工作流定义与函数代码(Function)三者封装为自包含、可互操作的模块。更重要的是,我们设计了三向生成闭环------三者可互相生成,并辅以储存与鉴定机制,确保模块可信、可追溯、可进化。这一机制为工作流引擎提供了理想的"细胞单元",使其成为自主智能体与生产级自动化之间的桥梁。
一、模块核心三要素:三位一体,各司其职
一个完整的AI模块单元由三个不可分割的部分构成,它们分别对应功能描述、结构配置与具体实现。
1.1 提示词(Prompt):模块的自然语言灵魂
功能描述:以自然语言说明模块用途、输入输出预期及典型示例,供人类理解和AI检索。
语义索引:通过向量嵌入支持相似度搜索,开发者可用自然语言查找模块。
生成桥接:是代码生成(Prompt→Code)和文档生成(Code→Prompt)的桥梁。
1.2 JSON工作流定义:模块的结构化蓝图
节点模板:包含函数引用(funcName)、输入输出映射(支持占位符)、元数据等,描述模块如何接入工作流。
复合能力:可包含多个子节点,形成嵌套工作流片段(复合模块)。原子模块的JSON定义中funcName指向具体函数;复合模块的funcName可指向一个自动生成的编排函数,或使用引擎内置的复合执行器。
持久化格式:JSON是模块的静态表示,支持版本控制与动态加载。
1.3 函数代码(Code):模块的可执行实体
功能实现:具体业务逻辑或AI调用,注册在引擎的函数注册表中。对于复合模块,函数代码为编排函数,负责按顺序或条件调用子节点。
与JSON绑定:通过funcName与节点关联,同一函数可被多个节点复用。
可生成性:可由提示词生成,也可反向生成提示词。
三者之间的关系可以用一个闭环示意图来概括:提示词(Prompt)位于顶部,分别与下方的JSON定义和函数代码(Function)通过双向箭头连接,同时JSON和Function之间也存在双向箭头。这表示任意一个要素都可以作为起点,生成另外两个,并且彼此之间保持一致性。
二、三向生成机制:闭环进化
给定三者中的任意一个,系统能够自动生成另外两个,并确保一致性。这一机制降低了模块创建门槛,并使模块库能够自我演化。
2.1 Prompt → JSON + Function
场景:开发者用自然语言描述需求。
流程:LLM解析提示词,生成符合引擎规范的函数代码,同时根据函数签名生成JSON模板(含占位符)。生成结果注册为新模块,并关联原始提示词。
示例:提示词"计算两个数的和" → 生成加法函数 + JSON节点定义(funcName指向新函数)。
2.2 JSON → Prompt + Function
场景:导入现有JSON定义,需要补全实现和文档。
流程:解析JSON,根据funcName检查函数是否已注册。若未注册,则:
若JSON为原子节点(无子节点),根据输入输出键生成函数骨架(如抛出未实现异常);
若JSON为复合节点(包含子节点),生成编排函数,负责按定义调用子节点。
同时将JSON结构输入LLM生成自然语言提示词。
示例:JSON节点(funcName未注册) → 生成占位函数 + "解析用户输入"的提示词。
2.3 Function → Prompt + JSON
场景:已有函数,希望封装为工作流节点并生成文档。
流程:通过AST分析函数中使用的数据总线键(或函数参数),生成JSON输入输出映射;结合代码注释和逻辑,调用LLM生成提示词。
示例:已有数据库查询函数 → 生成JSON模板(输入user_id,输出user_info)和对应的自然语言描述。
2.4 一致性保障
占位符抽象:JSON模板使用Param.Input、Param.Output等占位符,与具体数据流解耦,使生成的模块可在不同上下文中复用。
交叉验证:生成后可通过LLM或单元测试验证三者是否描述同一功能,确保闭环一致性。
三、储存机制:模块作为持久化单元
模块需要可靠的存储基础设施,以支持版本管理、高效检索与运行时访问。
3.1 核心数据模型
模块的存储模型包含以下关键字段,用于完整描述模块的元数据、内容及状态:
id:全局唯一标识。
version:语义化版本。
type:模块类型,取值atomic(原子模块)或composite(复合模块)。
prompt:自然语言描述,供人类理解和AI检索。
json_template:JSON节点定义。对于原子模块,它描述单个节点的输入输出映射和函数引用;对于复合模块,它包含多个子节点的编排结构。
function_code:可执行代码或其托管引用。原子模块为具体业务函数;复合模块为编排函数(或由引擎内置执行器处理)。
language:编程语言(如Python、JavaScript等)。
dependencies:依赖模块的ID列表,用于版本锁定,确保工作流确定性。
tags:分类标签,便于组织与检索。
examples:示例输入输出,用于测试和文档。
signature:函数参数和返回值的类型信息。
validation:鉴定结果记录,包括鉴定状态(通过/失败)、评分和问题列表。
created_at:创建时间戳。
updated_at:最后更新时间戳。
author:创建者标识。
3.2 存储层次
主存储:数据库或对象存储,保存模块完整JSON,支持事务与版本控制。
索引存储:
关系索引:按ID、标签、作者等精确查询。
向量索引:为提示词和代码生成嵌入,支持语义搜索。
全文索引:支持关键词检索。
缓存:热点模块缓存在内存(如Redis),加速运行时加载。
3.3 版本控制
不可变版本:每次更新创建新版本,保留历史。
分支与合并:支持模块的分支开发,通过合并请求集成改进。
依赖锁定:工作流可锁定模块版本,保证确定性执行。
四、鉴定机制:模块可信的保障
仅有生成和存储还不够,模块必须经过鉴定才能投入生产。鉴定机制从多维度验证模块质量,确保其可靠、安全、一致。