My latest video is called The Magic of AI Services with LangChain4J:
The LangChain4J project lets you define Java interfaces that get implemented automatically by the framework. It’s about the easiest way I’ve ever seen to interact with AI tools.
The logo in the thumbnail comes from the LangChain4J project. It’s a parrot sitting on a saucer under a coffee cup:

Presumably that’s a stochastic parrot. 🙂
Here is a summary of the video in five bullet points, using the YouTube Summary plugin from Glasp, which works with ChatGPT (emphasis added):
- LangChain4J Simplifies AI Integration: LangChain4J offers a straightforward way for Java developers to integrate AI services by finding a Java interface, thus abstracting the complexity of accessing AI tools like OpenAI as RESTful web services.
- Java Ecosystem Embraces Python’s LangChain: LangChain4J is the Java adaptation of the popular Python-based LangChain project, designed to support Java 8 and above. The framework supports Java 8, but the video uses their with examples in Java 17, enabling modern Java features such as text blocks, records, and collection factory methods.
- Declarative AI Behavior with Interfaces: Developers can define complex AI behaviors declaratively by specifying methods in an interface, where the implementation is automatically handled by LangChain4J, showcased in the author’s modified example project and Gradle build file.
- Prompt Templates and AI Services: LangChain4J introduces prompt templates for dynamically creating AI queries with template variables and AI services that allow for defining custom APIs through interfaces, which the library implements, simplifying interaction with AI models.
- Examples Show Powerful Features: The video walks through examples such as a Hello World program, creating a recipe from given ingredients, making a translator service, sentiment analysis, and a DateTimeExtractor, demonstrating the library’s capacity to easily generate complex AI-driven outputs.
As I mentioned in yesterday’s (Nov 5, 2023) Tales from the jar side newsletter, my favorite example uses a Java record:

along with an “extractor” inteface:

All you have to do is create the service and call the method:

Hard to be much simpler than that. 🙂
This example (in its Java 8 variation), along with others discussed in the video, come from the langchain4j-examples project on GitHub. I ported them to Java 17 so I could use records, text blocks, and so on.
I hope you enjoy the video. I plan to make more videos related to the LangChain4J project, so please subscribe if you want to learn how to use it effectively.
Leave a Reply