質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

ChatGPT

ChatGPTは、OpenAI社の提供するインタラクティブなテキストコミュニケーションを行うことができるAIサービスまたは、そのアルゴリズムのモデル名です。

Q&A

解決済

1回答

1202閲覧

JavaでChatGPTクローンを作りたい

mooty

総合スコア1

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

ChatGPT

ChatGPTは、OpenAI社の提供するインタラクティブなテキストコミュニケーションを行うことができるAIサービスまたは、そのアルゴリズムのモデル名です。

0グッド

0クリップ

投稿2023/05/05 07:18

編集2023/05/05 09:45

JavaでChatGPTクローンを作りたくて,色々な記事を見ながら動かしてみたのですが,エラーがでてうまくいかないため助けてほしいです.

主に参考にしているのはこちらの記事で,TheoKanning/openai-javaを利用しています.
EclipseでMavenを使って下記のコードを実行しても,結果表示が出る前にエラーとなってしまいます.
どうやら20行目のところでタイムアウトしているようですが,原因がよくわからず困っています.

あとこの件と関係があるのかはわかりませんが,Eclipse上でソースコードのOpenAiServiceの部分に取り消し線がついているのですが,これはなぜなのでしょうか.

以上の問題について,ご回答いただけますと幸いです.
Java初心者なため分かっていないことが多いと思います.何か不足している情報があれば申し付けください.

問題のJavaソースコード

Java

1package test_gpt; 2 3import com.theokanning.openai.OpenAiService; 4import com.theokanning.openai.completion.CompletionChoice; 5import com.theokanning.openai.completion.CompletionRequest; 6 7@SuppressWarnings("deprecation") 8public class GPT3Chatbot { 9 public static void main(final String[] args) { 10 final var token = "APIキー"; 11 final var service = new OpenAiService(token); 12 final var prompt = "JavaでGPT3のAPIを使う方法を教えてください."; 13 14 System.out.println(prompt); 15 final var completionRequest = CompletionRequest.builder() 16 .model("text-davinci-003") 17 .prompt(prompt) 18 .maxTokens(512) 19 .build(); 20 final var completionResult = service.createCompletion(completionRequest); 21 System.out.println(">> "); 22 final var choiceList = completionResult.getChoices(); 23 for (final CompletionChoice choice : choiceList) { 24 System.out.println(choice); 25 } 26 } 27}

エラーメッセージ

JavaをでGPT3のAPIを使う方法を教えてください. Exception in thread "main" java.lang.RuntimeException: java.net.SocketTimeoutException: timeout at io.reactivex.internal.util.ExceptionHelper.wrapOrThrow(ExceptionHelper.java:45) at io.reactivex.internal.observers.BlockingMultiObserver.blockingGet(BlockingMultiObserver.java:90) at io.reactivex.Single.blockingGet(Single.java:2002) at com.theokanning.openai.OpenAiService.createCompletion(OpenAiService.java:122) at test_gpt.GPT3Chatbot.main(GPT3Chatbot.java:20) Caused by: java.net.SocketTimeoutException: timeout at okhttp3.internal.http2.Http2Stream$StreamTimeout.newTimeoutException(Http2Stream.java:678) at okhttp3.internal.http2.Http2Stream$StreamTimeout.exitAndThrowIfTimedOut(Http2Stream.java:686) at okhttp3.internal.http2.Http2Stream.takeHeaders(Http2Stream.java:154) at okhttp3.internal.http2.Http2ExchangeCodec.readResponseHeaders(Http2ExchangeCodec.java:136) at okhttp3.internal.connection.Exchange.readResponseHeaders(Exchange.java:115) at okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.java:94) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:43) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117) at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:94) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117) at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:88) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117) at com.theokanning.openai.AuthenticationInterceptor.intercept(AuthenticationInterceptor.java:26) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117) at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:229) at okhttp3.RealCall.execute(RealCall.java:81) at retrofit2.OkHttpCall.execute(OkHttpCall.java:204) at retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(CallExecuteObservable.java:46) at io.reactivex.Observable.subscribe(Observable.java:10151) at retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(BodyObservable.java:35) at io.reactivex.Observable.subscribe(Observable.java:10151) at io.reactivex.internal.operators.observable.ObservableSingleSingle.subscribeActual(ObservableSingleSingle.java:35) at io.reactivex.Single.subscribe(Single.java:2517) at io.reactivex.Single.blockingGet(Single.java:2001) ... 2 more

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

下記によると、課金すると解決するそうです。
https://github.com/TheoKanning/openai-java/issues/85

adding a credit card to my new account ended up resolving the issue despite the fact that the free account provides $18 in credit.

クレジットカードを用意して、OPEN AIのサイトで支払登録しましょう。

どうでもいいですけど、これってクローンでもなんでもないですね。ただAPIをたたいてその出力をクライアントに出すだけのものじゃないかと。

投稿2023/05/05 08:02

編集2023/05/05 08:04
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mooty

2023/05/05 09:42

確かにクレジットがないキーで実行していました.申し訳ありません. ただ,登録時の$5の無料クレジットがあるアカウントのキーで実行しなおしましたところ,今度はタイムアウトするようになってしまいました... > どうでもいいですけど、これってクローンでもなんでもないですね。ただAPIをたたいてその出力をクライアントに出すだけのものじゃないかと。 質問内容とは直接関係ないですが気になったので. こういう場合のクローンってどんなもののことを指すんですか? 自分は「同じシステム(API)で動く異なるインターフェースを持つもの」みたいなイメージだったのですが,間違っていましたか?普通に調べても遺伝子系の話ばかりで,どう調べたらいいのかも分からないです.
episteme

2023/05/06 01:18 編集

プログラミングにおいてクローンは「複製」すなわち全く同じコピーを生成することなんだけども、 アプリケーション/ライブラリにおいては「見た目(インタフェース)は同じだがナカミ(実装)は異なる」ものを指すみたい。 # とある言語で実装された機能を他の言語から呼び出す(当然異API)やつはラッパー/ブリッジ/バインディングかな
mooty

2023/05/06 03:39

なるほど,真逆の認識をしていたみたいですね. 今回は同じAPIを使ってるものなんでクローンとは呼べそうにないですね. 勉強になりました!ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問