Si vous programmez en Java et n'avez jamais « joué » avec GeminiAI, cet article sera un excellent guide d'introduction, ici je vais vous présenter de manière très simple comment envoyer des requêtes à Gemini et renvoyer du JSON, comme une API Rest. ??
Qu'est-ce que j'utilise ? ?
Démarrez un projet simple à l'aide du lanceur Spring et incluez les dépendances suivantes dans votre POM
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.36</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.18.2</version> </dependency>
Ces dépendances permettront l'utilisation de Lombok, RestTemplate et ObjectMapper.
Lombok : pour éviter les codes répétitifs (les fameux passe-partout) et améliorer la lisibilité de notre code
RestTemplate : pour faire la requête http à l'API GeminiAI
ObjectMapper : pour convertir le retour de l'API Gemini en JSON
Configurons le RestTemplate dans notre projet Java, pour cela nous créons une classe avec l'annotation @Configuration et le Bean pour le définir :
@Configuration public class RestTemplateConfig { @Bean public RestTemplate restTemplate(RestTemplateBuilder builder) { return builder.build(); } }
Créons une classe de service pour communiquer avec GeminiAI, cette classe sera responsable de toute la communication et du traitement de la réponse de Gemini, et devrait ressembler à ceci :
@Service public class TalkService { private final RestTemplate restTemplate; private final ObjectMapper objectMapper; @Value("${gemini.ai.api.url}") private String geminiApiUrl; @Value("${gemini.ai.api.key}") private String geminiApiKey; public TalkService(RestTemplate restTemplate, ObjectMapper objectMapper) { this.restTemplate = restTemplate; this.objectMapper = objectMapper; } public String callGeminiAI(TalkRequest input) { String url = geminiApiUrl + geminiApiKey; GeminiRequest request = new GeminiRequest(); GeminiRequest.Content content = new GeminiRequest.Content(); GeminiRequest.Part part = new GeminiRequest.Part(); part.setText(input.getChat()); content.setParts(Collections.singletonList(part)); request.setContents(Collections.singletonList(content)); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); HttpEntity<GeminiRequest> entity = new HttpEntity<>(request, headers); ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, entity, String.class); try { GeminiResponse geminiAIResponse = objectMapper.readValue(response.getBody(), GeminiResponse.class); if (geminiAIResponse.getCandidates() != null && !geminiAIResponse.getCandidates().isEmpty()) { GeminiResponse.Candidate candidate = geminiAIResponse.getCandidates().get(0); if (candidate.getContent() != null && candidate.getContent().getParts() != null && !candidate.getContent().getParts().isEmpty()) { return candidate.getContent().getParts().get(0).getText(); } } } catch (Exception e) { e.printStackTrace(); } return "Falha ao processar resposta da API"; } }
Notez que dans ce cours, nous utilisons les GeminiRequest et GeminiResponse des POJO, vous trouverez ci-dessous le code pour les créer
GeminiRequest
@Getter @Setter @AllArgsConstructor @NoArgsConstructor public class GeminiRequest { private List<Content> contents; @Getter @Setter @AllArgsConstructor @NoArgsConstructor public static class Content { private List<Part> parts; } @Getter @Setter @AllArgsConstructor @NoArgsConstructor public static class Part { private String text; } }
Réponse Gémeaux
@Getter @Setter @AllArgsConstructor @NoArgsConstructor @JsonIgnoreProperties(ignoreUnknown = true) public class GeminiResponse { private List<Candidate> candidates; private UsageMetadata usageMetadata; private String modelVersion; @Getter @Setter @AllArgsConstructor @NoArgsConstructor @JsonIgnoreProperties(ignoreUnknown = true) public static class Candidate { private Content content; private String finishReason; private double avgLogprobs; } @Getter @Setter @AllArgsConstructor @NoArgsConstructor @JsonIgnoreProperties(ignoreUnknown = true) public static class Content { private List<Part> parts; } @Getter @Setter @AllArgsConstructor @NoArgsConstructor @JsonIgnoreProperties(ignoreUnknown = true) public static class Part { private String text; } @Getter @Setter @AllArgsConstructor @NoArgsConstructor @JsonIgnoreProperties(ignoreUnknown = true) public static class UsageMetadata { private int promptTokenCount; private int candidatesTokenCount; private int totalTokenCount; } }
Créons maintenant un contrôleur pour écouter une demande de repos et la traiter via notre service
@RestController @RequestMapping("v1") public class TalkController { private final TalkService talkService; @Autowired public TalkController(final TalkService talkService) { this.talkService = talkService; } @PostMapping("/chat-gemini") public TalkResponse talk(@RequestBody TalkRequest talkRequest) { TalkResponse response = new TalkResponse(); response.setResponse(talkService.callGeminiAI(talkRequest)); return response; } }
Notre contrôleur dispose également de POJO, consultez leur code ci-dessous
TalkRequest
@Getter @Setter @AllArgsConstructor public class TalkRequest { private String chat; }
ParlerRéponse
@Getter @Setter @AllArgsConstructor @NoArgsConstructor public class TalkResponse { private String response; }
Vous devrez informer le point de terminaison d'accès GeminiAI ainsi que votre clé d'accès. J'ai stocké ces informations dans le fichier de propriétés, puisqu'il s'agit d'un test simple. Vérifiez le fichier de propriétés avec les variables nécessaires
spring.application.name=NOME_DA_SUA_APLICACAO gemini.ai.api.url=https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key= gemini.ai.api.key=SUA_CHAVE_DE_ACESSO
Nous communiquons déjà avec GeminiAI, nous pouvons maintenant tester notre application en utilisant postman, pour ce faire démarrez votre application dans Intellij et exécutez la requête dans postman comme indiqué dans l'image ci-dessous :
CONCLUSION ✔
Le but de cet article était d'initier les programmeurs Java à la connexion de GeminiAI à une application Java, créant ainsi de nouvelles possibilités d'utilisation infinies. J'espère que cela vous a plu, à la prochaine fois ! ?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!