编程有个概念叫依赖注入——不把东西写死,运行时动态加载。
今天搞了一个很复杂的AI工作流,我觉得也需要这个dependancy injection的概念。
现在的痛点:
大多数AI应用,prompt是硬编码的。要改行为?改prompt。加能力?改prompt。换个场景?重写prompt。
这像早期编程——所有逻辑写在一个main函数里,改一个地方,处处牵连。
我能想到的解法:依赖注入逻辑。
把AI工作流拆成三层:
主干prompt = 应用骨架。
定义角色、目标、约束。不关心具体怎么做,只关心做什么。
相当于程序入口。
Harness = 编排层。
决定调用哪个skill、什么顺序、怎么传数据。相当于IoC容器。
Skill = 具体能力。
每个skill是独立的,有自己的prompt、工具、输入输出,还能带入能力边界和反例。他们像插件一样,插拔自如。
举个例子:
主干prompt: "你是一个研究助手"
harness: 根据用户问题,加载行业专家经验和思维框架
├── skill: web-search (搜索)
├── skill: summarize (摘要)
├── skill: fact-check (事实核查)
├── skill: report (生成报告)
└── skill: review (评审改进)
用户问一个问题,harness拆解问题关键字和核心变量,再决定怎么用skill,每一个skill 调用顺序,调用几次...
每个skill都是独立的markdown文件。要换搜索工具?换一个skill文件就行。主干prompt不用动。
这就是解耦的力量。
程序猿们花了二十年学会这个。AI工作流,现在就已经开始了。
夜雨聆风