OpenAIとJavaでAIアシスタントを実装する

こんにちは、皆さん。今回はAI技術に興味を持つプログラマーの皆さんに向けて、OpenAIとJavaを使ってAIアシスタントを作成する方法について解説します。

# 問題点

AI技術は日々進化しており、その応用範囲は広がり続けています。その中でもAIアシスタントは、私たちの生活にとても便利な存在となっています。しかし、一方で、その具体的な作成方法については必ずしも明確に説明されているわけではありません。そのため、自身でAIアシスタントを作りたいと思っても、どう始めてよいか迷ってしまう方も少なくないでしょう。

# 解決方法

この問題を解決するために、今回はJavaとOpenAIを使ったAIアシスタントの作り方を具体的に解説します。サンプルコードを元に、順を追って説明していきます。サンプルコードは[こちらのGitHubリポジトリ](https://github.com/blue-islands/gpt4-java-sample)にあります。

# Maven設定

このプロジェクトを進めるにあたって、まず必要となるのが依存関係の設定です。`pom.xml`内に以下のように記述して、必要なライブラリをプロジェクトに取り込みます。

```xml:pom:xml
<dependencies>
    <dependency>
        <groupId>com.theokanning.openai-gpt3-java</groupId>
        <artifactId>api</artifactId>
        <version>0.14.0</version>
    </dependency>
    <dependency>
        <groupId>com.theokanning.openai-gpt3-java</groupId>
        <artifactId>client</artifactId>
        <version>0.14.0</version>
    </dependency>
    <dependency>
        <groupId>com.theokanning.openai-gpt3-java</groupId>
        <artifactId>service</artifactId>
        <version>0.14.0</version>
    </dependency>
</dependencies>
```

# コードの構成

サンプルコードは以下の通りです。


```java
import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;

import com.theokanning.openai.completion.chat.ChatCompletionChoice;
import com.theokanning.openai.completion.chat.ChatCompletionRequest;
import com.theokanning.openai.completion.chat.ChatMessage;
import com.theokanning.openai.service.OpenAiService;

public class Sample1 {
```

まず、必要なクラスをインポートします。ここではOpenAIのJava SDKを使用しています。
ここでは、プロンプトの内容によっては、タイムアウトが発生する可能性もあるので、`Duration.ofSeconds(60)`でタイムアウト時間60秒を設定しています。

```java
final var config = ResourceBundle.getBundle("config");
final var token = config.getString("openai.token");
final var service = new OpenAiService(token, Duration.ofSeconds(60));
```

次に、設定ファイルからAPIトークンを読み込み、OpenAiServiceを初期化します。

```java
final var message = "やっぱり、冬の鍋はおいしいですね。";
final var prompt = "The following is a conversation with an AI assistant. The assistant is helpful, creative, clever.";

final List <ChatMessage> messages = new ArrayList <>();
final var promptMessage = new ChatMessage();
promptMessage.setRole("system");
promptMessage.setContent(prompt);
messages.add(promptMessage);
final var userMessage = new ChatMessage();
userMessage.setRole("user");
userMessage.setContent(message);
messages.add(userMessage);
```

その後、AIアシスタントとの会話をシミュレートするためのメッセージを作成します。

```java
final var request = ChatCompletionRequest.builder()
                .model("gpt-4")
                .messages(messages)
                .maxTokens(2048)
                .build();

final var completionResult = service.createChatCompletion(request);
final var choiceList = completionResult.getChoices();
```

最後に、ChatCompletionRequestを作成し、それを使ってチャットの結果を取得します。

# まとめ

今回はOpenAIとJavaを使って、AIアシスタントを実装する方法を解説しました。AI技術は私たちの生活をより便利にするためのツールであり、その一方で技術者として自分自身でAIアシスタントを作る楽しさもあります。この記事が皆さんの学習の一助となれば幸いです。

- 必要なクラスをインポートする
- OpenAIのAPIトークンを設定する
- メッセージを作成する
- ChatCompletionRequestを作成し、結果を取得する

以上、OpenAIとJavaを使用したAIアシスタントの作成方法についてでした。今回の記事が皆さんの参考になれば幸いです。詳しいコードは[GitHubリポジトリ](https://github.com/blue-islands/gpt4-java-sample)で確認できます。

[^1]: "OpenAI API Documentation", OpenAI, 2021, [https://openai.com/documentation/](https://openai.com/documentation/)