Echo
发布于 2026-03-17 / 8 阅读
0
0

springboot集成LangChain4j

在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:

  • ChatModel

  • StreamingChatModel

  • ChatMemory

  • ChatMemoryProvider

  • ContentRetriever

  • RetrievalAugmentor

  • ToolProvider

  • 任何带有@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中使用:

通过遵循上述步骤,你可以在Spring Boot项目中轻松集成和使用LangChain4j。


评论