Unleashing the Power of Large Language Models: A Quick Overview of LLM Integration with Agent and REST API Magic!

Large Language Models in Modern Applications

Large Language Models (LLMs) play a pivotal role in modern business applications by significantly enhancing natural language understanding and generation capabilities. These LLM models enable more sophisticated interactions, allowing applications to comprehend user inputs, generate contextually relevant responses, and automate complex language-related tasks. Integrating LLMs into Java applications empowers developers to create more intelligent, user-friendly systems, fostering a seamless interaction between software and users. It opens avenues for enhanced language processing, enabling innovative solutions and improved user experiences in diverse domains.

This post will show how the Large Language Model can be customized to leverage the custom REST APIs to empower your AI Assistant.

LangChain for Java

LangChain for Java(Langchain4j) is a  Java library designed to facilitate the seamless integration of LLM into Java applications. Langchain4j empowers developers to harness the power of the LLM for natural language understanding by effortlessly integrating LLM with business use cases they deal with a more human touch. It lets you build context-aware reasoning applications with flexible abstractions and an AI-first toolkit. 

If you are new to this topic, you can refer to the following nice articles to quickly get up to speed with the concepts: 

Building a Simple AI-Powered Patient Appointment Scheduling System in Java 

In this short tutorial, we will use Hilla CLI, to set up the project.  Hilla CLI is a nice tool that helps us scaffold the project with SpringBoot and reactive TypeScript frontend. To learn more, refer to the following page: https://hilla.dev/docs/react/start/quick 
Please make sure you have the following tools installed:
In this tutorial, we will build a very simple AI-powered appointment system for use in the healthcare industry
  1. Scaffolding the project with Hilla CLI. (The initial setup is detailed in this dzone post)
    • npx @hilla/cli init ai-assistant  
  2. Open the generated Maven project in the IDE of your choice
  3. Add the dependency to the pom.xml
    •     <dependency>
      <groupId>dev.langchain4j</groupId>
      <artifactId>langchain4j</artifactId>
      <version>${langchain.version}</version>
      </dependency>
      <dependency>
      <groupId>dev.langchain4j</groupId>
      <artifactId>langchain4j-open-ai</artifactId>
      <version>${langchain.version}</version>
      </dependency>
      <dependency>
      <groupId>dev.langchain4j</groupId>
      <artifactId>langchain4j-embeddings-all-minilm-l6-v2</artifactId>
      <version>${langchain.version}</version>
      </dependency>
      </dependencies>
  4. Feel free to adjust the package and structure as you like; don't be shy :) 
  5. Add the AppointmentService to list and modify appointments. It involves the addition of model classes as well, such as Patient and Appointment. 
  6. Add a Langchain Agent to declaratively define complex AI behavior for our system. This involves defining an agent and associated tool :
  7. Expose the AI service for use by the frontend project. 
    • AssistantService: https://github.com/jobinesh/llm/blob/main/ai-assistant/src/main/java/com/jobinesh/ai/example/service/AssistantService.java
  8. When we build the project, the build tool will generate the necessary stubs for the frontend project's target folder to call this service. 
  9. Wire them all together in the Application class.
  10. Make necessary changes in the view to display the chat window, wiring with AssistantService.
  11. Enter your openai.api.key in the https://github.com/jobinesh/llm/blob/main/ai-assistant/src/main/resources/application.properties
  12. Run the application by typing mvn in a terminal or by running the Application from an IDE such as IntelliJ.

Patient Appointment Scheduling System in Action

Here is how the interaction looks like at runtime:















You can play around with this assistant and see how the prompt can be fines tuned for a better user experience

Source Code 

You can download the source code used for this example from the following git repository: https://github.com/jobinesh/llm/tree/main/ai-assistant
Have fun!

Comments