• 作者:老汪软件技巧
  • 发表时间:2024-09-22 07:01
  • 浏览量:

0 前言

LangChain4j 提供了用于以下功能的 Spring Boot 启动器:

1 常用集成的 Spring Boot starters

Spring Boot 启动器帮助通过属性创建和配置 语言模型、嵌入模型、嵌入存储 和其他核心 LangChain4j 组件。

要使用 Spring Boot 启动器,请导入相应依赖包。

Spring Boot 启动器依赖包的命名规范:langchain4j-{integration-name}-spring-boot-starter。

如对于 OpenAI(langchain4j-open-ai),依赖包名称为 langchain4j-open-ai-spring-boot-starter:

<dependency>
    <groupId>dev.langchain4jgroupId>
    <artifactId>langchain4j-open-ai-spring-boot-starterartifactId>
    <version>0.34.0version>
dependency>

然后,可在 application.properties 文件中配置模型参数:

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
...

此时,将自动创建一个 OpenAiChatModel 实例(ChatLanguageModel 的实现)

如何在Spring Boot中无缝集成LangChain4j,玩转AI大模型!_无缝集成什么意思_

_无缝集成什么意思_如何在Spring Boot中无缝集成LangChain4j,玩转AI大模型!

并且可通过自动注入在需要的地方使用它:

@RestController
public class ChatController {
    ChatLanguageModel chatLanguageModel;
    public ChatController(ChatLanguageModel chatLanguageModel) {
        this.chatLanguageModel = chatLanguageModel;
    }
    @GetMapping("/chat")
    public String model(@RequestParam(value = "message", defaultValue = "Hello") String message) {
        return chatLanguageModel.generate(message);
    }
}

如需一个 StreamingChatLanguageModel 实例,使用 streaming-chat-model 代替 chat-model 属性:

langchain4j.open-ai.streaming-chat-model.api-key=${OPENAI_API_KEY}
...

2 声明式 AI 服务的 Spring Boot starter

LangChain4j 提供一个 Spring Boot starter,用于自动配置 AI 服务、RAG、工具 等功能。

假设已导入某已集成的starters(见上文),然后导入 langchain4j-spring-boot-starter:

<dependency>
    <groupId>dev.langchain4jgroupId>
    <artifactId>langchain4j-spring-boot-starterartifactId>
    <version>0.34.0version>
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);
    }
}