Guillaume Laforge

Guillaume Laforge

@glaforge.dev

🥑 Developer Advocate for Google Cloud ☁️ 🧠 Focusing on Generative AI 🤖 ⭐ Co-founder of the 🪶 Apache Groovy programming language ☕ Java Champion 🏆 📣 Co-host of Les Cast Codeurs Podcast 🐘 @glaforge@uwyn.net on #Mastodon

2.7K followers973 following780 posts

Pinned

My comprehensive guide on building #AI #agents in #Java with the #ADK framework! 🤖☕ I've bundled everything you need to get started: my full article, the video recording at @devoxx.com, a codelab, the slides, an updated template project, and code samples, all in one place.

Guillaume Laforge reposted

J'adore TADx. J'adore me creuser les méninges pour identifier les prochains sujets, prendre du temps pour l'organisation avec @wilda.bsky.social , recevoir des speakers talentueux, vous croiser après la conférence et refaire le monde... Mais... Stop ou encore ?

TADx@tadx.bsky.social

En ce moment les meetups et les conférences tech en France ont du mal. #TADx n'y échappe pas et si vous voulez comprendre notre démarche et nos interrogations on vous laisse lire ce blog post : www.tadx.fr/2026-10-09-w... N'hésitez pas à nous faire vos retours 🤗.

Guillaume Laforge reposted

We launched a new home for Gemma developer docs at https://gemma.ai 📚💎 Includes a global model selector that adapts code snippets across sizes, one-click Markdown export on every page for local coding agents, and live on-device WebGPU demos in the browser.

Guillaume Laforge reposted

This Week in Open Source #19 is live! 🌐✨ 🐚 A2A + MCP from Toronto to your terminal (A2A CLI & a2term) 🧲 Local multimodal search w/ EmbeddingGemma 2 (567MB RAM) 🧩 Live AT Protocol 3D Web Tiles 🐧 35 years of Linux & 2026 State of OSPOs w/ @linuxfoundation.org: goo.gle/twios-19

You can explore the themes of the release, with live examples running via #GoogleCloud functions & #CloudRun, in the Groovy Web Console. And you can edit the snippets to see the features in action.

It was a pleasure to talk at the #DevWithAI conference in Paris, organized by Greg Lhotellier. I spoke about #antigravity to 500 developers, and had very interesting discussions on the impact of #AI on our developer journey. Here are the slides I presented: glaforge.dev/talks/2026/1...

glaforge.devGetting Started with Google AntigravityEarlier this week, I spoke at the first edition of the Dev With AI conference in Paris, held at the Forum des Images. The event brought together around 500 developers to exchange notes on practical AI...

A feature I really love in #antigravity is the /𝗴𝗲𝗻𝗲𝗿𝗮𝘁𝗶𝘃𝗲_𝘂𝗶 slash command which allows me to create some interactive & live widgets in the chat. Like in this example where I display the progress of my running @langchain4j.dev integration tests:

Guillaume Laforge reposted

Le saviez-vous? Lorsque, par le passé, l'astrophysicien Hubert Reeves disait que "nous sommes des poussières d'étoiles", il avait parfaitement raison. A part l'hydrogène, tous les autres éléments qui composent votre corps ont été créés lors de différents évènements astrophysiques liés aux étoiles.

Guillaume Laforge reposted

Google just launched a new website that enables you to verify whether an image, video or audio clip was generated using AI tools that support its SynthID watermark. This includes content from Google, OpenAI, NVIDIA and Kakao, with Apple coming soon.

synthid.comSynthID Detector

I might give this new #java code formatter a try!

Java formatters: can't live with them, can't live without them. New post on Foojay by Alex Abashev about the tricky balance between automated formatting and personal coding style. foojay.io/today/my-lov... #Java #CodeFormatting #DevLife

Planning your #Devoxx Belgium schedule? With 200+ talks across 8 parallel tracks, picking sessions takes time. I built a personalized agenda generator using #Micronaut, #LangChain4j, and #Gemini 3.5 Flash-Lite on #Java 25 virtual threads! Here is how it works 🧵👇

Instead of one monolithic prompt (30-40s), LangChain4j runs 5 parallel day agents on Java 25 virtual threads via `ParallelMapperAgent`. Run time dropped to ~5s, costing ~1¢. A guardrail agent catches injections early, and deterministic Java code eliminates room collisions.

Is it a 😺 or not? System 1 models like @typesafeai #jev classify, evaluate truthiness, or give a score. I built an app in #java w/ @micronautfw & @langchain4j hosted on #CloudRun to discover if a picture depicts a cat or not, thanks to #DiffusionGemma purrfect-match.cloud.run/

Once you've picked up a picture or uploaded your own, the #DiffusionGemma model running on #NVidia GPUs will tell you if the photo contains a cat, what kind of fur pattern it has, and how fluffy it is:

Guillaume Laforge reposted

Le saviez-vous ? 99,95% de votre masse est contenue dans le noyau des atomes qui composent votre corps. Mais 99% de la masse de ces noyaux est... de l'énergie (les quarks ne comptent que pour 1%). Conclusion, la masse totale de votre corps est à 98,95%... de l'énergie (et 1,05% de particules).

Instead of generating text token by token, "System 1" decision models (like Jev) act as fast, deterministic decision engines. In a single forward pass, they output calibrated probabilities. Here's how I turned DiffusionGemma into a multimodal visual classifier in Java! 🧵👇

View full thread

Bringing it to #Java with @LangChain4j.dev: LangChain4j was adding StructuredDecisionModel for text. I proposed & implemented native multimodal support. In Java, pass ImageContent with typed Question models (Choice, Noul, Score) for clean, zero-shot visual classification!

