LangChain4j(2):Chat、流式与文生图模型功能
一、聊天对话(ChatLanguageModel)
在 LangChain4j 中,使用ChatLanguageModel进行基本的聊天对话简单直观。以下是一段示例代码:
ChatLanguageModel model = OpenAiChatModel.builder()
.apiKey("demo")
.build();
String result = model.generate("你是谁");
System.out.println(result);
在上述代码中,我们首先通过OpenAiChatModel.builder()构建一个OpenAiChatModel实例,并设置其apiKey。这里的apiKey用于身份验证,以确保我们能够合法地调用 OpenAI 的模型服务。随后,通过调用model.generate("你是谁")方法,向模型发送询问 “你是谁” 的请求,模型会返回相应的回答,并将其赋值给result变量,最后打印输出结果。
二、流式对话(StreamingChatLanguageModel)
为了实现像打字机一样逐个字符输出的效果,以提供更加自然的交互体验,LangChain4j 提供了StreamingChatLanguageModel模型。以下是使用该模型的示例代码:
StreamingChatLanguageModel model = OpenAiStreamingChatModel.builder()
.baseUrl(OPEN_AI_BASE_URL)
.apiKey(OPEN_AI_API_KEY)
.build();
model.generate("你好 我是小橘", new StreamingResponseHandler<AiMessage>() {
@Override
public void onNext(String token) {
System.out.println(token);
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
@Override
public void onError(Throwable throwable) {
}
});
在这段代码中,我们通过OpenAiStreamingChatModel.builder()构建了一个支持流式输出的OpenAiStreamingChatModel实例,并设置了baseUrl和apiKey。baseUrl指定了 OpenAI 服务的基础地址,apiKey用于身份验证。接着调用
model.generate("你好 我是小橘", new StreamingResponseHandler<AiMessage>() {... }),发送对话请求。
其中,StreamingResponseHandler是一个回调接口,onNext(String token)方法会在模型生成每个新的输出 “片段”(token)时被调用。在这里,我们将每个token打印出来。
三、文生图(ImageModel)
LangChain4j 还赋予了我们通过大模型根据文本信息生成对应图片的能力,这一功能由ImageModel实现。以下是具体的示例代码:
ImageModel imageModel = OpenAiImageModel.builder()
.baseUrl(OPEN_AI_BASE_URL)
.apiKey(OPEN_AI_API_KEY)
.build();
Response<Image> response = imageModel.generate("小猫");
System.out.println(response.content().url());
首先通过OpenAiImageModel.builder()构建OpenAiImageModel实例,并设置baseUrl和apiKey。然后调用imageModel.generate("小猫")方法,向模型发送生成 “小猫” 图片的请求,模型返回一个Response<Image>对象。通过response.content().url()可以获取生成图片的 URL 地址,并将其打印输出。此外,该响应除了提供图片 URL 外,还提供了 Base64 编码的文件字符串。