ADK、Gemini 和 Javelit = 😍

发布: (2025年12月15日 GMT+8 16:37)
5 min read
原文: Dev.to

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.htmlHTML 显示(不执行 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 结合使用,能够更快地孕育出新项目 🚀。

Back to Blog

相关文章

阅读更多 »