ADK、Gemini 和 Javelit = 😍
Source: Dev.to
背景
随着我们的 Zenikast 播客一集接一集地发布,每集的文字转录仍然是必不可少的(参见前一篇文章)。
在使用 Vertex AI 进行的首次尝试取得成功后,我们希望通过图形界面让 Zenika 所有同事都能使用转录功能,而无需了解 Vertex AI 或 Google Cloud Platform 的细节。
将 Gemini 与 ADK 集成
语言选择
自学期间就一直使用 Java 开发,我自然选择 Java 来创建这个新项目。
底层库
调用 Gemini 时,Google 的 java-genai 库能够满足 API 调用需求。
Agent Development Kit (ADK)
我们最终选用了 Agent Development Kit (ADK),这是 Google 用来简化代理创建的框架。
最初只有 Python 版,现已提供 Java(以及 Go)版本。
Maven 依赖
<!-- ADK core -->
<dependency>
<groupId>com.google.adk</groupId>
<artifactId>google-adk</artifactId>
…
</dependency>
<!-- ADK development utilities (runtime) -->
<dependency>
<groupId>com.google.adk</groupId>
<artifactId>google-adk-dev</artifactId>
…
<scope>runtime</scope>
</dependency>
主要类
| 类名 | 作用 |
|---|---|
BaseAgent | 所有代理的基类。 |
LlmAgent | 构建代理:名称、描述、模型(Gemini 或其他)以及指令。 |
InMemoryRunner | 管理代理的生命周期和内存。 |
创建代理的示例
LlmAgent agent = LlmAgent.builder()
.name("Transcriber")
.description("Transcrit les podcasts avec Gemini")
.model("gemini-1.5-pro") // le modèle est configurable
.instruction("Transcris le texte de façon lisible.")
.build();
InMemoryRunner runner = new InMemoryRunner(agent);
Session session = runner.startSession();
执行并获取结果
runner.run(session, "Voici le texte à transcrire.");
List events = session.getEvents(); // les réponses sont dans les events
String transcription = events.stream()
.filter(e -> e instanceof TextResponseEvent)
.map(e -> ((TextResponseEvent) e).getText())
.findFirst()
.orElse("Aucune réponse");
System.out.println(transcription);
当得到响应后,程序结束;此时代理已经可以正常工作 🎉。
使用 ADK 的图形界面
google-adk-dev 依赖提供了一个 Web 界面,用于测试、使用和调试代理。
注意:该依赖仅应在开发阶段使用。
启动 Web 服务器
mvn exec:java -Dexec.mainClass=com.google.adk.dev.AdkWebServer
界面由以下部分组成:
- 左侧菜单 – 显示事件、日志、会话状态以及代理使用的工具。
- 中间区域 – 对话区,可与代理交互。
下面的示例向代理发送音频片段,以验证转录质量。
ADK 完整文档 :
Gemini 3 与其性能
Gemini 3 的发布因其多模态(文本、图像、视频)进步而受到关注。
可用模型包括:
gemini-3-pro– 高端文本模型。nano-banana– 轻量级图像模型。veo-3– 视频模型。
在我们的转录测试中,质量明显优于使用 Vertex AI 时的效果。
Javelit – 创建 Java 图形界面
Javelit(受 Streamlit 启发)能够快速构建 Java Web 应用,无需离开 API 所在语言。
Maven 依赖
<dependency>
<groupId>io.javelit</groupId>
<artifactId>javelit-core</artifactId>
…
</dependency>
主要组件
| 组件 | 描述 |
|---|---|
Jt.title | 页面标题 |
Jt.text | 简单文本 |
Jt.code | 带语法高亮的代码块 |
Jt.html | HTML 显示(不执行 JavaScript) |
Jt.echarts | 基于 ECharts 的图表 |
Jt.button, Jt.radio, Jt.textInput | 表单元素 |
Javelit 完整文档 :
部署到 Google Cloud Run
“单组件”架构简化了部署:只需一个包含 ADK 代理和 Javelit 界面的 Docker 镜像。
使用 Cloud Run,只需推送镜像并在几分钟内即可上线。
Prompt 的自定义选项
我们新增了以下参数:
- 是否显示时间戳(感谢 Théophile)。
- 生成严格的逐字转录或更易阅读的版本。
开源项目
完整代码已在 GitHub 上公开:
Agent‑Z‑transcribe‑podcast
结论
ADK + Gemini + Javelit 组合为创建播客转录应用提供了快速且高效的解决方案:
- ADK 简化了 LLM 代理的创建。
- Gemini 3 提供高质量的转录。
- Javelit 让 Java 开发者无需编写复杂 CSS 即可构建图形界面。
在无服务器(Cloud Run)模式下部署,应用既美观又实用。
将此环境与 “agentic” IDE Antigravity 结合使用,能够更快地孕育出新项目 🚀。