Java로 프로그래밍하고 GeminiAI를 사용해 본 적이 없다면 이 기사가 훌륭한 입문 가이드가 될 것입니다. 여기서는 Rest API처럼 Gemini에 요청을 보내고 JSON을 반환하는 방법을 매우 간단한 방법으로 제시하겠습니다. ??
나는 무엇을 사용하고 있나요? ?
스프링 런처를 사용하여 간단한 프로젝트를 시작하고 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>
이러한 종속성을 통해 Lombok, RestTemplate 및 ObjectMapper를 사용할 수 있습니다.
롬복: 반복적인 코드(유명한 상용구)를 방지하고 코드 가독성을 높이기 위해
RestTemplate: GeminiAI API에 http 요청
ObjectMapper: Gemini API 반환을 JSON으로 변환
Java 프로젝트에서 RestTemplate을 구성해 보겠습니다. 이를 위해 @Configuration 주석과 이를 정의하는 Bean을 사용하여 클래스를 생성합니다.
@Configuration public class RestTemplateConfig { @Bean public RestTemplate restTemplate(RestTemplateBuilder builder) { return builder.build(); } }
GeminiAI와 통신하기 위한 서비스 클래스를 만들어 보겠습니다. 이 클래스는 Gemini의 응답에 대한 모든 통신과 처리를 담당하며 다음과 같습니다.
@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"; } }
이 수업에서는 POJO의 GeminiRequest 및 GeminiResponse를 사용하고 있으며, 아래는 이를 생성하는 코드입니다
제미니요청
@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; } }
이제 Rest 요청을 수신하고 서비스를 통해 처리하는 컨트롤러를 만들어 보겠습니다.
@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; } }
우리 컨트롤러에는 POJO도 있습니다. 아래에서 해당 코드를 확인하세요
대화요청
@Getter @Setter @AllArgsConstructor public class TalkRequest { private String chat; }
톡응답
@Getter @Setter @AllArgsConstructor @NoArgsConstructor public class TalkResponse { private String response; }
GeminiAI 액세스 엔드포인트와 액세스 키도 알려야 합니다. 우리는 간단한 테스트에 대해 이야기하고 있으므로 이 정보를 속성 파일에 저장했습니다. 필요한 변수가 포함된 속성 파일을 확인하세요
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
GeminiAI와 이미 통신이 완료되었으므로 이제 Postman을 사용하여 애플리케이션을 테스트할 수 있습니다. 이를 위해 Intellij에서 애플리케이션을 시작하고 아래 이미지와 같이 Postman에서 요청을 실행할 수 있습니다.
결론 ✔
이 기사의 목적은 Java 프로그래머에게 GeminiAI를 Java 애플리케이션과 연결하여 무한한 새로운 사용 가능성을 창출하는 방법을 소개하는 것이었습니다. 즐거웠기를 바라요, 다음에 또 만나요! ?
위 내용은 GeminiAI와 JAVA 통신의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!