Heim >Java >javaLernprogramm >JAVA mit GeminiAI kommunizieren
Wenn Sie in Java programmieren und noch nie mit GeminiAI „gespielt“ haben, ist dieser Artikel eine großartige Einführung. Hier werde ich auf sehr einfache Weise vorstellen, wie Sie Anfragen an Gemini senden und JSON zurückgeben, wie eine Rest-API. ??
Was verwende ich? ?
Starten Sie ein einfaches Projekt mit dem Spring Launcher und fügen Sie die folgenden Abhängigkeiten in Ihr POM ein
<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>
Diese Abhängigkeiten ermöglichen die Verwendung von Lombok, RestTemplate und ObjectMapper.
Lombok: um sich wiederholende Codes (berühmte Boilerplates) zu vermeiden und die Lesbarkeit unseres Codes zu verbessern
RestTemplate: um die http-Anfrage an die GeminiAI-API zu stellen
ObjectMapper: zum Konvertieren der Gemini-API-Rückgabe in JSON
Lassen Sie uns das RestTemplate in unserem Java-Projekt konfigurieren. Dazu erstellen wir eine Klasse mit der @Configuration-Annotation und dem Bean, um es zu definieren:
@Configuration public class RestTemplateConfig { @Bean public RestTemplate restTemplate(RestTemplateBuilder builder) { return builder.build(); } }
Lassen Sie uns eine Serviceklasse für die Kommunikation mit GeminiAI erstellen. Diese Klasse ist für die gesamte Kommunikation und Verarbeitung der Antwort von Gemini verantwortlich und sollte wie folgt aussehen:
@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"; } }
Beachten Sie, dass wir in dieser Klasse die POJOs GeminiRequest und GeminiResponse verwenden. Unten finden Sie den Code, um sie zu erstellen
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; } }
GeminiResponse
@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; } }
Jetzt erstellen wir einen Controller, der eine Rest-Anfrage abhört und sie über unseren Service verarbeitet
@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; } }
Unser Controller verfügt auch über POJOs, sehen Sie sich den Code unten an
TalkRequest
@Getter @Setter @AllArgsConstructor public class TalkRequest { private String chat; }
TalkResponse
@Getter @Setter @AllArgsConstructor @NoArgsConstructor public class TalkResponse { private String response; }
Sie müssen den GeminiAI-Zugriffsendpunkt und auch Ihren Zugriffsschlüssel informieren. Ich habe diese Informationen in der Eigenschaftendatei gespeichert, da es sich um einen einfachen Test handelt. Überprüfen Sie die Eigenschaftendatei mit den erforderlichen Variablen
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
Wir haben bereits Kommunikation mit GeminiAI, jetzt können wir unsere Anwendung mit Postman testen. Starten Sie dazu Ihre Anwendung in Intellij und führen Sie die Anfrage in Postman aus, wie im Bild unten gezeigt:
SCHLUSSFOLGERUNG ✔
Der Zweck dieses Artikels bestand darin, Java-Programmierern die Verbindung von GeminiAI mit einer Java-Anwendung näher zu bringen und so unendlich viele neue Einsatzmöglichkeiten zu schaffen. Ich hoffe es hat euch gefallen, bis zum nächsten Mal! ?
Das obige ist der detaillierte Inhalt vonJAVA mit GeminiAI kommunizieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!