在前面的进阶篇中,介绍了 AI Services 的用法,下面将介绍 AI Services 是如何工作的?
在前面的示例中,你将接口的类以及底层组件提供给 AiServices,AiServices 会创建一个实现该接口的代理对象。如下:
// 使用 AiServices 创建服务
Assistant assistant = AiServices.builder(Assistant.class)
.chatModel(chatModel)
.build();上面代码中,assistant 对象是一个 Assistant 类型的代理对象。
目前,LangChain4j 使用反射,但我们也在考虑其他替代方案。这个代理对象会处理所有输入和输出的转换。在这种情况下,输入是一个单一的字符串(String),但我们使用的是一个以 ChatMessage 类型作为 ChatModel 的输入参数。因此,AiService 会自动将其转换为用户消息(UserMessage)并调用聊天模型(ChatModel)。
LangChain4j Quarkus 扩展极大地简化了在 Quarkus 应用程序中使用 AI 服务的过程。
Quarkus LangChain4j 扩展将大型语言模型(LLMs)集成到你的 Quarkus 应用程序中,支持诸如摘要生成、分类、文档提取、智能聊天机器人等用例,所有这些都具备 Quarkus 原生的性能和开发者体验。

更多信息可以在这里找到。
后续将专题介绍,这里不在进行更多介绍。
LangChain4j Spring Boot 启动器极大地简化了在 Spring Boot 应用程序中使用 AI 服务的过程。
LangChain4j 提供了一个 Spring Boot 启动器,用于自动配置 AI 服务、检索增强生成(RAG)、工具等。假设您已经导入了其中一个集成启动器(见上文),请导入langchain4j-spring-boot-starter:
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-spring-boot-starter</artifactId>
<version>1.10.0-beta18</version>
</dependency>现在你可以定义 AI 服务接口,并使用@AiService对其进行注解:
@AiService
interface Assistant {
@SystemMessage("You are a polite assistant")
String chat(String userMessage);
}可以把它看作是一个标准的 Spring Boot @Service,但具有 AI 功能。
当应用程序启动时,LangChain4j 启动器会扫描类路径,找出所有用@AiService注解的接口。对于找到的每个 AI 服务,它会利用应用程序上下文中所有可用的 LangChain4j 组件创建该接口的实现,并将其注册为一个 bean,这样你就可以在需要的地方自动装配它:
@RestController
class AssistantController {
@Autowired
Assistant assistant;
@GetMapping("/chat")
public String chat(String message) {
return assistant.chat(message);
}
}后续将专题介绍,这里不在进行更多介绍。