Rumah >Java >javaTutorial >Berkomunikasi JAVA dengan GeminiAI
Jika anda memprogram dalam Java dan tidak pernah 'bermain' dengan GeminiAI, artikel ini akan menjadi panduan pengenalan yang hebat, di sini saya akan membentangkan dengan cara yang sangat mudah cara menghantar permintaan kepada Gemini dan mengembalikan JSON, seperti API Rehat. ?
Apa yang saya gunakan? ?
Mulakan projek mudah menggunakan pelancar musim bunga, dan masukkan kebergantungan berikut dalam POM anda
<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>
Kebergantungan ini akan membolehkan penggunaan Lombok, RestTemplate dan ObjectMapper.
Lombok: untuk mengelakkan kod berulang (boilerplates terkenal) dan untuk meningkatkan kebolehbacaan kod kami
RestTemplate: untuk membuat permintaan http kepada API GeminiAI
ObjectMapper: untuk menukar Gemini api return kepada JSON
Mari konfigurasikan RestTemplate dalam projek Java kami, untuk ini kami mencipta kelas dengan anotasi @Configuration dan Bean untuk mentakrifkannya:
@Configuration public class RestTemplateConfig { @Bean public RestTemplate restTemplate(RestTemplateBuilder builder) { return builder.build(); } }
Mari buat kelas perkhidmatan untuk berkomunikasi dengan GeminiAI, kelas ini akan bertanggungjawab untuk semua komunikasi dan pemprosesan respons Gemini, dan sepatutnya kelihatan seperti ini:
@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"; } }
Perhatikan bahawa dalam kelas ini kita menggunakan GeminiRequest dan GeminiResponse POJO, di bawah ialah kod untuk menciptanya
Permintaan Gemini
@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; } }
Sekarang mari buat pengawal untuk mendengar permintaan Rehat dan memprosesnya melalui Perkhidmatan kami
@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; } }
Pengawal kami juga mempunyai POJO, lihat kod mereka di bawah
TalkRequest
@Getter @Setter @AllArgsConstructor public class TalkRequest { private String chat; }
TalkResponse
@Getter @Setter @AllArgsConstructor @NoArgsConstructor public class TalkResponse { private String response; }
Anda perlu memaklumkan titik akhir akses GeminiAI dan juga kunci akses anda. Saya menyimpan maklumat ini dalam fail sifat, kerana kita bercakap tentang ujian mudah. Semak fail sifat dengan pembolehubah yang diperlukan
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
Kami sudah mempunyai komunikasi dengan GeminiAI, kini kami boleh menguji aplikasi kami menggunakan posmen, untuk melakukan ini mulakan permohonan anda dalam Intellij dan laksanakan permintaan dalam posmen seperti yang ditunjukkan dalam imej di bawah:
KESIMPULAN ✔
Tujuan artikel ini adalah untuk memperkenalkan pengaturcara Java untuk menyambungkan GeminiAI dengan aplikasi Java, mewujudkan kemungkinan baharu yang tidak terhingga untuk digunakan. Saya harap anda menikmatinya, jumpa lagi pada masa akan datang! ?
Atas ialah kandungan terperinci Berkomunikasi JAVA dengan GeminiAI. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!