ホームページ > Java > &#&チュートリアル > JAVA と GeminiAI の通信

JAVA と GeminiAI の通信

Linda Hamilton
リリース: 2025-01-09 06:45:41
オリジナル
409 人が閲覧しました

Java でプログラミングしていて、GeminiAI を「遊んだ」ことがない場合、この記事は優れた入門ガイドになります。ここでは、Gemini にリクエストを送信し、Rest API のように JSON を返す方法を非常に簡単な方法で説明します。 ?‍?

何を使用していますか? ?

  • Java 17
  • インテリジェンスコミュニティ 2024.1.1
  • ポストマンカード
  • GeminiAI アクセスキー

始めましょう?

Spring ランチャーを使用して単純なプロジェクトを開始し、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 を使用していることに注意してください。以下はそれらを作成するコードです

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;
    }
}
ログイン後にコピー

コントローラーの作成

次に、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 アプリケーションの接続を紹介し、無限の新しい使用可能性を生み出すことです。楽しんでいただければ幸いです、また次回お会いしましょう! ?

以上がJAVA と GeminiAI の通信の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート