ADK, Gemini & Javelit = 😍

Published: (December 15, 2025 at 03:37 AM EST)
3 min read
Source: Dev.to

Source: Dev.to

Contexte

Alors que les épisodes de notre podcast Zenikast se succèdent, la production de la transcription de chaque épisode reste indispensable (voir article précédent).
Après une première approche concluante avec Vertex AI, nous avons souhaité rendre la transcription accessible à l’ensemble des collaborateurs·trices de Zenika via une interface graphique, sans nécessiter de connaissances en Vertex AI ou Google Cloud Platform.

Intégration de Gemini avec ADK

Choix du langage

Développeur Java depuis mes études, j’ai naturellement opté pour Java afin de créer ce nouveau projet.

Bibliothèque de bas niveau

Pour appeler Gemini, la bibliothèque java-genai de Google répond aux besoins d’appel d’API.

Agent Development Kit (ADK)

Nous avons finalement choisi Agent Development Kit (ADK), un framework Google facilitant la création d’agents.
Initialement en Python, ADK propose aujourd’hui des versions Java (et Go).

Dépendances 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>

Classes principales

ClasseRôle
BaseAgentClasse de base pour tous les agents.
LlmAgentBuilder de l’agent : nom, description, modèle (Gemini ou autre) et instructions.
InMemoryRunnerGestion du cycle de vie et de la mémoire de l’agent.

Exemple de création d’un agent

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();

Exécution et récupération du résultat

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);

Lorsque la réponse est obtenue, le programme se termine ; l’agent est alors fonctionnel 🎉.

Interface graphique avec ADK

La dépendance google-adk-dev fournit une interface web pour tester, utiliser et déboguer les agents.
Attention : cette dépendance ne doit être utilisée qu’en phase de développement.

Lancement du serveur web

mvn exec:java -Dexec.mainClass=com.google.adk.dev.AdkWebServer

L’interface se compose de :

  • Menu de gauche – affichage des événements, logs, état des sessions et outils utilisés par l’agent.
  • Zone centrale – zone de conversation où l’on interagit avec l’agent.

Dans l’exemple suivant, nous envoyons un extrait audio à l’agent pour vérifier la qualité de la transcription.

Documentation complète d’ADK :

Gemini 3 et ses performances

La sortie de Gemini 3 a été remarquée pour ses progrès multimodaux (texte, image, vidéo).
Parmi les modèles disponibles :

  • gemini-3-pro – modèle texte haut de gamme.
  • nano-banana – modèle d’image léger.
  • veo-3 – modèle vidéo.

Après tests sur nos transcriptions, la qualité est nettement supérieure à celle obtenue avec Vertex AI.

Javelit – Créer des interfaces graphiques Java

Javelit (inspiré de Streamlit) permet de créer rapidement des applications web en Java, sans quitter le langage de l’API.

Dépendance Maven

<dependency>
    <groupId>io.javelit</groupId>
    <artifactId>javelit-core</artifactId>

</dependency>

Principaux composants

ComposantDescription
Jt.titleTitre de la page
Jt.textTexte simple
Jt.codeBloc de code avec coloration
Jt.htmlAffichage HTML (sans exécution JavaScript)
Jt.echartsGraphiques basés sur la librairie ECharts
Jt.button, Jt.radio, Jt.textInputÉléments de formulaire

Documentation complète de Javelit :

Déploiement sur Google Cloud Run

L’architecture « mono‑composant » simplifie le déploiement : une seule image Docker contenant à la fois l’agent ADK et l’interface Javelit.
Avec Cloud Run, il suffit de pousser l’image et de la rendre disponible en quelques minutes.

Options de personnalisation du prompt

Des paramètres ont été ajoutés pour :

  • Afficher ou non les horodatages (merci à Théophile).
  • Générer une transcription stricte (verbatim) ou une version plus lisible.

Projet open‑source

Le code complet est disponible sur GitHub :

Agent‑Z‑transcribe‑podcast

Conclusion

Le trio ADK + Gemini + Javelit offre une solution rapide et efficace pour créer des applications de transcription de podcasts :

  • ADK simplifie la création d’agents LLM.
  • Gemini 3 fournit des transcriptions de haute qualité.
  • Javelit permet de bâtir une interface graphique Java sans CSS complexe.

Déployée en mode serverless (Cloud Run), l’application est à la fois esthétique et fonctionnelle.
En combinant cet environnement avec l’IDE « agentique » Antigravity, de nouveaux projets peuvent voir le jour encore plus rapidement 🚀.

Back to Blog

Related posts

Read more »