在Spring Boot中使用LangChain4j,主要通过其提供的Spring Boot starters实现,这些starter简化了模型和其他核心组件的创建和配置。
以下是具体的步骤和方法:
1. 引入Spring Boot Starter依赖
LangChain4j为流行的集成和声明式AI Services提供了Spring Boot starters。 Starter的命名约定是 langchain4j-{integration-name}-spring-boot-starter。
示例(以OpenAI为例): 在你的pom.xml文件中添加以下依赖:
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai-spring-boot-starter</artifactId>
<version>1.12.2-beta22</version>
</dependency>
2. 配置模型参数
在application.properties文件中配置模型参数。这将自动创建一个模型实例,你可以直接注入使用。
示例(配置OpenAiChatModel):
langchain4j.open-ai.chat-model.api-key=${OPENAI_API_KEY}
langchain4j.open-ai.chat-model.model-name=gpt-4o
langchain4j.open-ai.chat-model.log-requests=true
langchain4j.open-ai.chat-model.log-responses=true
...
如果你需要StreamingChatModel,则使用streaming-chat-model前缀:
langchain4j.open-ai.streaming-chat-model.api-key=${OPENAI_API_KEY}
...
3. 自动注入并使用模型
配置完成后,LangChain4j会自动创建相应的模型(如OpenAiChatModel),你可以将其自动注入到Spring组件中。
示例(在Controller中使用ChatModel):
@RestController
public class ChatController {
ChatModel chatModel;
public ChatController(ChatModel chatModel) {
this.chatModel = chatModel;
}
@GetMapping("/chat")
public String model(@RequestParam(value = "message", defaultValue = "Hello") String message) {
return chatModel.chat(message);
}
}
4. 使用声明式AI Services(可选,更高级的用法)
LangChain4j还提供了一个Spring Boot starter用于自动配置AI Services、RAG、Tools等。
a. 引入langchain4j-spring-boot-starter依赖:
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-spring-boot-starter</artifactId>
<version>1.12.2-beta22</version>
</dependency>
b. 定义AI Service接口: 创建一个接口并用@AiService注解。将其视为一个具有AI能力的标准Spring @Service。
@AiService
interface Assistant {
@SystemMessage("You are a polite assistant")
String chat(String userMessage);
}
c. 自动注入AI Service: 当应用程序启动时,LangChain4j starter会扫描带有@AiService注解的接口,并使用应用程序上下文中可用的LangChain4j组件为其创建实现,然后将其注册为Spring Bean。
@RestController
class AssistantController {
@Autowired
Assistant assistant;
@GetMapping("/chat")
public String chat(String message) {
return assistant.chat(message);
}
}
d. 自动组件接线 (Automatic Component Wiring): 如果以下组件在应用程序上下文中可用,它们将自动接线到AI Service:
ChatModelStreamingChatModelChatMemoryChatMemoryProviderContentRetrieverRetrievalAugmentorToolProvider任何带有
@Tool注解的方法所在的@Component或@Service类中的所有方法。
示例(Tool的自动接线):
@Component
public class BookingTools {
private final BookingService bookingService;
public BookingTools(BookingService bookingService) {
this.bookingService = bookingService;
}
@Tool
public Booking getBookingDetails(String bookingNumber, String customerName, String customerSurname) {
return bookingService.getBookingDetails(bookingNumber, customerName, customerSurname);
}
@Tool
public void cancelBooking(String bookingNumber, String customerName, String customerSurname) {
bookingService.cancelBooking(bookingNumber, customerName, customerSurname);
}
}
5. 注意事项
版本要求:LangChain4j Spring Boot集成需要Java 17和Spring Boot 3.5。
多组件冲突:如果应用程序上下文中存在多个相同类型的组件,应用程序可能会启动失败。在这种情况下,需要使用显式接线模式 (
@AiService(wiringMode = EXPLICIT))。
示例项目
LangChain4j提供了多个示例来帮助你理解如何在Spring Boot中使用:
Low-level Spring Boot example (使用ChatModel API)
High-level Spring Boot example (使用AI Services)
通过遵循上述步骤,你可以在Spring Boot项目中轻松集成和使用LangChain4j。