PaLM API: Java による Chat のクイックスタート

このクイックスタートでは、Java クライアント ライブラリを使用して PaLM API でチャット サービスの使用を開始します。

API キーを取得する

まず、API キーを取得する必要があります。

API クライアントのインストール

この手順では、PaLM Java SDK をローカル Maven リポジトリにインストールし、Gradle プロジェクトに依存関係として追加できるようにします。

  1. google-cloud-ai-generativelanguage-v1-java.tar.gz ファイルをダウンロードします。
  2. ファイルを抽出し、mavenLocal にインストールします。

    # Extract the files
    tar -xzvf google-cloud-ai-generativelanguage-v1-java.tar.gz
    cd google-cloud-ai-generativelanguage-v1-java
    
    # Install to mavenLocal
    ./gradlew publishToMavenLocal
    

プロジェクトに SDK を追加する

  1. Gradle 構成ファイルを開き、mavenLocal()repositories の下にリストされていることを確認します。

    repositories {
        mavenCentral()
        // ...
    
        // Add the Maven Local repository
        mavenLocal()
    }
    
  2. また、Gradle 構成ファイルで、必要なライブラリを dependencies ブロックに追加します。

    dependencies {
        // ...
    
        // Add these dependencies to use Generative AI
        implementation("com.google.cloud:gapic-google-cloud-ai-generativelanguage-v1-java:0.0.0-SNAPSHOT")
        implementation("io.grpc:grpc-okhttp:1.53.0")
    }
    

ディスカッション サービス クライアントを初期化する

API キー(API_KEY 環境変数で指定)をヘッダーとして DiscussServiceSettings で使用する TransportChannelProvider に渡して、DiscussServiceClient を初期化します。

import com.google.ai.generativelanguage.v1.DiscussServiceClient;
import com.google.ai.generativelanguage.v1.DiscussServiceSettings;
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
import com.google.api.gax.rpc.FixedHeaderProvider;


HashMap<String, String> headers = new HashMap<>();
headers.put("x-goog-api-key", System.getEnv("API_KEY"));

InstantiatingGrpcChannelProvider provider = InstantiatingGrpcChannelProvider.newBuilder()
    .setHeaderProvider(FixedHeaderProvider.create(headers))
    .build();

DiscussServiceSettings settings = DiscussServiceSettings.newBuilder()
    .setTransportChannelProvider(provider)
    .setCredentialsProvider(FixedCredentialsProvider.create(null))
    .build();

DiscussServiceClient client = DiscussServiceClient.create(settings);

メッセージ プロンプトを作成する

ディスカッションの次のメッセージを予測できるように、MessagePrompt を API に提供する必要があります。

(省略可)例をいくつか作成する

必要に応じて、モデルで生成される内容の例を指定できます。これには、ユーザー入力と、モデルがエミュレートする必要があるレスポンスの両方が含まれます。

import com.google.ai.generativelanguage.v1.Example;
import com.google.ai.generativelanguage.v1.Message;


Message input = Message.newBuilder()
    .setContent("What is the capital of California?")
    .build();

Message response = Message.newBuilder()
    .setContent("If the capital of California is what you seek, Sacramento is where you ought to peek.")
    .build();

Example californiaExample = Example.newBuilder()
    .setInput(input)
    .setOutput(response)
    .build();

プロンプトを作成する

現在のメッセージ履歴と、必要に応じて前の手順の例とともに、例を MessagePrompt.Builder に渡します。

import com.google.ai.generativelanguage.v1.Message;
import com.google.ai.generativelanguage.v1.MessagePrompt;

Message geminiMessage = Message.newBuilder()
    .setAuthor("0")
    .setContent("How tall is the Eiffel Tower?")
    .build();

MessagePrompt messagePrompt = MessagePrompt.newBuilder()
    .addMessages(geminiMessage) // required
    .setContext("Respond to all questions with a rhyming poem.") // optional
    .addExamples(californiaExample) // use addAllExamples() to add a list of examples
    .build();

メッセージを生成

GenerateMessageRequest を作成する

モデル名とプロンプトを GenerateMessageRequest.Builder に渡して、GenerateMessageRequest を作成します。

GenerateMessageRequest request = GenerateMessageRequest.newBuilder()
    .setModel("models/chat-bison-001") // Required, which model to use to generate the result
    .setPrompt(messagePrompt) // Required
    .setTemperature(0.5f) // Optional, controls the randomness of the output
    .setCandidateCount(1) // Optional, the number of generated messages to return
    .build();

リクエストを送信する

GenerateMessageResponse response = client.generateMessage(request);

Message returnedMessage = response.getCandidatesList().get(0);

System.out.println(returnedMessage);

次のステップ

PaLM API を使用して最初の Java アプリを作成しました。以下のリソースを参照して、API と言語モデル全般の詳細を確認してください。

  • プロンプトの手法について詳しくは、LLM の概要をご覧ください。