注意:本篇文章建立在官方文档的理解上,文章会围绕官方文档去书写,博主会根据对框架的理解去动态修改文章内容,由于该框架的官方文档写的并不是很详细,市面上也没有特别详细的教程,所以博主也不能很全面的理解整个框架,但是对于入门来说,已经足够了,如果有看不懂的地方建议把全部文章都阅读一遍后再回顾会有不同的理解。
LangChain4j 支持的 API 和消息类型(Chat and Language Models)
LangChain4j 的核心 API 类型
当前,LangChain4j 支持的 LLMs API 主要分为两种:
LanguageModel
s- 早期的简单 API,只接受
String
输入并返回String
输出。此 API 已过时,未来将主要支持新的聊天 API(即ChatLanguageModel
)。
- 早期的简单 API,只接受
ChatLanguageModel
s- 目前推荐使用的主要 API,支持更复杂的输入和输出。
- 接受单个或多个
ChatMessage
s 作为输入,并返回AiMessage
作为输出。ChatMessage
通常包含文本,但某些 LLMs 还支持文本和Image
s 的混合。此类聊天模型的示例包括 OpenAI 的gpt-4o-mini
和 Google 的gemini-1.5-pro
。
未来 LangChain4j 不再扩展
LanguageModel
支持,因此推荐在所有新功能中使用ChatLanguageModel
。
特定功能模型类型
除了这两类核心 API,LangChain4j 还支持几种特定功能的模型类型,这些模型并非标准的聊天和语言 API,但用于特定应用场景中:
EmbeddingModel
:用于将文本转换为向量(Embedding
),便于语义搜索和聚类。ImageModel
:用于生成和编辑图像。ModerationModel
:用于检测文本是否包含有害内容,确保内容安全。ScoringModel
:用于根据查询对文本段落进行相关性评分,适用于 RAG(检索增强生成)任务。
ChatLanguageModel
的API
简化版 generate
方法
public interface ChatLanguageModel {
String generate(String userMessage);
...
}
如上所示,generate
方法接收一个 String
类型的输入,并返回一个 String
类型的输出,这与 LanguageModel
类似。这是一个简化的便捷方法,方便你快速进行测试,而无需将字符串封装在 UserMessage
中。
实际的聊天 API
...
Response<AiMessage> generate(ChatMessage... messages);
Response<AiMessage> generate(List<ChatMessage> messages);
..