❯ Guillaume Laforge

Generative-Ai

Building my Comic Trip agent with ADK Java 1.0

I’m happy to echo here the release of ADK for Java v1.0, Google’s Agent Development Kit framework to build AI agents in Java. I spent a lot of time on this project. I also wrote the announcement blog post on the Google for Developers blog. And I’ve recorded this YouTube video highlighting some of the new features of the framework, in which I’m demonstrating some of them via an app I built: my Comic Trip agent (pun intended).

Read more...

Generating music with Lyria 3 and the Gemini Interactions Java SDK

Generative AI isn’t just about text or images (with Nano Banana) but it’s also great at generating videos (with Veo 3). And now with the recently released Lyria 3 model from DeepMind, you can create some engaging and creative music with lyrics (generated, or your own) or invent a calming instrumental track to loop in the background of your online TikTok or YouTube Shorts.

And of course, if you’re a Java developer like me, you can do all that in Java!

Read more...

Extracting JSON from LLM chatter with JsonSpotter

LLMs are great at generating structured data, in particularly those which support a strict JSON output mode (sometimes also called structured decoding), but sometimes they give you a bit more than the requested JSON. You get a Markdown code block wrapped in “Here’s the data you asked for:” and “Hope this helps!”. If you’re lucky, the JSON is valid. If you’re not, it has trailing commas or comments that break standard parsers.

Read more...

Fixing AI Slop with a Skill in Gemini CLI

We all recognize AI writing when we see it. As language models get used for everything, their specific tics are everywhere. People call this “AI slop”. The grammar is fine, but the text is boring, repetitive, and lacks any real voice.

A site called tropes.fyi tracks these patterns. It lists the exact words and structures that give AI away. You’ll see callouts for overused adverbs like “deeply” and “arguably,” the dreaded “delve” family, and structural crutches like “It’s not X, it’s Y.”

Read more...

Zero Boilerplate Java STDIO MCP Servers with LangChain4j and JBang

By now, you’re certainly all familiar with the Model Context Protocol (MCP)? It’s the standard for connecting Large Language Models (LLMs) to tools and data. But if you look at the current ecosystem, you’ll see a lot of Python and TypeScript…

As a Java developer, you might be wondering: How can I easily and quickly run my own MCP servers?

On this blog, I’ve explained how to develop MCP servers with Quarkus and Micronaut. But thanks to a recent community contribution to LangChain4j, and the simplicity of JBang, building a local MCP server in Java is even easier and with zero boilerplate.

Read more...

Advanced RAG — Understanding Reciprocal Rank Fusion in Hybrid Search

Today, let’s come back to one of my favorite generative AI topics: Retrieval Augmented Generation, or RAG for short.

In RAG, the quality of your generation (when an LLM crafts its answer based on search results) is only as good as your retrieval (the actually retrieved search results).

While vector search (semantic) and keyword search (BM25) each have their strengths, combining them often yields the best results. That’s what we often call Hybrid Search: combining two search techniques or the results of different searches with slight variations.

Read more...

Latest Gemini and Nano Banana Enhancements in LangChain4j

A few days ago, LangChain4j 1.11.0 was released, and with this version, a few notable enhancements to the support of the Gemini model family have landed. Let’s dive in!

New Image Generation Models (Gemini 2.5 & 3.0 Preview, aka 🍌 Nano Banana)

Note

Before showing some snippets of code, let me give you the link to the full documentation on the new image model: docs.langchain4j.dev/integrations/image-models/gemini

Read more...

Researching Topics in the Age of AI — Rock-Solid Webhooks Case Study

Back in 2019, I spent significant time researching Webhooks. In particular, I was interested in best practices, pitfalls, design patterns, and approaches for implementing Webhooks in a reliable, resilient, and effective way.

Everything is distilled in that article: Implementing Webhooks, not as trivial as it may seem

It likely took me a full week to dive deep into this subject, finding sources and experimenting with design patterns myself. But nowadays, AI makes it easier to dive deeper into topics, explore unfamiliar aspects, and share findings with your team.

Read more...

A Javelit Frontend for the Deep Research Agent

A month ago, I wrote about building a research assistant in Java, using the Gemini Interactions API, and the Deep Research agent. Today I wanted to revisit this project, but with the goal to make it more user-friendly, with a Javelit based frontend.

The Research Pipeline: From Query to Infographic

  • First, the user enters the subject of the research.
  • A button action triggers the research of possible topics about that subject (ie. the different possible facets or angles of the subject), using Gemini 3 Flash with Google Search activated.
  • The user selects the facets they’re interested in, to restrict the research to only those aspects.
  • Then the Deep Research agent kicks in, via the Gemini Interactions API, and spends a few minutes researching the topic.
  • Once the final report is ready, Gemini 3 Pro creates a solid summary.
  • The summary is used to generate a sketchnote with Nano Banana Pro.

A Look at the User Interface

Let’s say, as a user, I want to research information about the OpenClaw / MoltBot / ClawdBot personal AI assistant (unless it has again changed its name? 😃)

Read more...

Executable Markdown Files with gcli-mdrun & Gemini CLI

Have you ever wanted to turn your cool LLM prompts & tools, research notes, automation ideas, or even a simple “todo” list into an executable script? Inspired by a HackerNews post about executable Markdown, I’m happy to share gcli-mdrun, a smart little script that allows you to transform standard Markdown files into executable scripts powered by Gemini CLI.

This project allows you to create AI-driven automation, pipelines, and autonomous bots using mere Markdown text files. You can find the project on GitHub at https://github.com/glaforge/gcli-mdrun.

Read more...