Gemini workshop for Java developers, using the Spring AI orchestration framework
Note
This is the code for Gemini in Java with Vertex AI and Spring AI codelab geared towards Java developers to discover Gemini and its open-source variant Gemma Large Language Model by Google using Spring AI framework.
The code examples have been tested on the following environment:
- Java 21
- Maven >= 3.9.6
In order to run these examples, you need to have a Google Cloud account and project ready.
Before running the examples, you'll need to set up three environment variables:
export VERTEX_AI_GEMINI_PROJECT_ID=<your-project-id>
export VERTEX_AI_GEMINI_LOCATION=us-central1
export VERTEX_AI_GEMINI_MODEL=gemini-1.5-pro-001
# Note: you can test in another region or using the gemini-1.5-flash-001 model
Important
Please update the project ID and location to match your project and select the model of your choice
Create the Maven wrapper:
mvn wrapper:wrapper
The samples in this codelab are grouped by various capabilities and patterns. You will find, in order:
- Chat
- Simple Q&A with Gemini
- Conversation with Gemini with chat history
- Simple Q&A via streaming
- Multimodality
- Analyzing & extracting image data using Multimodality
- Transcribing audio data using Multimodality
- Transcribing video data using Multimodality
- Capabilities
- Structure prompts with prompt templates
- Extracting structured data from unstructured text
- Grounding responses with Web Search
- Function Calling with Spring AI
- Document utilities
- Document Readers and Splitters
- Embeddings
- Generating Text Embeddings with Vertex AI
- Generating Multimodal Embeddings with Vertex AI
- AI use-cases and patterns
- Retrieval-augmented generation(RAG)
- Text classification with Few-shot prompting
- Sentiment analysis with few-shot prompting
- Summarization Patterns with Gemini: Stuffing, Map-Reduce Patterns
- Local environments
- Running Open-models with Ollama and Testcontainers
Tip
Note the profiles complete
used for the build
Build the samples in a single JAR, then run them individually for the respective use-case:
./mvnw clean package -Pcomplete
Tip
List of samples, by use-case. Each sample can be run independently
-
Chat
-
java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.SimpleChatExample
-
Conversation with Gemini with chat history
java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.ConversationExample
-
java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.SimpleChatStreamingExample
-
-
Multimodality
-
Analyzing & extracting image data using Multimodality
java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.MultimodalImagesExample
-
Transcribing audio data using Multimodality
java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.MultimodalAudioExample
-
Transcribing video data using Multimodality
java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.MultimodalVideoExample
-
-
Capabilities
-
Structure prompts with prompt templates
java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.WorkingWithTemplatesExample
-
Extracting structured data from unstructured text
java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.StructuredOutputExample
-
Grounding responses with Web Search with Vertex SDK
java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.GroundingWithWebsearchExample
-
Grounding responses with Web Search with SpringAI
java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.GroundingWithWebsearchSpringAIExample
-
Function Calling with Spring AI
java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.FunctionCallingExample
-
-
Document utilities
- Document Readers and Splitters
java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.DocumentProcessingExample
- Document Readers and Splitters
-
Embeddings
-
Generating Text Embeddings with Vertex AI
java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.TextEmbeddingExample
-
Generating Multimodal Embeddings with Vertex AI
java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.MultimodalEmbeddingExample
-
-
AI use-cases and patterns
-
Retrieval-augmented generation(RAG)
java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.RAGExample
-
Text classification with Few-shot prompting
java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.TextClassificationExample
-
Sentiment analysis with Few-shot prompting
java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.SentimentAnalysisExample
-
Summarization Patterns with Gemini: Stuffing, Map-Reduce Patterns
java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.SummarizationExample
-
-
Local environments
- Running Open-models with Ollama and Testcontainers
java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.LocalTestingWithOllamaContainers
- Running Open-models with Ollama and Testcontainers
This is not an official Google product.