PabloSanchi / IBM-WatsonxAI-Spring-AI-Example

Example of IBM watsonx.ai with Spring AI

Home Page:https://docs.spring.io/spring-ai/reference/1.0-SNAPSHOT/api/chat/watsonx-ai-chat.html

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Watsonx AI Integration

Overview

This project demonstrates how to integrate IBM's Watsonx AI models into a Spring Boot application. The application provides endpoints for generating chat responses and text embeddings using the Watsonx AI chat and embedding models. As a contributor to the Spring AI module, I have implemented these integrations to enable seamless interactions with Watsonx AI.

Features

  • Chat API: Get responses from the Watsonx AI chat model based on input text.
  • Streaming Chat API: Stream responses from the Watsonx AI chat model in real-time.
  • Embedding API: Get text embeddings using the Watsonx AI embedding model.

Notes

Getting Started

  1. Clone the Repository
git clone https://github.com/PabloSanchi/IBM-WatsonxAI-Spring-AI-Example
  1. Change Directory
cd IBM-WatsonxAI-Spring-AI-Example
  1. Configure Watsonx AI: Ensure you have your Watsonx AI credentials set up in your application properties or environment variables.

    Example shcema:
spring:
  ai:
    watsonx:
      ai:
        base-url: ${WATSONX_BASE_URL}
        stream-endpoint: ${WATSONX_STREAM_ENDPOINT}
        text-endpoint: ${WATSONX_TEXT_ENDPOINT}
        embedding-endpoint: ${WATSONX_EMBEDDING_ENDPOINT}
        project-id: ${WATSONX_PROJECT_ID}
        iam-token: ${WATSONX_IAM_TOKEN}

        chat:
          options:
            model: ${WATSONX_CHAT_MODEL}

        embedding:
          options:
            model: ${WATSONX_EMBEDDING_MODEL}

springdoc:
  swagger-ui:
    path: /swagger.html
  1. Run the APP
  2. Go to the Swagger UI: test the endpoints http://localhost:8080/swagger-ui/index.html

Build

To build the project, run the following command:

./mvnw clean install

To run the project linter and formatter, run the following command:

./mvnw spring-javaformat:apply 

Incoming updates to spring ai watsonxai integration:

  • Retry template instead of fixed retry policy
  • Add new watsonx ai options (HAP)
  • [NOT FINAL] Add Instana observability, see this gh issue