1.1、前言

        LangChain4j提供与许多LLM提供商的集成。每个集成都有自己的maven依赖关系。LangChain4j也为每个不同的LLM提供商提供对应的Spring Boot启动器,用户根据自己的实际情况选择对应的LLM提供商进行集成。LangChain4j针对不同LLM提供商提供的Spring Boot启动器如下图所示:
Spring Boot启动器

1.2、集成环境

        Spring Boot项目集成LangChain4J开源开发框架最低环境配置是Java17和Spring Boot 3.2及以上,本实例采用的配置如下表所示:

环境名称版本号
JDK17.0.7
Maven3.6.3
Idea2022.2.1
Spring Boot3.2.4

1.3、单一LLM提供商集成

        Spring Boot启动器有助于创建和配置语言模型、嵌入模型、嵌入存储、和其他核心 LangChain4j 组件。用户只需根据实际情况选择对应的LLM提供商的Spring Boot启动器进行依赖导入即可。
        Spring Boot启动器依赖项的命名约定为:langchain4j-{LLM提供商名称}-spring-boot-starter。
        下面以OpenAI为例讲解如何在Spring Boot项目单一集成OpenAI大模型,首先我们需要找到OpenAI依赖项名称,按照约定OpenAI的Spring Boot启动器名称应为:langchain4j-open-ai-spring-boot-starter。然后,用户只需要进行如下三步就可以轻松在自己的Spring Boot项目中集成和使用OpenAI。

  • 导入依赖
    用户只需要在Spring Boot项目的pom文件中导入OpenAI依赖即可,依赖配置如下:
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-open-ai-spring-boot-starter</artifactId>
    <version>1.0.0-beta2</version>
</dependency>
  • 配置模型参数
    在用户配置模型参数之前,用户需要自行去OpenAI官网上申请自己的API-KEY,这里不做赘述。有了API-KEY需要在Spring Boot项目的配置文件中配置模型参数,示例模型参数如下所示:
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
...

Spring Boot项目的配置文件通常为application.properties或者application.yaml文件,如果没有需要用户在项目的resources目录下新建application.properties或者application.yaml文件。

  • 编写AI服务接口
    用户在项目的src目录下新建包名编写自己的AI服务即可。在这种情况下,将自动创建OpenAiChatModel的实例,该实例也就是ChatLanguageModel的实现。用户只需要在使用的地方自动注入该对象即可。示例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.chat(message);
    }
}

        如果用户需要使用StreamingChatLanguageModel实例,用户只要在配置文件中配置使用流式聊天模型而不是聊天模型属性,配置如下:

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

1.4、声明式AI服务集成

        LangChain4j提供了一个Spring Boot启动器,用于自动配置AI服务、RAG、工具等。用户必须已经导入了一个集成启动器(见上文)的基础上再在Spring Boot项目的pom文件中导入该Spring Boot启动器依赖即可,依赖配置如下:

<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-spring-boot-starter</artifactId>
    <version>1.0.0-beta2</version>
</dependency>

        接下来用户在项目的src目录下新建包名编写自己的AI服务,用户只需要在自定义接口上使用@AiService注解进行标记即可。具体如下:

@AiService
interface Assistant {

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

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

        示例AI服务如下:

@RestController
class AssistantController {

    @Autowired
    Assistant assistant;

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

1.5、多模型集成

        如果你有多个AI服务,并且想将不同的LangChain4j组件连接到每个服务中,你可以通过显式连接模式(@AiService(wiringMode=explicit))指定要使用的组件。比如你在配置文件中配置了多个模型参数,具体如下:

# 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))指定要使用的组件。具体如下:

@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);
}

1.6、集成示例工程

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