{"id":18068406,"url":"https://github.com/ibjunior/spring-gen-ai","last_synced_at":"2026-04-15T14:31:13.808Z","repository":{"id":259862622,"uuid":"862857289","full_name":"IBJunior/spring-gen-ai","owner":"IBJunior","description":"Ce repo contient une application démontrant l'intégration de l'IA générative dans une application Spring Boot en utilisant OpenAI.","archived":false,"fork":false,"pushed_at":"2024-10-25T08:32:17.000Z","size":263,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-05T16:12:56.036Z","etag":null,"topics":["spring","spring-boot","spring-mvc","springai"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IBJunior.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-09-25T09:58:58.000Z","updated_at":"2024-10-28T09:34:12.000Z","dependencies_parsed_at":"2024-10-28T13:54:33.801Z","dependency_job_id":"b24a2c5b-42fb-4501-b7db-1778b315c9d7","html_url":"https://github.com/IBJunior/spring-gen-ai","commit_stats":null,"previous_names":["ibjunior/spring-gen-ai"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBJunior%2Fspring-gen-ai","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBJunior%2Fspring-gen-ai/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBJunior%2Fspring-gen-ai/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBJunior%2Fspring-gen-ai/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IBJunior","download_url":"https://codeload.github.com/IBJunior/spring-gen-ai/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247361699,"owners_count":20926643,"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":["spring","spring-boot","spring-mvc","springai"],"created_at":"2024-10-31T08:06:19.994Z","updated_at":"2026-04-15T14:31:13.761Z","avatar_url":"https://github.com/IBJunior.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Intégration de l'IA Générative avec Spring AI et OpenAI\n\nCe repo contient une application démontrant l'intégration de l'IA générative dans une application Spring Boot en\nutilisant OpenAI.\n\nCette application combine les notions (RAG, Appel de fonctions, etc.) de Spring AI, précédemment abordées :\n\n- [Spring Boot et IA Générative : Un Duo Innovant avec Spring AI](https://www.linkedin.com/pulse/spring-boot-et-ia-g%25C3%25A9n%25C3%25A9rative-un-duo-innovant-avec-ai-ali-ibrahim-mso7e/?trackingId=oDUZ7rJoRCK6MSND7tIDCQ%3D%3D)\n- [Architecture et Implémentation de la génération augmentée par récupération (RAG) avec Spring AI](https://www.linkedin.com/pulse/architecture-et-impl%25C3%25A9mentation-de-la-g%25C3%25A9n%25C3%25A9ration-par-rag-ali-ibrahim-xgu1e/?trackingId=oDUZ7rJoRCK6MSND7tIDCQ%3D%3D)\n- [Fine-Tuning et Appel de Fonctions avec OpenAI et Spring AI](https://www.linkedin.com/pulse/fine-tuning-et-appel-de-fonctions-avec-openai-spring-ai-ali-ibrahim-0f15e/?trackingId=oDUZ7rJoRCK6MSND7tIDCQ%3D%3D)\n\n## Comprendre le projet\n\nPour mieux comprendre l'aspect fonctionnel du projet, vous pouvez vous référer au prompt\nsystem : ``main-system-message.st``. Vous pouvez également consulter les articles précédents mentionnés ci-haut.\n\n## Partie Backend (Ce Repos)\n\nLa partie backend est un projet Spring MVC classique avec Spring Boot utilisant Maven. Les dépendances sont\naccessibles via le ```pom.xml```\n\n### Prérequis\n\nAvant de démarrer le projet, il est impératif d'avoir une clé API d'OpenAI. Pour obtenir cette clé, vous pouvez\nconsulter la [documentation des clés API d'OpenAI](https://platform.openai.com/api-keys). Une fois obtenue, vous pouvez\nsoit l'exporter dans une variable d'environnement, soit la renseigner dans le fichier `application.properties`.\n\n````\n#Exporter la clé dans la variable d'environnement OPENAI_API_KEY\nspring.ai.openai.api-key=${OPENAI_API_KEY:renseignez-la-ici}\n````\n\n**Note :** Ce projet utilise la version 1.0.0-SNAPSHOT de Spring AI, ce qui pourrait entraîner des divergences au\nniveau des exemples si vous utilisez\nune version ultérieure. En cas de divergences, vous avez deux options :\n\n- Si vous générez le projet avec [Spring Initializer](https://start.spring.io/), vous pouvez vous assurer de travailler\n  avec la même version que moi en consultant le fichier `pom.xml` du projet.\n- Si cette version snapshot n'est plus disponible, vous pouvez simplement consulter la documentation de Spring AI de la\n  version que vous utilisez, pour voir les divergences.\n\n### Lancer le projet\n\nDémarrez le serveur, soit dans votre IDE ``SpringGenAiApplication``, soit avec ``mvn spring-boot:run``.\nLes endpoints sont accessibles depuis http://localhost:8080\n\n### Endpoints\n\nIl y a deux types d'endpoints :\n\n#### Les endpoints de chat\n\nIls sont contenus dans ``AssistantController``.\n\n- POST: http://localhost:8080/api/assistant/informations\n- POST: http://localhost:8080/api/assistant/reservations\n- POST: http://localhost:8080/api/assistant/destinations\n- POST: http://localhost:8080/api/assistant/faq\n\n#### Les endpoints d'historisation des chats\n\nIls sont contenus dans ``ConversationHistoryController``. Ils permettent de récupérer et d'enregistrer l'historique des\nconversations.\n\n- GET: http://localhost:8080/api/conversation-history\n- POST: http://localhost:8080/api/conversation-history\n\n### Retrieval Augmented Generation\n\nL'aspect RAG, de l'extraction jusqu'à l'enregistrement dans une base de données vectorielle, est effectué dans la\nclasse ``VectorStoreInitializationRunner``.\n\n### Les fonctions\n\nToutes les fonctions que le modèle peut appeler sont définies dans le package ``fly.intelligent.genai.functions``.\n\n### La base de données\n\nL'initialisation de la base de données est faite dans la classe ``SpringGenAiApplication``.\n\u003cimg src=\"src/main/resources/images/illustration-class-diagram.png\"/\u003e\n\n### Evaluation du modèle\n\nLes tests effectués pour valider la précision (accuracy) du modèle se trouvent dans la\nclasse ``AssistantControllerTest``.\n\n## Partie Front-end\n\nLa partie frontend du projet se trouve ici, https://github.com/IBJunior/gen-ai-app\n\u003cimg src=\"src/main/resources/images/front-end.png\"/\u003e\n\n## Ressources\n\n- [Spring Boot et IA Générative : Un Duo Innovant avec Spring AI](https://www.linkedin.com/pulse/spring-boot-et-ia-g%25C3%25A9n%25C3%25A9rative-un-duo-innovant-avec-ai-ali-ibrahim-mso7e/?trackingId=oDUZ7rJoRCK6MSND7tIDCQ%3D%3D)\n- [Architecture et Implémentation de la génération augmentée par récupération (RAG) avec Spring AI](https://www.linkedin.com/pulse/architecture-et-impl%25C3%25A9mentation-de-la-g%25C3%25A9n%25C3%25A9ration-par-rag-ali-ibrahim-xgu1e/?trackingId=oDUZ7rJoRCK6MSND7tIDCQ%3D%3D)\n- [Fine-Tuning et Appel de Fonctions avec OpenAI et Spring AI](https://www.linkedin.com/pulse/fine-tuning-et-appel-de-fonctions-avec-openai-spring-ai-ali-ibrahim-0f15e/?trackingId=oDUZ7rJoRCK6MSND7tIDCQ%3D%3D)\n- [Documentation Spring AI](https://docs.spring.io/spring-ai/reference/)\n- [Documentation OpenAI](https://platform.openai.com/docs/overview)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fibjunior%2Fspring-gen-ai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fibjunior%2Fspring-gen-ai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fibjunior%2Fspring-gen-ai/lists"}