>Java >java지도 시간 >GeminiAI와 JAVA 통신

GeminiAI와 JAVA 통신

Linda Hamilton
Linda Hamilton원래의
2025-01-09 06:45:41412검색

Java로 프로그래밍하고 GeminiAI를 사용해 본 적이 없다면 이 기사가 훌륭한 입문 가이드가 될 것입니다. 여기서는 Rest API처럼 Gemini에 요청을 보내고 JSON을 반환하는 방법을 매우 간단한 방법으로 제시하겠습니다. ?‍?

나는 무엇을 사용하고 있나요? ?

  • 자바 17
  • 정보공동체 2024.1.1
  • 우체부 카드
  • GeminiAI 액세스 키

시작하자?

스프링 런처를 사용하여 간단한 프로젝트를 시작하고 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의 GeminiRequestGeminiResponse를 사용하고 있으며, 아래는 이를 생성하는 코드입니다

제미니요청

@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에서 요청을 실행할 수 있습니다.

Comunicando JAVA com o GeminiAI


결론
이 기사의 목적은 Java 프로그래머에게 GeminiAI를 Java 애플리케이션과 연결하여 무한한 새로운 사용 가능성을 창출하는 방법을 소개하는 것이었습니다. 즐거웠기를 바라요, 다음에 또 만나요! ?

위 내용은 GeminiAI와 JAVA 통신의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.