一、简单说明模型
LLM目前有两种API提供
- LanguageModel:接收一个a作为输入并返回一个b作为输出,这种是已经过时的
- ChatLanguageModel:接收多个输入,然后返回相应的输出
ChatLanguaggeModel是LangChain4j中LLM交互低级API,它提供了最大的功能和灵活性。除此之外还有一个高级API(AIService)。
ChatLanguageModel还支持的模型有:
- EmbeddingModel:把文本转换为Embedding
- ImageModel:用来生成和编辑图片
- ModerationModel:这个模型可以检查文本中是否包含有害内容
- ScoringModel:可以根据查询对多段文本进行评分(排名),实际上就是用来确定每段文本与查询的关联性,这个对于RAG来说是非常有用的
二、ChatLanguageModel的API
ChatLanguageModel是一个接口,其定义如下:
public interface ChatLanguageModel {
default String generate(String userMessage) {
return generate(UserMessage.from(userMessage)).content().text();
}
default Response<AiMessage> generate(ChatMessage... messages) {
return generate(asList(messages));
}
Response<AiMessage> generate(List<ChatMessage> messages);
default Response<AiMessage> generate(List<ChatMessage> messages, List<ToolSpecification> toolSpecifications) {
throw new IllegalArgumentException("Tools are currently not supported by this model");
}
default Response<AiMessage> generate(List<ChatMessage> messages, ToolSpecification toolSpecification) {
throw new IllegalArgumentException("Tools are currently not supported by this model");
}
@Experimental
default ChatResponse chat(ChatRequest request) {
throw new UnsupportedOperationException();
}
@Experimental
default Set<Capability> supportedCapa