Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Documentação, parâmetros e códigos

Estou tentando rodar o Arquivo CategorizadorDeProdudos.java daí aparece esse erro aí:

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.service.OpenAiService.execute(OpenAiService.java:513) at com.theokanning.openai.service.OpenAiService.createChatCompletion(OpenAiService.java:148) at br.com.lima.chatbots.CategorizadorDeProdutos.main(CategorizadorDeProdutos.java:40) 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.service.AuthenticationInterceptor.intercept(AuthenticationInterceptor.java:28) 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) ... 3 more

6 respostas

Oi!

Deu timeout, por conta da API da OpenAI ter demorado muito para responder. Tente aumentar o timeout para ver se resolve.

Boa tarde Rodrigo!

Tentei aumentar o Timeout:

OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(30, TimeUnit.SECONDS) // Tempo limite para estabelecer a conexão .readTimeout(30, TimeUnit.SECONDS) // Tempo limite para a leitura dos dados .writeTimeout(30, TimeUnit.SECONDS) // Tempo limite para a escrita dos dados .build();

            Mesmo assim continua dando o mesmo erro!

Oi!

30 segundos é bem pouco tempo. Aumenta para uns 300 segundos :D

Tentei com 300, 600, 900 apareceu o mesmo erro! estava com a conexão via wiffi, troquei pra cabeada! pensando que poderia ser problema na conexão.

é agora? rs

Eu acabei de rodar aqui o projeto e funcionou certinho:

public class CategorizadorDeProdutos {

    public static void main(String[] args) {
        var user = "Escova de dentes";
        var system = "Você é um categorizador de produtos";

        var chave = System.getenv("OPENAI_API_KEY");
        var service = new OpenAiService(chave);

        var completionRequest = ChatCompletionRequest
                .builder()
                .model("gpt-4")
                .messages(Arrays.asList(
                        new ChatMessage(ChatMessageRole.USER.value(), user),
                        new ChatMessage(ChatMessageRole.SYSTEM.value(), system)
                ))
                .n(5)
                .build();

        service
                .createChatCompletion(completionRequest)
                .getChoices()
                .forEach(c -> {
                    System.out.println(c.getMessage().getContent());
                    System.out.println("------------------------");
                });
    }

}

Confere na sua conta da OpenAI se por acaso está sem saldo. Tenta disparar uma requisição via playground para ver se vai funcionar corretamente.

solução!

.n(1) .build();

Mudei para .n(1) é funcionou numa boa! rs