{"id":17635909,"url":"https://github.com/ddobrin/gemini-workshop-for-spring-ai-java-developers","last_synced_at":"2025-04-14T06:13:02.873Z","repository":{"id":258369730,"uuid":"842710702","full_name":"ddobrin/gemini-workshop-for-spring-ai-java-developers","owner":"ddobrin","description":"Gemini workshop for Java developers, using the Spring AI orchestration framework","archived":false,"fork":false,"pushed_at":"2025-01-05T20:37:49.000Z","size":11632,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-14T06:12:40.758Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ddobrin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-14T22:55:51.000Z","updated_at":"2025-03-01T04:03:24.000Z","dependencies_parsed_at":"2025-01-05T21:34:09.513Z","dependency_job_id":null,"html_url":"https://github.com/ddobrin/gemini-workshop-for-spring-ai-java-developers","commit_stats":{"total_commits":38,"total_committers":2,"mean_commits":19.0,"dds":"0.13157894736842102","last_synced_commit":"e8062308e0f92d4156f8c41d355d81f0405f0817"},"previous_names":["ddobrin/gemini-workshop-for-spring-ai-java-developers"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddobrin%2Fgemini-workshop-for-spring-ai-java-developers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddobrin%2Fgemini-workshop-for-spring-ai-java-developers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddobrin%2Fgemini-workshop-for-spring-ai-java-developers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddobrin%2Fgemini-workshop-for-spring-ai-java-developers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ddobrin","download_url":"https://codeload.github.com/ddobrin/gemini-workshop-for-spring-ai-java-developers/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248830399,"owners_count":21168272,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-23T02:24:35.976Z","updated_at":"2025-04-14T06:13:02.854Z","avatar_url":"https://github.com/ddobrin.png","language":"Java","funding_links":[],"categories":["Learning Resources"],"sub_categories":["Workshops"],"readme":"# Gemini in Java with Vertex AI and Spring AI\nGemini workshop for Java developers, using the Spring AI orchestration framework\n\n\u003e [!NOTE]\n\u003e This is the code for [Gemini in Java with Vertex AI and Spring AI]()\n\u003e codelab geared towards Java developers to discover [Gemini](https://deepmind.google/technologies/gemini/)\n\u003e and its open-source variant [Gemma](https://ai.google.dev/gemma) Large Language Model by Google using [Spring AI](https://docs.spring.io/spring-ai/reference/index.html)\n\u003e framework.\n\n## Prerequisites\n\nThe code examples have been tested on the following environment:\n\n* Java 21\n* Maven \u003e= 3.9.6\n\nIn order to run these examples, you need to have a Google Cloud account and project ready.\n\nBefore running the examples, you'll need to set up three environment variables:\n\n```bash\nexport VERTEX_AI_GEMINI_PROJECT_ID=\u003cyour-project-id\u003e\nexport VERTEX_AI_GEMINI_LOCATION=\u003cyour region\u003e, ex: us-central1\nexport VERTEX_AI_GEMINI_MODEL=\u003cmodel\u003e, ex: gemini-2.0-flash-exp\n\n# Note: you can test in another region or using the gemini-1.5-flash-001 model\n```\n\n\u003e [!IMPORTANT]\n\u003e Please update the project ID and location to match your project and select the model of your choice\n\nCreate the Maven wrapper:\n\n```bash\nmvn wrapper:wrapper\n```\n\n## Codelab Samples\nThe samples in this codelab are grouped by various capabilities and patterns. You will find, in order:\n* Chat\n  * Simple Q\u0026A with Gemini\n  * Conversation with Gemini with chat history\n  * Simple Q\u0026A via streaming\n* Multimodality\n  * Analyzing \u0026 extracting image data using Multimodality\n  * Transcribing audio data using Multimodality\n  * Transcribing video data using Multimodality\n* Capabilities\n  * Structure prompts with prompt templates\n  * Extracting structured data from unstructured text\n  * Grounding responses with Web Search\n  * Function Calling with Spring AI\n* Document utilities\n  * Document Readers and Splitters\n* Embeddings\n  * Generating Text Embeddings with Vertex AI\n  * Generating Multimodal Embeddings with Vertex AI\n* AI use-cases and patterns\n  * Retrieval-augmented generation(RAG)\n  * Text classification with Few-shot prompting\n  * Sentiment analysis with few-shot prompting \n  * Summarization Patterns with Gemini: Stuffing, Map-Reduce Patterns\n* Local environments\n  *  Running Open-models with Ollama and Testcontainers\n\n### Build\n\u003e [!TIP]\n\u003e Note the profiles `complete` used for the build\n\nBuild the samples in a single JAR, then run them individually for the respective use-case:\n```shell\n./mvnw clean package -Pcomplete\n```\n### Run\n\u003e [!TIP]\n\u003e List of samples, by use-case. Each sample can be run independently\n\n* Chat\n  * [Simple Q\u0026A with Gemini](src/main/java/gemini/workshop/SimpleChatExample.java)\n      ```shell\n      java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.SimpleChatExample\n      ```\n\n  * [Conversation with Gemini with chat history](src/main/java/gemini/workshop/ConversationExample.java)\n      ```shell\n      java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.ConversationExample\n      ```\n\n  * [Simple Q\u0026A via streaming](src/main/java/gemini/workshop/SimpleChatStreamingExample.java)\n      ```shell\n      java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.SimpleChatStreamingExample\n      ```\n\n* Multimodality\n  * [Analyzing \u0026 extracting image data using Multimodality](src/main/java/gemini/workshop/MultimodalImagesExample.java)\n      ```shell\n      java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.MultimodalImagesExample\n      ```\n\n  * [Transcribing audio data using Multimodality](src/main/java/gemini/workshop/MultimodalAudioExample.java)\n      ```shell\n      java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.MultimodalAudioExample\n      ```\n\n  * [Transcribing video data using Multimodality](src/main/java/gemini/workshop/MultimodalVideoExample.java)\n      ```shell\n      java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.MultimodalVideoExample\n      ```\n\n* Capabilities\n  * [Structure prompts with prompt templates](src/main/java/gemini/workshop/WorkingWithTemplatesExample.java)\n      ```shell\n      java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.WorkingWithTemplatesExample\n      ```\n\n  * [Extracting structured data from unstructured text](src/main/java/gemini/workshop/StructuredOutputExample.java)\n      ```shell\n      java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.StructuredOutputExample\n      ```\n  * [Grounding responses with Web Search with Vertex SDK](src/main/java/gemini/workshop/GroundingWithWebsearchExample.java)\n    ```shell\n    java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.GroundingWithWebsearchExample\n    ```\n\n  * [Grounding responses with Web Search with SpringAI](src/main/java/gemini/workshop/GroundingWithWebsearchSpringAIExample.java)\n    ```shell\n    java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.GroundingWithWebsearchSpringAIExample\n    ```\n    \n  * [Function Calling with Spring AI](src/main/java/gemini/workshop/FunctionCallingExample.java)\n      ```shell\n      java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.FunctionCallingExample\n      ```\n* Document utilities\n  * [Document Readers and Splitters](src/main/java/gemini/workshop/DocumentProcessingExample.java)\n      ```shell\n      java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.DocumentProcessingExample\n      ```\n\n* Embeddings\n  * [Generating Text Embeddings with Vertex AI](src/main/java/gemini/workshop/TextEmbeddingExample.java)\n      ```shell\n      java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.TextEmbeddingExample\n      ```\n\n  * [Generating Multimodal Embeddings with Vertex AI](src/main/java/gemini/workshop/MultimodalEmbeddingExample.java)\n      ```shell\n      java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.MultimodalEmbeddingExample\n      ```\n\n* AI use-cases and patterns\n  * [Retrieval-augmented generation(RAG)](src/main/java/gemini/workshop/RAGExample.java)\n    ```shell\n    java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.RAGExample\n    ```\n     \n  * [Text classification with Few-shot prompting](src/main/java/gemini/workshop/TextClassificationExample.java)\n    ```shell\n    java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.TextClassificationExample\n    ```\n\n  * [Sentiment analysis with Few-shot prompting](src/main/java/gemini/workshop/SentimentAnalysisExample.java)\n    ```shell\n    java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.SentimentAnalysisExample\n    ```\n\n  * [Summarization Patterns with Gemini: Stuffing, Map-Reduce Patterns](src/main/java/gemini/workshop/SummarizationExample.java)\n    ```shell\n    java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.SummarizationExample\n    ```\n* Local environments\n  * [Running Open-models with Ollama and Testcontainers](src/main/java/gemini/workshop/LocalTestingWithOllamaContainers.java.unused)\n    ```shell\n    java -cp ./target/spring-ai-workshop-1.0.0-jar-with-dependencies.jar gemini.workshop.LocalTestingWithOllamaContainers\n    ```\n--------\nThis is not an official Google product.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fddobrin%2Fgemini-workshop-for-spring-ai-java-developers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fddobrin%2Fgemini-workshop-for-spring-ai-java-developers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fddobrin%2Fgemini-workshop-for-spring-ai-java-developers/lists"}