最近、話題のChatGPTをOpenAIの公式サイトで使いながら思ったのがAPI処理を実装してみようということでした。それに関して記録の形で投稿したいと思います。
Javaで実装するには
以下の順番でやってみようと思っている
1. OpenAIのAPIキーを取得
2. Java用ライブラリーを使用
3. 処理用コードを作成
4. テスト
1. OpenAIのAPIキーを取得
以下のリンクに接続してログイン
そうすると、以下の画面が表示されるので「+Create new secret key」を選択
名前は適当に入力して「Create secret key」を押下
これでAPIキーが発行された
右側のコピーボタンを使ってメモしておこう!
登録してから3ヶ月間は無料で18ドル分が付与されるんだそうで、確認したところ、期限ありの18ドル分が入っていた。これでテストができそう。
(以下はテストで少し使った後の画像になる)
(Googleの職場アカウントで登録した際はもらえなかったので、要確認!)
2. Java用ライブラリーを使用
以下のリンクには実装に必要なライブラリーが載っているので一度確認をしてみよう
artifact「client」モジュールにあるOpenAiServiceは使えないようなので、今回は簡単に作るために「service」を用いて作ってみようと思う
Maven設定はこちら。最新バージョンを取り込もう (2023.4.21時点)
<dependencies>
<dependency>
<groupId>com.theokanning.openai-gpt3-java</groupId>
<artifactId>service</artifactId>
<version>0.12.0</version>
</dependency>
</dependencies>
3. 処理用コードを作成
Javaコードはこちら。
各設定はResourceBundleを用いてまとめておいた
プロンプトはScannerとかを使って直接入力してもらうようにしてもいいが、今回は文字列に直入力しておいて実行する形にする
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ドル分、使えるのですごく助かる!
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」のみ使っていますが、中身に定義されているメソッドからチャット機能とかイメージ生成などができると思います。
以上!