public class dev.langchain4j.model.qianfan.QianfanStreamingChatModel extends java.lang.Object implements dev.langchain4j.model.chat.StreamingChatLanguageModel
{
private final dev.langchain4j.model.qianfan.client.QianfanClient client;
private final java.lang.String baseUrl;
private final java.lang.Double temperature;
private final java.lang.Double topP;
private final java.lang.String modelName;
private final java.lang.String endpoint;
private final java.lang.Double penaltyScore;
private final java.lang.String responseFormat;
public void <init>(java.lang.String, java.lang.String, java.lang.String, java.lang.Double, java.lang.Double, java.lang.String, java.lang.String, java.lang.String, java.lang.Double, java.lang.Boolean, java.lang.Boolean)
{
dev.langchain4j.model.qianfan.client.QianfanClient$Builder v, v, v, v, v, v;
dev.langchain4j.model.qianfan.QianfanStreamingChatModel v;
java.lang.Double v, v, v, v;
java.lang.Boolean v, v;
java.lang.String v, v, v, v, v, v, v, v, v;
boolean v, v, v, v;
java.lang.IllegalArgumentException v, v;
dev.langchain4j.model.qianfan.client.QianfanClient v;
java.lang.Object v, v;
v := @this: dev.langchain4j.model.qianfan.QianfanStreamingChatModel;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Double;
v := @parameter: java.lang.Double;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Double;
v := @parameter: java.lang.Boolean;
v := @parameter: java.lang.Boolean;
specialinvoke v.<java.lang.Object: void <init>()>();
v = staticinvoke <dev.langchain4j.internal.Utils: boolean isNullOrBlank(java.lang.String)>(v);
if v != 0 goto label;
v = staticinvoke <dev.langchain4j.internal.Utils: boolean isNullOrBlank(java.lang.String)>(v);
if v == 0 goto label;
label:
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(" api key and secret key must be defined. It can be generated here: https://console.bce.baidu.com/qianfan/ais/console/applicationConsole/application");
throw v;
label:
v.<dev.langchain4j.model.qianfan.QianfanStreamingChatModel: java.lang.String modelName> = v;
v = staticinvoke <dev.langchain4j.internal.Utils: boolean isNullOrBlank(java.lang.String)>(v);
if v == 0 goto label;
v = staticinvoke <dev.langchain4j.model.qianfan.QianfanChatModelNameEnum: java.lang.String getEndpoint(java.lang.String)>(v);
goto label;
label:
v = v;
label:
v.<dev.langchain4j.model.qianfan.QianfanStreamingChatModel: java.lang.String endpoint> = v;
v = v.<dev.langchain4j.model.qianfan.QianfanStreamingChatModel: java.lang.String endpoint>;
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)>("Qianfan is no such model name. You can see model name here: https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Nlks5zkzu");
throw v;
label:
v = staticinvoke <dev.langchain4j.internal.Utils: java.lang.Object getOrDefault(java.lang.Object,java.lang.Object)>(v, "https://aip.baidubce.com");
v.<dev.langchain4j.model.qianfan.QianfanStreamingChatModel: java.lang.String baseUrl> = v;
v = staticinvoke <dev.langchain4j.model.qianfan.client.QianfanClient: dev.langchain4j.model.qianfan.client.QianfanClient$Builder builder()>();
v = v.<dev.langchain4j.model.qianfan.QianfanStreamingChatModel: java.lang.String baseUrl>;
v = virtualinvoke v.<dev.langchain4j.model.qianfan.client.QianfanClient$Builder: dev.langchain4j.model.qianfan.client.QianfanClient$Builder baseUrl(java.lang.String)>(v);
v = virtualinvoke v.<dev.langchain4j.model.qianfan.client.QianfanClient$Builder: dev.langchain4j.model.qianfan.client.QianfanClient$Builder apiKey(java.lang.String)>(v);
v = virtualinvoke v.<dev.langchain4j.model.qianfan.client.QianfanClient$Builder: dev.langchain4j.model.qianfan.client.QianfanClient$Builder secretKey(java.lang.String)>(v);
v = virtualinvoke v.<dev.langchain4j.model.qianfan.client.QianfanClient$Builder: dev.langchain4j.model.qianfan.client.QianfanClient$Builder logRequests(java.lang.Boolean)>(v);
v = virtualinvoke v.<dev.langchain4j.model.qianfan.client.QianfanClient$Builder: dev.langchain4j.model.qianfan.client.QianfanClient$Builder logStreamingResponses(java.lang.Boolean)>(v);
v = virtualinvoke v.<dev.langchain4j.model.qianfan.client.QianfanClient$Builder: dev.langchain4j.model.qianfan.client.QianfanClient build()>();
v.<dev.langchain4j.model.qianfan.QianfanStreamingChatModel: dev.langchain4j.model.qianfan.client.QianfanClient client> = v;
v = staticinvoke <java.lang.Double: java.lang.Double valueOf(double)>(0.7);
v = staticinvoke <dev.langchain4j.internal.Utils: java.lang.Object getOrDefault(java.lang.Object,java.lang.Object)>(v, v);
v.<dev.langchain4j.model.qianfan.QianfanStreamingChatModel: java.lang.Double temperature> = v;
v.<dev.langchain4j.model.qianfan.QianfanStreamingChatModel: java.lang.Double topP> = v;
v.<dev.langchain4j.model.qianfan.QianfanStreamingChatModel: java.lang.Double penaltyScore> = v;
v.<dev.langchain4j.model.qianfan.QianfanStreamingChatModel: java.lang.String responseFormat> = v;
return;
}
public void generate(java.util.List, dev.langchain4j.model.StreamingResponseHandler)
{
dev.langchain4j.model.StreamingResponseHandler v;
java.util.List v;
dev.langchain4j.model.qianfan.QianfanStreamingChatModel v;
v := @this: dev.langchain4j.model.qianfan.QianfanStreamingChatModel;
v := @parameter: java.util.List;
v := @parameter: dev.langchain4j.model.StreamingResponseHandler;
specialinvoke v.<dev.langchain4j.model.qianfan.QianfanStreamingChatModel: void generate(java.util.List,java.util.List,dev.langchain4j.agent.tool.ToolSpecification,dev.langchain4j.model.StreamingResponseHandler)>(v, null, null, v);
return;
}
public void generate(java.util.List, java.util.List, dev.langchain4j.model.StreamingResponseHandler)
{
dev.langchain4j.model.StreamingResponseHandler v;
java.util.List v, v;
dev.langchain4j.model.qianfan.QianfanStreamingChatModel v;
v := @this: dev.langchain4j.model.qianfan.QianfanStreamingChatModel;
v := @parameter: java.util.List;
v := @parameter: java.util.List;
v := @parameter: dev.langchain4j.model.StreamingResponseHandler;
specialinvoke v.<dev.langchain4j.model.qianfan.QianfanStreamingChatModel: void generate(java.util.List,java.util.List,dev.langchain4j.agent.tool.ToolSpecification,dev.langchain4j.model.StreamingResponseHandler)>(v, v, null, v);
return;
}
public void generate(java.util.List, dev.langchain4j.agent.tool.ToolSpecification, dev.langchain4j.model.StreamingResponseHandler)
{
dev.langchain4j.model.StreamingResponseHandler v;
java.util.List v;
dev.langchain4j.agent.tool.ToolSpecification v;
dev.langchain4j.model.qianfan.QianfanStreamingChatModel v;
java.lang.RuntimeException v;
v := @this: dev.langchain4j.model.qianfan.QianfanStreamingChatModel;
v := @parameter: java.util.List;
v := @parameter: dev.langchain4j.agent.tool.ToolSpecification;
v := @parameter: dev.langchain4j.model.StreamingResponseHandler;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String)>("Not supported");
throw v;
}
private void generate(java.util.List, java.util.List, dev.langchain4j.agent.tool.ToolSpecification, dev.langchain4j.model.StreamingResponseHandler)
{
dev.langchain4j.agent.tool.ToolSpecification v;
dev.langchain4j.model.qianfan.QianfanStreamingChatModel v;
java.lang.Double v, v, v;
java.lang.Runnable v;
dev.langchain4j.model.StreamingResponseHandler v;
dev.langchain4j.model.qianfan.client.chat.ChatCompletionRequest v;
dev.langchain4j.model.qianfan.client.StreamingCompletionHandling v;
dev.langchain4j.model.qianfan.client.chat.ChatCompletionRequest$Builder v, v, v, v, v, v, v;
java.lang.String v, v, v;
boolean v;
dev.langchain4j.model.qianfan.client.StreamingResponseHandling v;
dev.langchain4j.model.qianfan.client.SyncOrAsyncOrStreaming v;
java.util.function.Consumer v, v;
java.util.List v, v, v, v;
dev.langchain4j.model.qianfan.client.QianfanClient v;
dev.langchain4j.model.qianfan.client.ErrorHandling v;
dev.langchain4j.model.qianfan.client.QianfanStreamingResponseBuilder v;
v := @this: dev.langchain4j.model.qianfan.QianfanStreamingChatModel;
v := @parameter: java.util.List;
v := @parameter: java.util.List;
v := @parameter: dev.langchain4j.agent.tool.ToolSpecification;
v := @parameter: dev.langchain4j.model.StreamingResponseHandler;
v = staticinvoke <dev.langchain4j.model.qianfan.client.chat.ChatCompletionRequest: dev.langchain4j.model.qianfan.client.chat.ChatCompletionRequest$Builder builder()>();
v = staticinvoke <dev.langchain4j.model.qianfan.InternalQianfanHelper: java.util.List toOpenAiMessages(java.util.List)>(v);
v = virtualinvoke v.<dev.langchain4j.model.qianfan.client.chat.ChatCompletionRequest$Builder: dev.langchain4j.model.qianfan.client.chat.ChatCompletionRequest$Builder messages(java.util.List)>(v);
v = v.<dev.langchain4j.model.qianfan.QianfanStreamingChatModel: java.lang.Double temperature>;
v = virtualinvoke v.<dev.langchain4j.model.qianfan.client.chat.ChatCompletionRequest$Builder: dev.langchain4j.model.qianfan.client.chat.ChatCompletionRequest$Builder temperature(java.lang.Double)>(v);
v = v.<dev.langchain4j.model.qianfan.QianfanStreamingChatModel: java.lang.Double topP>;
v = virtualinvoke v.<dev.langchain4j.model.qianfan.client.chat.ChatCompletionRequest$Builder: dev.langchain4j.model.qianfan.client.chat.ChatCompletionRequest$Builder topP(java.lang.Double)>(v);
v = staticinvoke <dev.langchain4j.model.qianfan.InternalQianfanHelper: java.lang.String getSystemMessage(java.util.List)>(v);
v = virtualinvoke v.<dev.langchain4j.model.qianfan.client.chat.ChatCompletionRequest$Builder: dev.langchain4j.model.qianfan.client.chat.ChatCompletionRequest$Builder system(java.lang.String)>(v);
v = v.<dev.langchain4j.model.qianfan.QianfanStreamingChatModel: java.lang.String responseFormat>;
v = virtualinvoke v.<dev.langchain4j.model.qianfan.client.chat.ChatCompletionRequest$Builder: dev.langchain4j.model.qianfan.client.chat.ChatCompletionRequest$Builder responseFormat(java.lang.String)>(v);
v = v.<dev.langchain4j.model.qianfan.QianfanStreamingChatModel: java.lang.Double penaltyScore>;
v = virtualinvoke v.<dev.langchain4j.model.qianfan.client.chat.ChatCompletionRequest$Builder: dev.langchain4j.model.qianfan.client.chat.ChatCompletionRequest$Builder penaltyScore(java.lang.Double)>(v);
if v == null goto label;
v = interfaceinvoke v.<java.util.List: boolean isEmpty()>();
if v != 0 goto label;
v = staticinvoke <dev.langchain4j.model.qianfan.InternalQianfanHelper: java.util.List toFunctions(java.util.Collection)>(v);
virtualinvoke v.<dev.langchain4j.model.qianfan.client.chat.ChatCompletionRequest$Builder: dev.langchain4j.model.qianfan.client.chat.ChatCompletionRequest$Builder functions(java.util.List)>(v);
label:
v = virtualinvoke v.<dev.langchain4j.model.qianfan.client.chat.ChatCompletionRequest$Builder: dev.langchain4j.model.qianfan.client.chat.ChatCompletionRequest build()>();
v = new dev.langchain4j.model.qianfan.client.QianfanStreamingResponseBuilder;
specialinvoke v.<dev.langchain4j.model.qianfan.client.QianfanStreamingResponseBuilder: void <init>(java.lang.Integer)>(null);
v = v.<dev.langchain4j.model.qianfan.QianfanStreamingChatModel: dev.langchain4j.model.qianfan.client.QianfanClient client>;
v = v.<dev.langchain4j.model.qianfan.QianfanStreamingChatModel: java.lang.String endpoint>;
v = virtualinvoke v.<dev.langchain4j.model.qianfan.client.QianfanClient: dev.langchain4j.model.qianfan.client.SyncOrAsyncOrStreaming chatCompletion(dev.langchain4j.model.qianfan.client.chat.ChatCompletionRequest,java.lang.String)>(v, v);
v = staticinvoke <dev.langchain4j.model.qianfan.QianfanStreamingChatModel$lambda_generate_0__26: java.util.function.Consumer bootstrap$(dev.langchain4j.model.qianfan.client.QianfanStreamingResponseBuilder,dev.langchain4j.model.StreamingResponseHandler)>(v, v);
v = interfaceinvoke v.<dev.langchain4j.model.qianfan.client.SyncOrAsyncOrStreaming: dev.langchain4j.model.qianfan.client.StreamingResponseHandling onPartialResponse(java.util.function.Consumer)>(v);
v = staticinvoke <dev.langchain4j.model.qianfan.QianfanStreamingChatModel$lambda_generate_1__27: java.lang.Runnable bootstrap$(dev.langchain4j.model.qianfan.client.QianfanStreamingResponseBuilder,dev.langchain4j.model.StreamingResponseHandler)>(v, v);
v = interfaceinvoke v.<dev.langchain4j.model.qianfan.client.StreamingResponseHandling: dev.langchain4j.model.qianfan.client.StreamingCompletionHandling onComplete(java.lang.Runnable)>(v);
virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = staticinvoke <dev.langchain4j.model.qianfan.QianfanStreamingChatModel$onError__28: java.util.function.Consumer bootstrap$(dev.langchain4j.model.StreamingResponseHandler)>(v);
v = interfaceinvoke v.<dev.langchain4j.model.qianfan.client.StreamingCompletionHandling: dev.langchain4j.model.qianfan.client.ErrorHandling onError(java.util.function.Consumer)>(v);
interfaceinvoke v.<dev.langchain4j.model.qianfan.client.ErrorHandling: void execute()>();
return;
}
private static void handle(dev.langchain4j.model.qianfan.client.chat.ChatCompletionResponse, dev.langchain4j.model.StreamingResponseHandler)
{
dev.langchain4j.model.StreamingResponseHandler v;
dev.langchain4j.model.qianfan.client.chat.ChatCompletionResponse v;
java.lang.String v;
boolean v;
v := @parameter: dev.langchain4j.model.qianfan.client.chat.ChatCompletionResponse;
v := @parameter: dev.langchain4j.model.StreamingResponseHandler;
v = virtualinvoke v.<dev.langchain4j.model.qianfan.client.chat.ChatCompletionResponse: java.lang.String getResult()>();
v = staticinvoke <dev.langchain4j.internal.Utils: boolean isNullOrBlank(java.lang.String)>(v);
if v == 0 goto label;
return;
label:
interfaceinvoke v.<dev.langchain4j.model.StreamingResponseHandler: void onNext(java.lang.String)>(v);
return;
}
public static dev.langchain4j.model.qianfan.QianfanStreamingChatModel$QianfanStreamingChatModelBuilder builder()
{
java.lang.Object v;
java.util.function.Supplier v;
v = staticinvoke <dev.langchain4j.model.qianfan.QianfanStreamingChatModel$init__29: java.util.function.Supplier bootstrap$()>();
v = staticinvoke <dev.langchain4j.spi.ServiceHelper: java.lang.Object loadFactoryService(java.lang.Class,java.util.function.Supplier)>(class "Ldev/langchain4j/model/qianfan/spi/QianfanStreamingChatModelBuilderFactory;", v);
return v;
}
}