AI框架—LangChain4j系列 :LangChain4j -Spring Boot集成

一、Spring Boot starter 通用集成

1、引入依赖

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

要使用Spring Boot starters,请导入相应的依赖关系。

Spring Boot启动器依赖项的命名约定是:langchain4j-{integration-name}-spring-boot-starter.

例如,对于OpenAI(langchain4j open-ai),依赖项名称将是langchain4j open ai spring bootstarter:

复制代码
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-open-ai-spring-boot-starter</artifactId>
    <version>0.35.0</version>
</dependency>

2、参数配置

然后,您可以在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的实现),您可以在需要时自动连接它:

复制代码
@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的实例,请使用流式聊天模型而不是聊天模型属性:

复制代码
langchain4j.open-ai.streaming-chat-model.api-key=${OPENAI_API_KEY}
...

二、Spring Boot starter声明式AI服务的集成

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

假设您已经导入了一个集成启动器(见上文),请导入langchain4j spring boot starter:

复制代码
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-spring-boot-starter</artifactId>
    <version>0.35.0</version>
</dependency>

现在,您可以定义AI服务接口并用@AiService对其进行注释:

复制代码
@AiService
interface Assistant {

    @SystemMessage("You are a polite assistant")
    String chat(String userMessage);
}

将其视为标准的Spring Boot@Service,但具有AI功能。

当应用程序启动时,LangChain4j starter将扫描类路径并找到所有用@AiService注释的接口。对于找到的每个AI服务,它将使用应用程序上下文中可用的所有LangChain4j组件创建此接口的实现,并将其注册为bean,以便您可以在需要时自动连接它:

复制代码
@RestController
class AssistantController {

    @Autowired
    Assistant assistant;

    @GetMapping("/chat")
    public String chat(String message) {
        return assistant.chat(message);
    }
}

1、组件自动装配

如果要在application context中可用,则以下组件将自动连接到AI服务:

  • ChatLanguageModel
  • StreamingChatLanguageModel
  • ChatMemory
  • ChatMemoryProvider
  • ContentRetriever
  • RetrievalAugmentor

所有用@Tool注释的方法(注意,这些方法必须在SpringBean类中定义)

2、显示组件装配

如果您有多个AI服务,并且希望将不同的LangChain4j组件连接到每个服务中,则可以指定要与显式连接模式一起使用的组件(@AiService(wiringMode=explicit))。

假设我们配置了两个ChatLanguageModel:

复制代码
# OpenAI
langchain4j.open-ai.chat-model.api-key=${OPENAI_API_KEY}
langchain4j.open-ai.chat-model.model-name=gpt-4o-mini

# Ollama
langchain4j.ollama.chat-model.base-url=http://localhost:11434
langchain4j.ollama.chat-model.model-name=llama3.1

@AiService(wiringMode = EXPLICIT, chatModel = "openAiChatModel")
interface OpenAiAssistant {

    @SystemMessage("You are a polite assistant")
    String chat(String userMessage);
}

@AiService(wiringMode = EXPLICIT, chatModel = "ollamaChatModel")
interface OllamaAssistant {

    @SystemMessage("You are a polite assistant")
    String chat(String userMessage);
}
相关推荐
heeheeai几秒前
kotlin kmp 跨平台环境使用sqldelight
数据库·kotlin·kmp·start·sqldelight
Derek_Smart1 分钟前
Netty 客户端与服务端选型分析:下位机连接场景
spring boot·后端·netty
小宁爱Python14 分钟前
MySql的两种安装方式
数据库·mysql
程序员JerrySUN42 分钟前
GPU 基础矩阵精规组织教程:从基础作用到实战应用
数据库·系统架构·gpu算力
不辉放弃44 分钟前
Spark SQL 的 SQL 模式和 DSL模式
数据库·pyspark·大数据开发
飞翔的佩奇4 小时前
基于SpringBoot+MyBatis+MySQL+VUE实现的房屋交易平台管理系统(附源码+数据库+毕业论文+部署教程+配套软件)
数据库·spring boot·mysql·vue·毕业设计·mybatis·房屋交易平台
wb18910 小时前
服务器的Mysql 集群技术
linux·运维·服务器·数据库·笔记·mysql·云计算
洛可可白10 小时前
Spring Boot 应用结合 Knife4j 进行 API 分组授权管理配置
java·spring boot·后端
亲爱的非洲野猪10 小时前
ZooKeeper 深度实践:从原理到 Spring Boot 全栈落地
spring boot·zookeeper·java-zookeeper
zl0_00_010 小时前
web刷题2
数据库