DriftKit 完全指南:从入门到精通,掌握 Java AI 提示词生命周期管理
一、什么是 DriftKit?
1.1 一句话定义
DriftKit 是一个 Java 原生的 AI 框架 ,其核心定位是"唯一内置完整 Dev → Test → Prod 提示词生命周期管理的 Java AI 框架 "。它不是一个简单的 LLM 调用库,而是一个生产就绪的平台,专门解决将 AI 集成到业务流程中的实际问题:提示词版本控制、A/B 测试、生产监控,以及构建复杂、可管理的 AI Agent。
1.2 它解决什么问题
在 DriftKit 出现之前,Java 团队进行提示词工程面临一个尴尬的局面:
| 痛点 | 现状 | DriftKit 的解法 |
|---|---|---|
| 提示词散落 | 硬编码在代码中,修改需要重新部署 | 集中式提示词存储,支持热更新 |
| 版本混乱 | 手工备份,无法追溯"上周那个效果好的版本" | 内置版本控制,每次修改自动生成新版本 |
| 测试靠感觉 | 上线后凭用户反馈判断效果 | 内置测试集与评估运行,可量化对比 |
| 没有 A/B 测试 | 无法科学比较两个提示词版本 | 原生 A/B 测试支持 |
| 生产不可观测 | 不知道线上实际用了哪个提示词、效果如何 | 全链路追踪(Tracing),每次调用可追溯 |
DriftKit 的设计哲学是:提示词生命周期管理应该是框架的内置能力,而不是委托给外部平台。这意味着 Java 团队不需要为了管理提示词而引入 Python 工具链或额外的 SaaS 服务。
1.3 与其他 Java AI 框架的对比
| 能力 | DriftKit | Spring AI | LangChain4j |
|---|---|---|---|
| 提示词生命周期管理 | ✅ Dev→Test→Prod + Tracing | ❌ | ❌ |
| 可视化提示词 IDE | ✅ 完整 Web 平台 | ❌ 仅代码 | ❌ 仅代码 |
| 生产提示词测试 | ✅ 测试集 + 评估 | ❌ | ❌ |
| 提示词版本控制 | ✅ 内置 | ❌ 手工 | ❌ 手工 |
| A/B 测试 | ✅ 原生 | ❌ | ❌ |
| 多 Agent 模式 | ✅ Loop/Sequential/Hierarchical/Graph | ❌ | ✅ 内置 |
| 音频处理 | ✅ VAD + 转录 | ❌ | ❌ |
| Spring AI 集成 | ✅ 双向集成 | 原生 | ❌ |
DriftKit 填补了 Java AI 生态中"提示词工程化"的空白,这是 Spring AI 和 LangChain4j 都没有覆盖的领域。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
二、环境要求与安装
2.1 环境要求
| 组件 | 要求 | 说明 |
|---|---|---|
| Java | 21+ | 必须使用 Java 21 |
| Maven | 3.8+ | 构建工具 |
| Spring Boot | 3.3.x | 仅 *-spring-boot-starter 模块需要 |
| MongoDB | 必需(Web 平台) | 存储追踪、测试集、评估运行、审计日志和环境 |
| Node.js | ❌ 不需要 | 仅从源码构建时需要(用于 Vue 前端) |
重要说明 :driftkit-common、driftkit-clients-*、driftkit-vector-core 和 driftkit-workflow-engine-* 模块不启动 Spring 上下文,可以在纯 Java 项目中使用。
2.2 Maven 依赖
方式一:纯 Java Agent(无 Spring 上下文)
xml
<!-- 核心 Agent 引擎 -->
<dependency>
<groupId>ai.driftkit</groupId>
<artifactId>driftkit-workflow-engine-agents</artifactId>
<version>0.9.1</version>
</dependency>
<!-- 模型客户端(选择一种) -->
<dependency>
<groupId>ai.driftkit</groupId>
<artifactId>driftkit-clients-openai</artifactId>
<version>0.9.1</version>
</dependency>
<!-- 或 driftkit-clients-gemini / driftkit-clients-claude / driftkit-clients-deepseek -->
方式二:Spring Boot + 提示词工程 UI
xml
<!-- 提示词工程 Spring Boot Starter(含 Web IDE) -->
<dependency>
<groupId>ai.driftkit</groupId>
<artifactId>driftkit-context-engineering-spring-boot-starter</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>ai.driftkit</groupId>
<artifactId>driftkit-clients-openai</artifactId>
<version>0.9.1</version>
</dependency>
所有模块均已发布到 Maven Central,groupId 为 ai.driftkit。
2.3 配置文件
yaml
# application.yml
spring:
data:
mongodb:
uri: mongodb://localhost:27017/driftkit
driftkit:
vault:
- name: openai # 提供商 ID:openai | gemini | claude | deepseek
apiKey: ${OPENAI_API_KEY}
model: gpt-4o # 任何该提供商接受的模型 ID
MongoDB 存储内容:追踪记录(Traces)、测试集(Test Sets)、评估运行(Evaluation Runs)、审计日志(Audit Log)、环境(Environments) 。提示词存储本身可以切换为 in-memory 或 filesystem,但其他数据必须使用 MongoDB。PostgreSQL 尚不支持。
三、快速上手:第一个 Agent
3.1 纯 Java 方式(无 Spring)
java
import ai.driftkit.clients.core.ModelClientFactory;
import ai.driftkit.common.domain.client.ModelClient;
import ai.driftkit.config.EtlConfig.VaultConfig;
import ai.driftkit.workflow.engine.agent.LLMAgent;
public class Main {
public static void main(String[] args) {
// 1. 配置模型客户端
VaultConfig config = new VaultConfig();
config.setName("openai");
config.setApiKey(System.getenv("OPENAI_API_KEY"));
config.setModel("gpt-4o");
ModelClient<?> client = ModelClientFactory.fromConfig(config);
// 2. 构建 Agent
LLMAgent agent = LLMAgent.builder()
.modelClient(client)
.systemMessage("You are a helpful assistant")
.build();
// 3. 执行
String response = agent.executeText("Say hello in one sentence").getText();
System.out.println(response);
}
}
这段代码展示了 DriftKit 最基础的使用方式------无需 Spring 上下文,纯 Java 即可运行 。LLMAgent 是 DriftKit 提供的高级 Agent 抽象,封装了与 LLM 的交互细节。
3.2 Spring Boot 方式(含 Web IDE)
启动 Spring Boot 应用后,访问 Web 界面即可使用可视化提示词 IDE。这个 IDE 提供了完整的提示词生命周期管理功能,包括:
- 提示词的创建、编辑、版本管理
- 测试集的维护与运行
- A/B 测试的配置与结果查看
- 生产环境追踪的监控面板
四、核心能力详解
4.1 提示词生命周期管理(Dev → Test → Prod)
DriftKit 的核心差异化能力是将提示词的完整生命周期纳入框架管理:
Dev(开发) Test(测试) Prod(生产)
│ │ │
├─ 创建提示词 ├─ 运行测试集 ├─ 生产追踪
├─ 版本迭代 ├─ 评估运行 ├─ A/B 测试
└─ 提交到仓库 └─ 对比结果 └─ 监控面板
版本控制:每次修改提示词自动生成新版本,支持回滚和对比。这解决了"上周那个效果好的版本找不到了"的经典问题。
测试集与评估:为每个提示词维护测试用例,变更时自动运行回归测试,确保修改不会引入退化。
生产追踪:记录每次提示词调用的完整链路------用了哪个版本、输入输出是什么、耗时多少、是否成功。这为问题排查和效果分析提供了数据基础。
4.2 多 Agent 编排
DriftKit 支持多种 Agent 编排模式:
| 模式 | 说明 | 适用场景 |
|---|---|---|
| Loop | 循环执行直到满足条件 | 迭代优化、多轮对话 |
| Sequential | 顺序执行多个 Agent | 流水线处理 |
| Hierarchical | 分层执行,上级 Agent 调用下级 | 复杂任务分解 |
| Graph | 图结构编排,支持跨图调用 | 复杂工作流 |
这些模式覆盖了从简单到复杂的各类 Agent 协作场景。
4.3 工具调用(Tool Calling)
DriftKit 的工具调用是类型安全的,支持三种方式:
- Function Calling:标准的函数调用
- Tools:工具定义与执行
- Agent as Tool:将一个 Agent 作为另一个 Agent 的工具
自动或手动执行模式均可配置,为不同场景提供灵活性。
4.4 内置音频处理
DriftKit 是少数内置VAD(语音活动检测)+ 转录能力的 Java AI 框架。这意味着你可以直接构建语音交互应用,而无需额外引入音频处理库。
4.5 Spring AI 双向集成
DriftKit 与 Spring AI 提供了完整的双向集成------既可以在 DriftKit 中使用 Spring AI 的模型客户端和向量存储,也可以在 Spring AI 应用中使用 DriftKit 的提示词管理能力。这种集成让已有的 Spring AI 项目可以平滑引入 DriftKit 的提示词工程能力,而无需重写现有代码。
五、实战示例:构建客服 Agent
5.1 场景描述
构建一个电商客服 Agent,需要:
- 理解用户问题
- 调用工具查询订单
- 根据订单状态生成回复
- 所有提示词可版本管理、可测试
5.2 实现代码
java
@Service
public class CustomerServiceAgent {
private final LLMAgent agent;
private final OrderTool orderTool;
public CustomerServiceAgent(ModelClient<?> client, OrderTool orderTool) {
this.agent = LLMAgent.builder()
.modelClient(client)
.systemMessage("""
你是电商客服助手。请根据用户问题调用相应工具,
并以友好、专业的方式回复。
""")
.tools(orderTool) // 注册工具
.build();
this.orderTool = orderTool;
}
public String handleQuery(String userQuery) {
return agent.executeText(userQuery).getText();
}
}
5.3 提示词版本管理
在 DriftKit 的 Web IDE 中,你可以:
- 创建提示词:定义 system message 和用户消息模板
- 版本迭代:修改后自动生成 v1.1、v1.2...
- 运行测试集:为每个版本运行相同的测试用例
- 对比结果:查看哪个版本的通过率更高、响应更好
- 部署到生产:选择最佳版本上线,并启用 A/B 测试
5.4 生产追踪
部署后,每次 Agent 调用都会被追踪:
| 追踪字段 | 说明 |
|---|---|
promptVersion |
使用的提示词版本 |
input |
用户输入 |
output |
Agent 输出 |
latency |
耗时 |
toolCalls |
调用的工具及参数 |
success |
是否成功 |
这些数据在 Web IDE 的监控面板中可视化展示,帮助团队快速定位问题。
六、应用场景
DriftKit 官方定位是企业级解决方案,适合以下场景:
| 场景 | 说明 |
|---|---|
| 客服自动化 | 多轮对话 Agent,工具调用查询订单/物流 |
| 金融文档处理 | 结构化提取、合规审查 |
| 推荐引擎 | 个性化推荐 Agent |
| HR 自动化 | 简历筛选、面试问答 |
| 语音交互应用 | 内置 VAD + 转录,适合语音客服 |
| 复杂工作流 | 多 Agent 协作的端到端流程 |
DriftKit 的 driftkit-workflows-examples 模块提供了详细的示例和架构模式,可以作为企业落地的参考。
七、与 Promptfoo 的定位对比
| 维度 | DriftKit | Promptfoo |
|---|---|---|
| 语言 | Java | Node.js/TypeScript |
| 核心定位 | Java AI 框架(含提示词管理) | LLM 测试与评估工具 |
| 提示词管理 | ✅ 内置完整生命周期 | ❌ 仅测试 |
| 多 Agent 编排 | ✅ 内置 | ❌ |
| 红队测试 | ❌ | ✅ 50+ 漏洞类型 |
| CI/CD 集成 | 需自行实现 | ✅ 官方 GitHub Action |
| 适用团队 | Java 后端团队 | 全栈/DevOps 团队 |
结论 :DriftKit 适合 Java 团队构建包含提示词管理的完整 AI 应用 ;Promptfoo 适合 任何团队进行独立的提示词测试和红队扫描。两者可以互补------用 DriftKit 管理提示词生命周期,用 Promptfoo 在 CI 中做回归测试和安全扫描。
八、常见问题
Q:DriftKit 需要 Node.js 吗?
A:不需要。只有从源码构建仓库时才需要 Node.js(用于 Vue 前端)。消费已发布的 Maven 构件完全不需要 Node.js。
Q:必须使用 MongoDB 吗?
A:Web 平台(driftkit-context-engineering-spring-boot-starter)必须使用 MongoDB。但纯 Java Agent 模式不需要 MongoDB。
Q:DriftKit 可以和 Spring AI 一起用吗?
A:可以,而且推荐。DriftKit 提供了与 Spring AI 的双向集成------你可以在 DriftKit 中使用 Spring AI 的模型客户端,也可以在 Spring AI 项目中引入 DriftKit 的提示词管理。
Q:DriftKit 的生产就绪程度如何?
A:当前版本 0.9.1(2026 年 9 月发布),采用 Apache 2.0 许可,可自由用于商业产品。GitHub 上有 49 个 Star,项目处于活跃开发中。
九、总结
| 维度 | 内容 |
|---|---|
| 定位 | Java 原生 AI 框架,内置提示词生命周期管理 |
| 核心能力 | Dev→Test→Prod 提示词管理 + 多 Agent 编排 + 音频处理 |
| 环境要求 | Java 21 + Maven 3.8+ + MongoDB(Web 平台) |
| 安装方式 | Maven 依赖,ai.driftkit groupId |
| 入门门槛 | 低------纯 Java 模式无需 Spring,几行代码即可运行 |
| 适用场景 | 企业级 AI 应用,尤其是需要提示词工程化的 Java 团队 |
| 许可 | Apache 2.0,可自由商用 |
核心价值 :DriftKit 填补了 Java AI 生态中"提示词工程化"的空白。它将提示词的版本控制、测试、A/B 测试和生产监控作为框架的内置能力,而不是需要额外搭建的外部系统。对于已经在使用 Spring AI 或 LangChain4j 的 Java 团队,DriftKit 提供了一种渐进式的增强路径------无需重写现有代码,即可获得完整的提示词生命周期管理能力。