当前位置:   article > 正文

langchain4j-chat_langchain4j 流式接口

langchain4j 流式接口

简介

langchain4j有两种chat模型,分别是默认的和使用streaming的,streaming的模型可以通过sse逐字返回信息,配合前端实现打字机效果。

ChatLanguageModel

这是默认的langchain4j的模型接口,各个公司的聊天模型都基本上都实现了这个接口,方法如下:

1. generate(String userMessage)

Java
default String generate(String userMessage) {return generate(UserMessage.from(userMessage)).content().text();
}

  • 功能:这个方法接收一个用户消息字符串,并返回模型生成的响应字符串。
  • 参数:userMessage 是一个代表用户消息的字符串。
  • 返回值:返回生成的响应内容的字符串。
  • 说明:这是一个便捷方法,为了简化使用情况,它会调用 UserMessage.from(userMessage) 将用户消息字符串转换为 UserMessage 对象,然后调用生成响应的方法。

2. generate(ChatMessage... messages)

Java
default Response<AiMessage> generate(ChatMessage... messages) {return generate(asList(messages));
}

  • 功能:这个方法接收多个聊天消息对象,并返回模型生成的响应。
  • 参数:messages 是一个 ChatMessage 对象的数组,代表了一系列对话消息。
  • 返回值:返回模型生成的 Response<AiMessage> 对象。
  • 说明:这是一个便捷方法,用于将数组转换为列表,并调用另一个方法生成响应。

3. generate(List<ChatMessage> messages)

Java
Response<AiMessage> generate(List<ChatMessage> messages);

  • 功能:这个方法接收一个聊天消息对象的列表,并返回模型生成的响应。
  • 参数:messages 是一个 ChatMessage 对象的列表,代表了一系列对话消息。
  • 返回值:返回模型生成的 Response<AiMessage> 对象。
  • 说明:这是核心方法之一,具体的实现类需要实现这个方法来处理消息序列并生成响应。

4. generate(List<ChatMessage> messages, List<ToolSpecification> toolSpecifications)

Java
default Response<AiMessage> generate(List<ChatMessage> messages, List<ToolSpecification> toolSpecifications) {throw new IllegalArgumentException("Tools are currently not supported by this model");
}

  • 功能:接收聊天消息对象的列表和工具规范的列表,并返回模型生成的响应,该响应可能是文本消息或请求执行指定的工具。
  • 参数:
  • messages:一个 ChatMessage 对象的列表,代表了对话消息序列。
  • toolSpecifications:一个 ToolSpecification 对象的列表,代表可以被模型执行的工具。
  • 返回值:返回模型生成的 Response<AiMessage> 对象。
  • 说明:默认实现抛出异常,表示当前模型不支持工具。如果要支持工具功能,需要在具体实现中覆盖这个方法。

5. generate(List<ChatMessage> messages, ToolSpecification toolSpecification)

Java
default Response<AiMessage> generate(List<ChatMessage> messages, ToolSpecification toolSpecification) {throw new IllegalArgumentException("Tools are currently not supported by this model");
}

  • 功能:接收聊天消息对象的列表和一个工具规范,并返回模型生成的响应。模型强制执行指定的工具。
  • 参数:
  • messages:一个 ChatMessage 对象的列表,代表了对话消息序列。
  • toolSpecification:一个 ToolSpecification 对象,代表要被模型执行的具体工具。
  • 返回值:返回模型生成的 Response<AiMessage> 对象,包含执行指定工具的请求。
  • 说明:默认实现抛出异常,表示当前模型不支持工具。如果要支持此功能,需要在具体实现中覆盖这个方法。

StreamingChatModel

StreamingChatLanguageModel是一个接口,它定义了一种语言模型,该模型具有聊天接口并能够一次流式传输一个响应令牌。这个模型主要用于处理用户的消息,并生成相应的AI响应。

接口定义了几种不同的generate方法,这些方法根据用户的消息生成响应。这些方法的主要区别在于它们接受的参数类型和数量。

  1. generate(String userMessage, StreamingResponseHandler<AiMessage> handler):这个方法接受一个字符串类型的用户消息和一个处理器,然后生成一个AI响应。

  1. generate(UserMessage userMessage, StreamingResponseHandler<AiMessage> handler):这个方法接受一个UserMessage类型的用户消息和一个处理器,然后生成一个AI响应。

  1. generate(List<ChatMessage> messages, StreamingResponseHandler<AiMessage> handler):这个方法接受一个ChatMessage类型的消息列表和一个处理器,然后生成一个AI响应。

  1. generate(List<ChatMessage> messages, List<ToolSpecification> toolSpecifications, StreamingResponseHandler<AiMessage> handler):这个方法接受一个ChatMessage类型的消息列表,一个ToolSpecification类型的工具列表和一个处理器,然后生成一个AI响应。如果模型不支持工具,这个方法会抛出一个异常。

  1. generate(List<ChatMessage> messages, ToolSpecification toolSpecification, StreamingResponseHandler<AiMessage> handler):这个方法接受一个ChatMessage类型的消息列表,一个ToolSpecification类型的工具和一个处理器,然后生成一个AI响应。如果模型不支持工具,这个方法会抛出一个异常。

在所有的generate方法中,处理器(handler)都是用来处理流式响应的。这意味着,模型生成的响应可以一次一个令牌地发送给处理器,而不是一次性发送整个响应。这种方式可以提高响应的实时性,使用户能够更快地看到AI的反馈。

总的来说,StreamingChatLanguageModel接口定义了一个可以处理用户消息并生成AI响应的语言模型。这个模型可以处理不同类型和数量的用户消息,也可以处理工具的执行请求。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/744847
推荐阅读
相关标签
  

闽ICP备14008679号