LoginSignup
3
3

More than 1 year has passed since last update.

Open AIのAPIキー発行からJavaでの簡単実装までやってみる

Last updated at Posted at 2023-04-24

最近、話題のChatGPTをOpenAIの公式サイトで使いながら思ったのがAPI処理を実装してみようということでした。それに関して記録の形で投稿したいと思います。

Javaで実装するには

以下の順番でやってみようと思っている
1. OpenAIのAPIキーを取得
2. Java用ライブラリーを使用
3. 処理用コードを作成
4. テスト

1. OpenAIのAPIキーを取得

以下のリンクに接続してログイン

そうすると、以下の画面が表示されるので「+Create new secret key」を選択
image.png

名前は適当に入力して「Create secret key」を押下
image.png

これでAPIキーが発行された
右側のコピーボタンを使ってメモしておこう!
image.png

登録してから3ヶ月間は無料で18ドル分が付与されるんだそうで、確認したところ、期限ありの18ドル分が入っていた。これでテストができそう。
(以下はテストで少し使った後の画像になる)
(Googleの職場アカウントで登録した際はもらえなかったので、要確認!)
image.png

2. Java用ライブラリーを使用

以下のリンクには実装に必要なライブラリーが載っているので一度確認をしてみよう

artifact「client」モジュールにあるOpenAiServiceは使えないようなので、今回は簡単に作るために「service」を用いて作ってみようと思う
image.png

Maven設定はこちら。最新バージョンを取り込もう (2023.4.21時点)

porm.xml
<dependencies>
    <dependency>
      <groupId>com.theokanning.openai-gpt3-java</groupId>
      <artifactId>service</artifactId>
      <version>0.12.0</version>       
    </dependency>
  </dependencies>

3. 処理用コードを作成

Javaコードはこちら。
各設定はResourceBundleを用いてまとめておいた
プロンプトはScannerとかを使って直接入力してもらうようにしてもいいが、今回は文字列に直入力しておいて実行する形にする

app.java
package com.openai;

import java.util.ResourceBundle;
import com.theokanning.openai.completion.CompletionRequest;
import com.theokanning.openai.service.OpenAiService;
import com.theokanning.openai.completion.*;

public class App
{
    public static void main( String[] args )
    {
        ResourceBundle config = ResourceBundle.getBundle("prop");
        String prompt = "Q: 日本の首都名はなんですか? A:";
        String token = config.getString("openai.token");
        String model = config.getString("openai.model");
        int maxTokens = Integer.valueOf(config.getString("openai.maxTokens"));
        Double temperature = Double.valueOf(config.getString("openai.temperature"));
        
        CompletionRequest completionRequest = CompletionRequest.builder()
        .prompt(prompt)
        .model(model)
        .echo(true)
        .maxTokens(maxTokens)
        .temperature(temperature)
        .build();

        OpenAiService service = new OpenAiService(token);
        CompletionChoice choice = service.createCompletion(completionRequest).getChoices().get(0);
        System.out.println(choice.getText());
    }
}

設定ファイルはこちら
APIキーとモデル設定が一番大事だと思う
ちなみに、API利用は有料だが、個人アカウントに限って期限ありで20ドル分、使えるのですごく助かる!

prop.properties
openai.token=OpenAIから取得したAPIキー
openai.model=text-davinci-003
openai.maxTokens=100
# 値が大きいほど、モデルにはより多くのリスクが伴います。
# よりクリエイティブなアプリケーションの場合は 0.9、答えが明確なアプリケーションの場合は 0
openai.temperature=0

モデルに関する情報は以下を参照

4. テスト

早速、テストしてみよう
mainメソッドを実行したところ、以下のようにちゃんと動いてくれた!
これを基にいろんなWebサービスに適用できそうー!

Q: 日本の首都名はなんですか? A: 日本の首都名は東京です。

最後に

応用はいろいろできそうです。
今回はOpenAiServiceの「createCompletion」のみ使っていますが、中身に定義されているメソッドからチャット機能とかイメージ生成などができると思います。
以上!

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3