Instead of generating text token by token, "System 1" decision models (like Jev) act as fast, deterministic decision engines. In a single forward pass, they output calibrated probabilities. Here's how I turned DiffusionGemma into a multimodal visual classifier in Java! 🧵👇

What about images? DiffusionGemma includes a SigLIP vision tower. I turned vision back on in Cloud Run and sent a photo of my cat: 😺 Is it a cat? (99.99%) 👁️ Eye color: Blue (99.99%) ☁️ Fluffiness: Extra fluffy All three questions evaluated concurrently in just 129 ms! 🕑

Text-to-speech has reached a whole new level of quality and personalization. With Google's Gemini 3.8 Flash TTS, you can design custom voices from text prompts, steer delivery nuances (whispers, pacing, emotion), and clone voices. And you can do it all in #Java! 🧵👇

View full thread

Designing a custom voice in Java takes just a few lines: Voice voice = client.createVoice(Voice.prompted( "A calm, deep French voice, speaking slowly", "French Philosopher", "Gemini 3.8 Flash TTS" )); Pass voice.id() to VoiceConfig. Done.

Text-to-speech has reached a whole new level of quality and personalization. With Google's Gemini 3.8 Flash TTS, you can design custom voices from text prompts, steer delivery nuances (whispers, pacing, emotion), and clone voices. And you can do it all in #Java! 🧵👇

I just released v2.0.2 of my Gemini Interactions Java SDK to support these new TTS capabilities: • Voice.prompted(...) for prompt-based voice design • Voice.replicated(...) for voice cloning • Content.speech(text, style) for emotional steering • Direct audio preview access

The #antigravity team announced running local Gemma models on-device with LiteRT. Good news for #Java developers: you can do this in Java too! Antigravity Java SDK v0.2.17 is out, reaching full parity with Python SDK v0.1.18. Walkthrough 🧵👇 glaforge.dev/posts/2026/... x.com/antigravity...

x.comGoogle Antigravity (@antigravity) on XRun open models like Gemma 4 completely offline in the Antigravity SDK. Built on Google AI Edge’s LiteRT, you can now run Gemma 4 directly on your local GPU. Zero API costs, total data privacy, a…
View full thread

Antigravity Java SDK v0.2.17 also brings: • Subagents with dedicated model targeting (route subtasks to smaller models) • Task scheduling tools (schedule & manage_task) • Tool argument rewriting via hooks • Synchronized native harness across macOS, Linux & Windows

The #antigravity team announced running local Gemma models on-device with LiteRT. Good news for #Java developers: you can do this in Java too! Antigravity Java SDK v0.2.17 is out, reaching full parity with Python SDK v0.1.18. Walkthrough 🧵👇 glaforge.dev/posts/2026/... x.com/antigravity...

x.comGoogle Antigravity (@antigravity) on XRun open models like Gemma 4 completely offline in the Antigravity SDK. Built on Google AI Edge’s LiteRT, you can now run Gemma 4 directly on your local GPU. Zero API costs, total data privacy, a…
View full thread

Step 1: LiteRT-LM setup Install the on-device runtime: pip install litert-lm Download a Gemma model: litert-lm import --model-id litert-community/gemma-4-E2B-it-litert-lm --output-dir ~/.litert-lm/models/gemma4-e2b/ Serve locally: litert-lm serve --port 9379

Step 2: Connect from Java Configure your agent with LiteRTAgentConfig pointing to your local model path and port 9379. The SDK manages the harness lifecycle and connects to LiteRT-LM's local endpoint. Call agent.chat() as usual, but completely on-device!

The #antigravity team announced running local Gemma models on-device with LiteRT. Good news for #Java developers: you can do this in Java too! Antigravity Java SDK v0.2.17 is out, reaching full parity with Python SDK v0.1.18. Walkthrough 🧵👇 glaforge.dev/posts/2026/... x.com/antigravity...

x.comGoogle Antigravity (@antigravity) on XRun open models like Gemma 4 completely offline in the Antigravity SDK. Built on Google AI Edge’s LiteRT, you can now run Gemma 4 directly on your local GPU. Zero API costs, total data privacy, a…

Why run local models for agents? • Zero API costs: run repetitive tasks and test assertions without racking up tokens • Data privacy: proprietary code and docs stay on your machine • Offline capable: build and test without internet • Low latency: no roundtrips over the wire

Guillaume Laforge reposted

Guillaume Laforge reposted

The new Gemini 3.8 TTS models are super-cheap and can generate conversations between multiple voices (from 2,000+, or you can clone your own) - I built a little playground UI for it, then had Claude knock up a script where two pelicans debate moving to Pacifica Pier simonwillison.net/2026/Sep/23/...

View full thread

5️⃣ GitHub PR Review Agent (Main Demo) Combines custom GitHub tools, review rubrics via Agent Skills, subagents, and lifecycle hooks to compare two competing PRs in LangChain4j, stream thoughts live, and produce an objective review report.

View full thread

3️⃣ Deny-by-default Security Policies Autonomous agents shouldn't have unrestricted privileges. Configure guardrails with Policies.denyIf(...) to intercept and block destructive operations before execution, allow safe read tools, and fall back to denyAll().

View full thread

1️⃣ Local Java Tools & Structured Output Annotate Java methods with @Tool and @Param to let the agent call your code. With .finishToolSchema(Record.class), the SDK derives the JSON Schema and deserializes the response directly into your Java record. Zero manual parsing.

2️⃣ Real-time Streaming & Thinking Modern Gemini models think before answering. With chatStream(), you stream tokens as they arrive while separating the model's internal chain-of-thought (thoughtsDelta) from the final response text (textDelta). Great for transparent UIs.