OpenAI API for java
生成AIを利用したアプリケーションを java で実装できれば android へ組み込みやすいです。ライブラリを使うと HTTP(S)通信、json生成/解析などを任せて 生成AIの操作に注力できます。そんなライブラリを調べた備忘録です。
solxyz-jsn/gpt-sample-with-java
前提
2023-06-23 コミット 5021a7742ae44ee94f52c92aba2d02b21f59d438
AlmaLinux release 8.9
OpenJDK 11.0.22
Apache Maven 3.9.6
IDE( Eclipse | IntelliJ )を使わなくても動作確認できます。
サンプル src/main/java/jp/co/solxyz/SimpleQuery.java
「src/main/java/jp/co/solxyz/SimpleQuery.java」の 18行目「OPENAI_API_KEY」にopenai APIキー、23行目「PROMPT」に好きな質問を記載します。また上記環境ですと「mvn install」コマンドで
Fatal error compiling: エラー: 17は無効なターゲット・リリースです -> [Help 1]
となったので pom.xml ファイルの 「<java.version>17</java.version>」を「<java.version>11</java.version>」に修正します。
$ mvn install exec:java -Dexec.mainClass=jp.co.solxyz.SimpleQuery
で、回答が表示されます。当時の com.azure.ai.openai 1.0.0-beta.2 が使われていますが 1.0.0-beta.3 に上げるだけでコンパイルエラーとなりました。
TheoKanning/openai-java
前提
2023-12-14 コミット e7de81c29319d605703a874c3f1fa56f61122e8b
AlmaLinux release 8.9
OpenJDK 11.0.22
git clone, openai APIキーだけで コンパイル時いくつか警告が出るものの動作確認できたものは「Running the example project」のうち次の2サンプルでした。
サンプル1
$ ./gradlew runExampleOne
で、静止画を生成しコンソールに取得用URLが表示されました。
サンプル2
$ ./gradlew runExampleTwo
コンソールで交互に会話を繰り返すチャットでした。日本語を入力すれば日本語で応答します。
> Task :example:runExampleTwo
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by retrofit2.Platform (file:/home/wanko/.gradle/caches/modules-2/files-2.1/com.squareup.retrofit2/retrofit/2.9.0/d8fdfbd5da952141a665a403348b74538efc05ff/retrofit-2.9.0.jar) to constructor java.lang.invoke.MethodHandles$Lookup(java.lang.Class,int)
WARNING: Please consider reporting this to the maintainers of retrofit2.Platform
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
First Query:
<============SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Response: Sup dude, what's up? How can I help you today?
Next Query: unExampleTwo
<<=<=<======Response: Hey there! How's it going? What can I do for you?
Next Query: =-> 93% EXECUTING [6m 54s]
<==<========Response: Aw, you're leaving already? Alright then, have a great day! If you need anything in the future, just hit me up. Take care!
Next Query:
<=<=<=<=====Response: Sure thing! What can I help you with?
Next Query: =-> 93% EXECUTING [7m 30s]
<===========Response: オッケー、分かるよ。俺が手助けするさ。何か質問がある?
Next Query: =-> 93% EXECUTING [7m 42s]
<===========Response: あぁ、了解。終わるんだね。じゃあ、いつでも戻ってきてね!また何かあったら、気軽に話しかけてくれ。それじゃ、またね!93% EXECUTING [8m 5s]
<============-> 93% EXECUTING [8m 18s]
> :example:runExampleTwo
^C
sashirestela/simple-openai
前提
2024-04-23 コミット 08fee44f007846e7686f5eae83a0b13f349ba156
AlmaLinux release 8.9
OpenJDK 11.0.22
Apache Maven 3.9.6
サンプル image
「Run Examples」の手順通りでokです(「Azure OpenAI」キー設定は「image」では不要です)。
$ ./rundemo.sh image debug
4つの静止画が生成されました。
Maven でのテスト手法など お手本としてとても参考になります。
終わり
今流行りのAI分野は文字通り日進月歩ですね。幸い git 管理されたリソースは任意の状態を復元できるので助かります。
この記事が気に入ったらサポートをしてみませんか?