在这篇文章中,我们将深入了解LangChain4j框架的高层API(AiServices),并展示如何将其与OpenAI集成,以实现简单的聊天功能。我们将讨论LangChain4j支持的各种大型语言模型(LLMs),并逐步展示如何通过示例代码实现。

LangChain4j支持的LLMs

供应商流式调用函数JSON多模态观测
Amazon Bedrocktext
Anthropictext, image
Azure OpenAItext, image
ChatGLMtext
DashScopetext, image, audio
GitHub Modelstext
Google AI Geminitext, image, audio, video, PDF
Google Vertex AI Geminitext, image, audio, video, PDF
Google Vertex AI PaLM 2text
Hugging Facetext
Jlamatext
LocalAItext
Mistral AItext
Ollamatext, image
OpenAItext, image
Qianfantext
Cloudflare Workers AItext
Zhipu AItext, image

LangChain4j的LLM API概述

核心:ChatLanguageModel 模型元信息提供

1. 依赖包

pom.xml中添加以下依赖:

<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j</artifactId>
</dependency>
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-open-ai</artifactId>
</dependency>

2. 配置 ChatModel 提供模型元信息

@Bean
public ChatModel chatModel() {
    return OpenAiChatModel.builder()
            .apiKey(System.getenv("DASHSCOPE_KEY"))
            .modelName("qwen-turbo")
            .baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1")
            .build();
}

低级LLM API 调用

使用ChatModel接口与大模型进行交互。以下是接口的主要方法:

public interface ChatModel {
    String chat(String userMessage);
    ChatResponse chat(List<ChatMessage> messages);
}
@SpringBootTest
class SimplechatApplicationTest {

    @Autowired
    private ChatModel chatModel;

    /**
     * 测试直接使用字符串调用ChatModel
     * 验证使用简单字符串参数调用chat方法的响应
     */
    @Test
    void testChatWithStringInput() {
        //你好!很高兴能为你服务。有什么问题或需要帮助的吗?
        //你好!很高兴能为你提供帮助。有什么我可以为你做的吗?
        String generate = chatModel.chat("你好");
        System.out.println(generate);
    }
}

高级LLM API

为了简化开发,LangChain4j提供了高层API,使开发者能够更专注于业务逻辑,而无需关注底层实现细节。高层API中,AiService 用于定义一个集成大模型的服务。

1. 定义AI Service

package com.pig4cloud.ai.service;

/**
 *  AI 助手接口
*/
public interface ChatAssistant {
    String chat(String userMessage);
}
  • 声明成 Spring Bean, 注入模型
@Bean
public ChatAssistant chatAssistant() {
    return AiServices.builder(ChatAssistant.class)
            .chatModel(chatModel())
            .build();
}

2. 测试

@SpringBootTest
class ChatAssistantTest {
    @Autowired
    private ChatAssistant chatAssistant;
    
    @Test
    void testChatAssistantMemoryCapability() {
        String chat = chatAssistant.chat("你好,我的名字叫冷冷");
        System.out.println(chat);
    }
}

PIG AI应用开发平台 | 适合中大型企业构建自主可控的AI中台

为Java开发者提供全栈式AI工程化解决方案,强类型/高可维护性架构,内置30+主流大模型支持。

  • 🔍 知识引擎体系:RAG 知识引擎全自动化多模态解决方案
  • 📝 AI-OCR 中枢:复杂非标场景高精度识别
  • ⚙️ 业务智能融合:函数编排 + Chat2SQL,无缝对接现有业务系统
  • 🛡️ N维风控体系:敏感词/IP/Token/User 规则控制引擎

文档有误?请协助编辑

发现文档问题?点击此处直接在 GitHub 上编辑并提交 PR,帮助我们改进文档!

文档有误?请协助编辑

发现文档问题?点击此处直接在 GitHub 上编辑并提交 PR,帮助我们改进文档!