class dev.langchain4j.model.mistralai.MistralAiClient extends java.lang.Object
{
private static final org.slf4j.Logger LOGGER;
private static final com.google.gson.Gson GSON;
private final dev.langchain4j.model.mistralai.MistralAiApi mistralAiApi;
private final okhttp.OkHttpClient okHttpClient;
private final boolean logStreamingResponses;
void <init>(java.lang.String, java.lang.String, java.time.Duration, java.lang.Boolean, java.lang.Boolean)
{
dev.langchain4j.model.mistralai.MistralAiApiKeyInterceptor v;
dev.langchain4j.model.mistralai.MistralAiResponseLoggingInterceptor v;
com.google.gson.Gson v;
java.time.Duration v;
retrofit.converter.gson.GsonConverterFactory v;
java.lang.Boolean v, v;
java.lang.String v, v, v;
boolean v, v, v, v;
retrofit.Retrofit$Builder v, v, v, v;
java.lang.IllegalArgumentException v;
dev.langchain4j.model.mistralai.MistralAiRequestLoggingInterceptor v;
retrofit.Retrofit v;
dev.langchain4j.model.mistralai.MistralAiClient v;
okhttp.OkHttpClient v, v;
java.lang.Object v;
okhttp.OkHttpClient$Builder v, v, v, v, v;
v := @this: dev.langchain4j.model.mistralai.MistralAiClient;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.time.Duration;
v := @parameter: java.lang.Boolean;
v := @parameter: java.lang.Boolean;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new okhttp.OkHttpClient$Builder;
specialinvoke v.<okhttp.OkHttpClient$Builder: void <init>()>();
v = virtualinvoke v.<okhttp.OkHttpClient$Builder: okhttp.OkHttpClient$Builder callTimeout(java.time.Duration)>(v);
v = virtualinvoke v.<okhttp.OkHttpClient$Builder: okhttp.OkHttpClient$Builder connectTimeout(java.time.Duration)>(v);
v = virtualinvoke v.<okhttp.OkHttpClient$Builder: okhttp.OkHttpClient$Builder readTimeout(java.time.Duration)>(v);
v = virtualinvoke v.<okhttp.OkHttpClient$Builder: okhttp.OkHttpClient$Builder writeTimeout(java.time.Duration)>(v);
v = staticinvoke <dev.langchain4j.internal.Utils: boolean isNullOrBlank(java.lang.String)>(v);
if v == 0 goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("MistralAI API Key must be defined. It can be generated here: https://console.mistral.ai/user/api-keys/");
throw v;
label:
v = new dev.langchain4j.model.mistralai.MistralAiApiKeyInterceptor;
specialinvoke v.<dev.langchain4j.model.mistralai.MistralAiApiKeyInterceptor: void <init>(java.lang.String)>(v);
virtualinvoke v.<okhttp.OkHttpClient$Builder: okhttp.OkHttpClient$Builder addInterceptor(okhttp.Interceptor)>(v);
v = virtualinvoke v.<java.lang.Boolean: boolean booleanValue()>();
if v == 0 goto label;
v = new dev.langchain4j.model.mistralai.MistralAiRequestLoggingInterceptor;
specialinvoke v.<dev.langchain4j.model.mistralai.MistralAiRequestLoggingInterceptor: void <init>()>();
virtualinvoke v.<okhttp.OkHttpClient$Builder: okhttp.OkHttpClient$Builder addInterceptor(okhttp.Interceptor)>(v);
label:
v = virtualinvoke v.<java.lang.Boolean: boolean booleanValue()>();
if v == 0 goto label;
v = new dev.langchain4j.model.mistralai.MistralAiResponseLoggingInterceptor;
specialinvoke v.<dev.langchain4j.model.mistralai.MistralAiResponseLoggingInterceptor: void <init>()>();
virtualinvoke v.<okhttp.OkHttpClient$Builder: okhttp.OkHttpClient$Builder addInterceptor(okhttp.Interceptor)>(v);
label:
v = virtualinvoke v.<java.lang.Boolean: boolean booleanValue()>();
v.<dev.langchain4j.model.mistralai.MistralAiClient: boolean logStreamingResponses> = v;
v = virtualinvoke v.<okhttp.OkHttpClient$Builder: okhttp.OkHttpClient build()>();
v.<dev.langchain4j.model.mistralai.MistralAiClient: okhttp.OkHttpClient okHttpClient> = v;
v = new retrofit.Retrofit$Builder;
specialinvoke v.<retrofit.Retrofit$Builder: void <init>()>();
v = staticinvoke <dev.langchain4j.model.mistralai.MistralAiClient: java.lang.String formattedUrlForRetrofit(java.lang.String)>(v);
v = virtualinvoke v.<retrofit.Retrofit$Builder: retrofit.Retrofit$Builder baseUrl(java.lang.String)>(v);
v = v.<dev.langchain4j.model.mistralai.MistralAiClient: okhttp.OkHttpClient okHttpClient>;
v = virtualinvoke v.<retrofit.Retrofit$Builder: retrofit.Retrofit$Builder client(okhttp.OkHttpClient)>(v);
v = <dev.langchain4j.model.mistralai.MistralAiClient: com.google.gson.Gson GSON>;
v = staticinvoke <retrofit.converter.gson.GsonConverterFactory: retrofit.converter.gson.GsonConverterFactory create(com.google.gson.Gson)>(v);
v = virtualinvoke v.<retrofit.Retrofit$Builder: retrofit.Retrofit$Builder addConverterFactory(retrofit.Converter$Factory)>(v);
v = virtualinvoke v.<retrofit.Retrofit$Builder: retrofit.Retrofit build()>();
v = virtualinvoke v.<retrofit.Retrofit: java.lang.Object create(java.lang.Class)>(class "Ldev/langchain4j/model/mistralai/MistralAiApi;");
v.<dev.langchain4j.model.mistralai.MistralAiClient: dev.langchain4j.model.mistralai.MistralAiApi mistralAiApi> = v;
return;
}
private static java.lang.String formattedUrlForRetrofit(java.lang.String)
{
java.lang.String v, v;
boolean v;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.String: boolean endsWith(java.lang.String)>("/");
if v == 0 goto label;
v = v;
goto label;
label:
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001/");
label:
return v;
}
dev.langchain4j.model.mistralai.MistralAiChatCompletionResponse chatCompletion(dev.langchain4j.model.mistralai.MistralAiChatCompletionRequest)
{
dev.langchain4j.model.mistralai.MistralAiApi v;
java.io.IOException v;
java.lang.RuntimeException v, v;
retrofit.Response v;
dev.langchain4j.model.mistralai.MistralAiClient v;
dev.langchain4j.model.mistralai.MistralAiChatCompletionRequest v;
java.lang.Object v;
retrofit.Call v;
boolean v;
v := @this: dev.langchain4j.model.mistralai.MistralAiClient;
v := @parameter: dev.langchain4j.model.mistralai.MistralAiChatCompletionRequest;
label:
v = v.<dev.langchain4j.model.mistralai.MistralAiClient: dev.langchain4j.model.mistralai.MistralAiApi mistralAiApi>;
v = interfaceinvoke v.<dev.langchain4j.model.mistralai.MistralAiApi: retrofit.Call chatCompletion(dev.langchain4j.model.mistralai.MistralAiChatCompletionRequest)>(v);
v = interfaceinvoke v.<retrofit.Call: retrofit.Response execute()>();
v = virtualinvoke v.<retrofit.Response: boolean isSuccessful()>();
if v == 0 goto label;
v = virtualinvoke v.<retrofit.Response: java.lang.Object body()>();
label:
return v;
label:
v = specialinvoke v.<dev.langchain4j.model.mistralai.MistralAiClient: java.lang.RuntimeException toException(retrofit.Response)>(v);
throw v;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
catch java.io.IOException from label to label with label;
}
void streamingChatCompletion(dev.langchain4j.model.mistralai.MistralAiChatCompletionRequest, dev.langchain4j.model.StreamingResponseHandler)
{
okhttp.Request v;
dev.langchain4j.model.mistralai.MistralAiApi v;
okhttp.sse.EventSource$Factory v;
dev.langchain4j.model.StreamingResponseHandler v;
dev.langchain4j.model.mistralai.MistralAiClient v;
dev.langchain4j.model.mistralai.MistralAiChatCompletionRequest v;
okhttp.OkHttpClient v;
dev.langchain4j.model.mistralai.MistralAiClient$1 v;
retrofit.Call v;
v := @this: dev.langchain4j.model.mistralai.MistralAiClient;
v := @parameter: dev.langchain4j.model.mistralai.MistralAiChatCompletionRequest;
v := @parameter: dev.langchain4j.model.StreamingResponseHandler;
v = new dev.langchain4j.model.mistralai.MistralAiClient$1;
specialinvoke v.<dev.langchain4j.model.mistralai.MistralAiClient$1: void <init>(dev.langchain4j.model.mistralai.MistralAiClient,dev.langchain4j.model.StreamingResponseHandler)>(v, v);
v = v.<dev.langchain4j.model.mistralai.MistralAiClient: okhttp.OkHttpClient okHttpClient>;
v = staticinvoke <okhttp.sse.EventSources: okhttp.sse.EventSource$Factory createFactory(okhttp.OkHttpClient)>(v);
v = v.<dev.langchain4j.model.mistralai.MistralAiClient: dev.langchain4j.model.mistralai.MistralAiApi mistralAiApi>;
v = interfaceinvoke v.<dev.langchain4j.model.mistralai.MistralAiApi: retrofit.Call streamingChatCompletion(dev.langchain4j.model.mistralai.MistralAiChatCompletionRequest)>(v);
v = interfaceinvoke v.<retrofit.Call: okhttp.Request request()>();
interfaceinvoke v.<okhttp.sse.EventSource$Factory: okhttp.sse.EventSource newEventSource(okhttp.Request,okhttp.sse.EventSourceListener)>(v, v);
return;
}
dev.langchain4j.model.mistralai.MistralAiEmbeddingResponse embedding(dev.langchain4j.model.mistralai.MistralAiEmbeddingRequest)
{
dev.langchain4j.model.mistralai.MistralAiApi v;
java.io.IOException v;
java.lang.RuntimeException v, v;
retrofit.Response v;
dev.langchain4j.model.mistralai.MistralAiEmbeddingRequest v;
dev.langchain4j.model.mistralai.MistralAiClient v;
java.lang.Object v;
retrofit.Call v;
boolean v;
v := @this: dev.langchain4j.model.mistralai.MistralAiClient;
v := @parameter: dev.langchain4j.model.mistralai.MistralAiEmbeddingRequest;
label:
v = v.<dev.langchain4j.model.mistralai.MistralAiClient: dev.langchain4j.model.mistralai.MistralAiApi mistralAiApi>;
v = interfaceinvoke v.<dev.langchain4j.model.mistralai.MistralAiApi: retrofit.Call embedding(dev.langchain4j.model.mistralai.MistralAiEmbeddingRequest)>(v);
v = interfaceinvoke v.<retrofit.Call: retrofit.Response execute()>();
v = virtualinvoke v.<retrofit.Response: boolean isSuccessful()>();
if v == 0 goto label;
v = virtualinvoke v.<retrofit.Response: java.lang.Object body()>();
label:
return v;
label:
v = specialinvoke v.<dev.langchain4j.model.mistralai.MistralAiClient: java.lang.RuntimeException toException(retrofit.Response)>(v);
throw v;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
catch java.io.IOException from label to label with label;
}
dev.langchain4j.model.mistralai.MistralAiModelResponse listModels()
{
dev.langchain4j.model.mistralai.MistralAiApi v;
java.io.IOException v;
java.lang.RuntimeException v, v;
retrofit.Response v;
dev.langchain4j.model.mistralai.MistralAiClient v;
java.lang.Object v;
retrofit.Call v;
boolean v;
v := @this: dev.langchain4j.model.mistralai.MistralAiClient;
label:
v = v.<dev.langchain4j.model.mistralai.MistralAiClient: dev.langchain4j.model.mistralai.MistralAiApi mistralAiApi>;
v = interfaceinvoke v.<dev.langchain4j.model.mistralai.MistralAiApi: retrofit.Call models()>();
v = interfaceinvoke v.<retrofit.Call: retrofit.Response execute()>();
v = virtualinvoke v.<retrofit.Response: boolean isSuccessful()>();
if v == 0 goto label;
v = virtualinvoke v.<retrofit.Response: java.lang.Object body()>();
label:
return v;
label:
v = specialinvoke v.<dev.langchain4j.model.mistralai.MistralAiClient: java.lang.RuntimeException toException(retrofit.Response)>(v);
throw v;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
catch java.io.IOException from label to label with label;
}
private java.lang.RuntimeException toException(retrofit.Response) throws java.io.IOException
{
java.lang.Object[] v;
org.slf4j.Logger v;
java.lang.RuntimeException v, v;
retrofit.Response v;
java.lang.Integer v;
dev.langchain4j.model.mistralai.MistralAiClient v;
int v;
java.lang.String v, v, v;
okhttp.ResponseBody v;
v := @this: dev.langchain4j.model.mistralai.MistralAiClient;
v := @parameter: retrofit.Response;
v = virtualinvoke v.<retrofit.Response: int code()>();
if v < 400 goto label;
v = virtualinvoke v.<retrofit.Response: okhttp.ResponseBody errorBody()>();
if v == null goto label;
v = virtualinvoke v.<okhttp.ResponseBody: java.lang.String string()>();
v = newarray (java.lang.Object)[2];
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[0] = v;
v[1] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("status code: %s; body: %s", v);
v = <dev.langchain4j.model.mistralai.MistralAiClient: org.slf4j.Logger LOGGER>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Object)>("Error response: {}", v);
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String)>(v);
return v;
label:
v = new java.lang.RuntimeException;
v = virtualinvoke v.<retrofit.Response: java.lang.String message()>();
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String)>(v);
return v;
}
public static dev.langchain4j.model.mistralai.MistralAiClient$MistralAiClientBuilder builder()
{
dev.langchain4j.model.mistralai.MistralAiClient$MistralAiClientBuilder v;
v = new dev.langchain4j.model.mistralai.MistralAiClient$MistralAiClientBuilder;
specialinvoke v.<dev.langchain4j.model.mistralai.MistralAiClient$MistralAiClientBuilder: void <init>()>();
return v;
}
static void <clinit>()
{
com.google.gson.FieldNamingPolicy v;
org.slf4j.Logger v;
com.google.gson.Gson v;
com.google.gson.GsonBuilder v, v, v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Ldev/langchain4j/model/mistralai/MistralAiClient;");
<dev.langchain4j.model.mistralai.MistralAiClient: org.slf4j.Logger LOGGER> = v;
v = new com.google.gson.GsonBuilder;
specialinvoke v.<com.google.gson.GsonBuilder: void <init>()>();
v = <com.google.gson.FieldNamingPolicy: com.google.gson.FieldNamingPolicy LOWER_CASE_WITH_UNDERSCORES>;
v = virtualinvoke v.<com.google.gson.GsonBuilder: com.google.gson.GsonBuilder setFieldNamingPolicy(com.google.gson.FieldNamingPolicy)>(v);
v = virtualinvoke v.<com.google.gson.GsonBuilder: com.google.gson.GsonBuilder setPrettyPrinting()>();
v = virtualinvoke v.<com.google.gson.GsonBuilder: com.google.gson.Gson create()>();
<dev.langchain4j.model.mistralai.MistralAiClient: com.google.gson.Gson GSON> = v;
return;
}
}