public class dev.langchain4j.model.vertexai.VertexAiChatModel extends java.lang.Object implements dev.langchain4j.model.chat.ChatLanguageModel
{
private final com.google.cloud.aiplatform.v.PredictionServiceSettings settings;
private final com.google.cloud.aiplatform.v.EndpointName endpointName;
private final dev.langchain4j.model.vertexai.VertexAiParameters vertexAiParameters;
private final java.lang.Integer maxRetries;
public void <init>(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.Double, java.lang.Integer, java.lang.Integer, java.lang.Double, java.lang.Integer)
{
java.lang.Double v, v;
dev.langchain4j.model.vertexai.VertexAiParameters v;
java.lang.Integer v, v, v, v;
com.google.cloud.aiplatform.v.EndpointName v;
int v;
java.lang.String v, v, v, v, v, v, v, v, v, v;
java.io.IOException v;
java.lang.RuntimeException v;
com.google.cloud.aiplatform.v.PredictionServiceSettings v;
com.google.api.gax.rpc.ClientSettings$Builder v;
com.google.cloud.aiplatform.v.PredictionServiceSettings$Builder v;
dev.langchain4j.model.vertexai.VertexAiChatModel v;
v := @this: dev.langchain4j.model.vertexai.VertexAiChatModel;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Double;
v := @parameter: java.lang.Integer;
v := @parameter: java.lang.Integer;
v := @parameter: java.lang.Double;
v := @parameter: java.lang.Integer;
specialinvoke v.<java.lang.Object: void <init>()>();
label:
v = staticinvoke <com.google.cloud.aiplatform.v.PredictionServiceSettings: com.google.cloud.aiplatform.v.PredictionServiceSettings$Builder newBuilder()>();
v = staticinvoke <dev.langchain4j.internal.ValidationUtils: java.lang.String ensureNotBlank(java.lang.String,java.lang.String)>(v, "endpoint");
v = virtualinvoke v.<com.google.cloud.aiplatform.v.PredictionServiceSettings$Builder: com.google.api.gax.rpc.ClientSettings$Builder setEndpoint(java.lang.String)>(v);
v = virtualinvoke v.<com.google.cloud.aiplatform.v.PredictionServiceSettings$Builder: com.google.cloud.aiplatform.v.PredictionServiceSettings build()>();
v.<dev.langchain4j.model.vertexai.VertexAiChatModel: com.google.cloud.aiplatform.v.PredictionServiceSettings settings> = v;
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
v = staticinvoke <dev.langchain4j.internal.ValidationUtils: java.lang.String ensureNotBlank(java.lang.String,java.lang.String)>(v, "project");
v = staticinvoke <dev.langchain4j.internal.ValidationUtils: java.lang.String ensureNotBlank(java.lang.String,java.lang.String)>(v, "location");
v = staticinvoke <dev.langchain4j.internal.ValidationUtils: java.lang.String ensureNotBlank(java.lang.String,java.lang.String)>(v, "publisher");
v = staticinvoke <dev.langchain4j.internal.ValidationUtils: java.lang.String ensureNotBlank(java.lang.String,java.lang.String)>(v, "modelName");
v = staticinvoke <com.google.cloud.aiplatform.v.EndpointName: com.google.cloud.aiplatform.v.EndpointName ofProjectLocationPublisherModelName(java.lang.String,java.lang.String,java.lang.String,java.lang.String)>(v, v, v, v);
v.<dev.langchain4j.model.vertexai.VertexAiChatModel: com.google.cloud.aiplatform.v.EndpointName endpointName> = v;
v = new dev.langchain4j.model.vertexai.VertexAiParameters;
specialinvoke v.<dev.langchain4j.model.vertexai.VertexAiParameters: void <init>(java.lang.Double,java.lang.Integer,java.lang.Integer,java.lang.Double)>(v, v, v, v);
v.<dev.langchain4j.model.vertexai.VertexAiChatModel: dev.langchain4j.model.vertexai.VertexAiParameters vertexAiParameters> = v;
if v != null goto label;
v = 3;
goto label;
label:
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
label:
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v.<dev.langchain4j.model.vertexai.VertexAiChatModel: java.lang.Integer maxRetries> = v;
return;
catch java.io.IOException from label to label with label;
}
public dev.langchain4j.model.output.Response generate(java.util.List)
{
dev.langchain4j.model.output.TokenUsage v;
com.google.cloud.aiplatform.v.PredictionServiceClient v;
dev.langchain4j.model.vertexai.VertexAiParameters v;
java.lang.Integer v, v, v;
com.google.protobuf.util.JsonFormat$Parser v, v;
com.google.protobuf.Value$Builder v, v;
java.util.List v, v, v;
dev.langchain4j.model.vertexai.VertexAiChatModel v;
java.lang.Throwable v;
dev.langchain4j.model.vertexai.VertexAiChatInstance v;
java.util.concurrent.Callable v;
int v, v, v;
com.google.protobuf.Value v, v;
java.lang.String v, v, v, v;
dev.langchain4j.data.message.AiMessage v;
java.io.IOException v;
dev.langchain4j.model.output.Response v;
java.lang.RuntimeException v;
com.google.cloud.aiplatform.v.PredictionServiceSettings v;
java.lang.Object v;
v := @this: dev.langchain4j.model.vertexai.VertexAiChatModel;
v := @parameter: java.util.List;
label:
v = v.<dev.langchain4j.model.vertexai.VertexAiChatModel: com.google.cloud.aiplatform.v.PredictionServiceSettings settings>;
v = staticinvoke <com.google.cloud.aiplatform.v.PredictionServiceClient: com.google.cloud.aiplatform.v.PredictionServiceClient create(com.google.cloud.aiplatform.v.PredictionServiceSettings)>(v);
label:
v = new dev.langchain4j.model.vertexai.VertexAiChatInstance;
v = staticinvoke <dev.langchain4j.model.vertexai.VertexAiChatModel: java.lang.String toContext(java.util.List)>(v);
v = staticinvoke <dev.langchain4j.model.vertexai.VertexAiChatModel: java.util.List toVertexMessages(java.util.List)>(v);
specialinvoke v.<dev.langchain4j.model.vertexai.VertexAiChatInstance: void <init>(java.lang.String,java.util.List)>(v, v);
v = staticinvoke <com.google.protobuf.Value: com.google.protobuf.Value$Builder newBuilder()>();
v = staticinvoke <com.google.protobuf.util.JsonFormat: com.google.protobuf.util.JsonFormat$Parser parser()>();
v = staticinvoke <dev.langchain4j.internal.Json: java.lang.String toJson(java.lang.Object)>(v);
virtualinvoke v.<com.google.protobuf.util.JsonFormat$Parser: void merge(java.lang.String,com.google.protobuf.Message$Builder)>(v, v);
v = virtualinvoke v.<com.google.protobuf.Value$Builder: com.google.protobuf.Value build()>();
v = staticinvoke <java.util.Collections: java.util.List singletonList(java.lang.Object)>(v);
v = staticinvoke <com.google.protobuf.Value: com.google.protobuf.Value$Builder newBuilder()>();
v = staticinvoke <com.google.protobuf.util.JsonFormat: com.google.protobuf.util.JsonFormat$Parser parser()>();
v = v.<dev.langchain4j.model.vertexai.VertexAiChatModel: dev.langchain4j.model.vertexai.VertexAiParameters vertexAiParameters>;
v = staticinvoke <dev.langchain4j.internal.Json: java.lang.String toJson(java.lang.Object)>(v);
virtualinvoke v.<com.google.protobuf.util.JsonFormat$Parser: void merge(java.lang.String,com.google.protobuf.Message$Builder)>(v, v);
v = virtualinvoke v.<com.google.protobuf.Value$Builder: com.google.protobuf.Value build()>();
v = staticinvoke <dev.langchain4j.model.vertexai.VertexAiChatModel$lambda_generate_0__1: java.util.concurrent.Callable bootstrap$(dev.langchain4j.model.vertexai.VertexAiChatModel,com.google.cloud.aiplatform.v.PredictionServiceClient,java.util.List,com.google.protobuf.Value)>(v, v, v, v);
v = v.<dev.langchain4j.model.vertexai.VertexAiChatModel: java.lang.Integer maxRetries>;
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v = staticinvoke <dev.langchain4j.internal.RetryUtils: java.lang.Object withRetry(java.util.concurrent.Callable,int)>(v, v);
v = staticinvoke <dev.langchain4j.model.vertexai.VertexAiChatModel: java.lang.String extractContent(com.google.cloud.aiplatform.v.PredictResponse)>(v);
v = staticinvoke <dev.langchain4j.data.message.AiMessage: dev.langchain4j.data.message.AiMessage 'from'(java.lang.String)>(v);
v = new dev.langchain4j.model.output.TokenUsage;
v = staticinvoke <dev.langchain4j.model.vertexai.VertexAiChatModel: int extractTokenCount(com.google.cloud.aiplatform.v.PredictResponse,java.lang.String)>(v, "inputTokenCount");
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v = staticinvoke <dev.langchain4j.model.vertexai.VertexAiChatModel: int extractTokenCount(com.google.cloud.aiplatform.v.PredictResponse,java.lang.String)>(v, "outputTokenCount");
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
specialinvoke v.<dev.langchain4j.model.output.TokenUsage: void <init>(java.lang.Integer,java.lang.Integer)>(v, v);
v = staticinvoke <dev.langchain4j.model.output.Response: dev.langchain4j.model.output.Response 'from'(java.lang.Object,dev.langchain4j.model.output.TokenUsage)>(v, v);
label:
if v == null goto label;
virtualinvoke v.<com.google.cloud.aiplatform.v.PredictionServiceClient: void close()>();
label:
return v;
label:
v := @caughtexception;
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.lang.Throwable from label to label with label;
catch java.io.IOException from label to label with label;
}
private static java.lang.String extractContent(com.google.cloud.aiplatform.v.PredictResponse)
{
com.google.protobuf.Struct v, v;
com.google.cloud.aiplatform.v.PredictResponse v;
com.google.protobuf.ListValue v;
java.util.Map v, v;
java.lang.Object v, v;
com.google.protobuf.Value v, v;
java.lang.String v;
v := @parameter: com.google.cloud.aiplatform.v.PredictResponse;
v = virtualinvoke v.<com.google.cloud.aiplatform.v.PredictResponse: com.google.protobuf.Value getPredictions(int)>(0);
v = virtualinvoke v.<com.google.protobuf.Value: com.google.protobuf.Struct getStructValue()>();
v = virtualinvoke v.<com.google.protobuf.Struct: java.util.Map getFieldsMap()>();
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("candidates");
v = virtualinvoke v.<com.google.protobuf.Value: com.google.protobuf.ListValue getListValue()>();
v = virtualinvoke v.<com.google.protobuf.ListValue: com.google.protobuf.Value getValues(int)>(0);
v = virtualinvoke v.<com.google.protobuf.Value: com.google.protobuf.Struct getStructValue()>();
v = virtualinvoke v.<com.google.protobuf.Struct: java.util.Map getFieldsMap()>();
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("content");
v = virtualinvoke v.<com.google.protobuf.Value: java.lang.String getStringValue()>();
return v;
}
static int extractTokenCount(com.google.cloud.aiplatform.v.PredictResponse, java.lang.String)
{
com.google.protobuf.Struct v, v, v;
com.google.cloud.aiplatform.v.PredictResponse v;
java.util.Map v, v, v;
java.lang.Object v, v, v;
com.google.protobuf.Value v;
java.lang.String v;
double v;
v := @parameter: com.google.cloud.aiplatform.v.PredictResponse;
v := @parameter: java.lang.String;
v = virtualinvoke v.<com.google.cloud.aiplatform.v.PredictResponse: com.google.protobuf.Value getMetadata()>();
v = virtualinvoke v.<com.google.protobuf.Value: com.google.protobuf.Struct getStructValue()>();
v = virtualinvoke v.<com.google.protobuf.Struct: java.util.Map getFieldsMap()>();
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("tokenMetadata");
v = virtualinvoke v.<com.google.protobuf.Value: com.google.protobuf.Struct getStructValue()>();
v = virtualinvoke v.<com.google.protobuf.Struct: java.util.Map getFieldsMap()>();
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
v = virtualinvoke v.<com.google.protobuf.Value: com.google.protobuf.Struct getStructValue()>();
v = virtualinvoke v.<com.google.protobuf.Struct: java.util.Map getFieldsMap()>();
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("totalTokens");
v = virtualinvoke v.<com.google.protobuf.Value: double getNumberValue()>();
return v;
}
private static java.util.List toVertexMessages(java.util.List)
{
java.util.function.Predicate v;
java.util.function.Function v;
java.util.List v;
java.util.stream.Stream v, v, v;
java.lang.Object v;
java.util.stream.Collector v;
v := @parameter: java.util.List;
v = interfaceinvoke v.<java.util.List: java.util.stream.Stream stream()>();
v = staticinvoke <dev.langchain4j.model.vertexai.VertexAiChatModel$lambda_toVertexMessages_1__2: java.util.function.Predicate bootstrap$()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.util.stream.Stream filter(java.util.function.Predicate)>(v);
v = staticinvoke <dev.langchain4j.model.vertexai.VertexAiChatModel$lambda_toVertexMessages_2__3: java.util.function.Function bootstrap$()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.util.stream.Stream map(java.util.function.Function)>(v);
v = staticinvoke <java.util.stream.Collectors: java.util.stream.Collector toList()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.lang.Object collect(java.util.stream.Collector)>(v);
return v;
}
private static java.lang.String toContext(java.util.List)
{
java.util.function.Predicate v;
java.util.function.Function v;
java.util.List v;
java.util.stream.Stream v, v, v;
java.lang.Object v;
java.util.stream.Collector v;
v := @parameter: java.util.List;
v = interfaceinvoke v.<java.util.List: java.util.stream.Stream stream()>();
v = staticinvoke <dev.langchain4j.model.vertexai.VertexAiChatModel$lambda_toContext_3__4: java.util.function.Predicate bootstrap$()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.util.stream.Stream filter(java.util.function.Predicate)>(v);
v = staticinvoke <dev.langchain4j.model.vertexai.VertexAiChatModel$text__5: java.util.function.Function bootstrap$()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.util.stream.Stream map(java.util.function.Function)>(v);
v = staticinvoke <java.util.stream.Collectors: java.util.stream.Collector joining(java.lang.CharSequence)>("\n");
v = interfaceinvoke v.<java.util.stream.Stream: java.lang.Object collect(java.util.stream.Collector)>(v);
return v;
}
public static dev.langchain4j.model.vertexai.VertexAiChatModel$Builder builder()
{
java.util.Iterator v;
dev.langchain4j.model.vertexai.VertexAiChatModel$Builder v;
java.util.Collection v;
java.lang.Object v, v;
boolean v;
v = staticinvoke <dev.langchain4j.spi.ServiceHelper: java.util.Collection loadFactories(java.lang.Class)>(class "Ldev/langchain4j/model/vertexai/spi/VertexAiChatModelBuilderFactory;");
v = interfaceinvoke v.<java.util.Collection: java.util.Iterator iterator()>();
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = interfaceinvoke v.<dev.langchain4j.model.vertexai.spi.VertexAiChatModelBuilderFactory: java.lang.Object get()>();
return v;
label:
v = new dev.langchain4j.model.vertexai.VertexAiChatModel$Builder;
specialinvoke v.<dev.langchain4j.model.vertexai.VertexAiChatModel$Builder: void <init>()>();
return v;
}
}