springboot集成langchain4j接入open AI和deepseek
5.接入deepseek,因为deepseek接口标准与open-ai是同一套,所以chatmodel不需要更换。IDEA新建一个springboot项目,使用Spring lnitializr快速构建。maven项目在pom文件中引入LangChain4j的核心依赖与要接入的大模型依赖。
LangChain4j介绍
官网:https://docs.langchain4j.info
- 统一 API: LLM 提供商(如 OpenAI 或 Google Vertex AI)和嵌入(向量)存储(如 Pinecone 或 Milvus) 使用专有 API。LangChain4j 提供统一的 API,避免了学习和实现每个特定 API 的需求。 要尝试不同的 LLM 或嵌入存储,您可以在它们之间轻松切换,无需重写代码。 LangChain4j 目前支持 15+ 个流行的 LLM 提供商 和 20+ 个嵌入存储。
- 全面的工具箱: 自 2023 年初以来,社区一直在构建众多 LLM 驱动的应用程序, 识别常见的抽象、模式和技术。LangChain4j 将这些提炼成一个即用型包。 我们的工具箱包含从低级提示模板、聊天记忆管理和函数调用 到高级模式如代理和 RAG 的工具。 对于每个抽象,我们提供一个接口以及基于常见技术的多个即用型实现。 无论您是在构建聊天机器人还是开发包含从数据摄取到检索完整管道的 RAG, LangChain4j 都提供多种选择。
- LangChain4j与 Spring AI 的对比
Spring Al | LangChain4j |
---|---|
强依赖 Spring 生态 | 无框架依赖,可独立使用 |
SpringBoot应用快速接入单模型 | 多模型(动态模型)平台 |
快速开始
-
IDEA新建一个springboot项目,使用Spring lnitializr快速构建。
-
maven项目在pom文件中引入LangChain4j的核心依赖与要接入的大模型依赖
<properties>
<langchain4j.version>1.0.0-beta3</langchain4j.version>
</properties>
<dependencies>
<!--核心-->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j</artifactId>
<version>{langchain4j.version}</version>
</dependency>
<!--接入open-ai-->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
<version>{langchain4j.version}</version>
</dependency>
</dependencies>
- 在test包下新建一个测试类TestChat
- 写一个测试用例,如果有OpenAI API 密钥。 建议将 API 密钥存储在环境变量中。这里演示,用langchain4j的demo密钥。
package com.kizzo.langchain4j_demos;
import dev.langchain4j.model.openai.OpenAiChatModel;
import org.junit.jupiter.api.Test;
public class TestChat {
@Test
void testChat(){
OpenAiChatModel model = OpenAiChatModel.builder()
.baseUrl("http://langchain4j.dev/demo/openai/v1")
.apiKey("demo")
.modelName("gpt-4o-mini")
.build();
String answer = model.chat("Say 'Hello World'");
System.out.println(answer); // Hello World
String answer2 = model.chat("你好你是谁?");
System.out.println(answer2); // Hello World
}
}
运行结果如图
- 接入deepseek,首先需要在deepseek控制台创建一个API-Keys
因为deepseek接口标准与open-ai是同一套,所以chatmodel不需要更换。
@Test
void testDeepseekChat(){
OpenAiChatModel model = OpenAiChatModel.builder()
.baseUrl("https://api.deepseek.com")
.apiKey(ApiKeys.DEEPSEEK_API_KEY)
.modelName("deepseek-chat")
.build();
String answer2 = model.chat("你好你是谁?");
System.out.println(answer2);
}
运行结果如图
- 接入Qwen,首先需要在阿里百炼控制台创建一个API-Keys
这里pom需要引入新依赖
<!--接入Qwen-->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-community-dashscope</artifactId>
<version>${langchain4j.version}</version>
</dependency>
新增一个测试用例
@Test
void testQwenChat(){
QwenChatModel model = QwenChatModel.builder()
.apiKey(ApiKeys.QWEN_API_KEY)
.modelName("qwen-plus")
.build();
String answer = model.chat("你好你是谁?");
System.out.println(answer);
运行结果报错
com.alibaba.dashscope.exception.ApiException: {“statusCode”:403,“message”:“Model access denied.”,“code”:“Model.AccessDenied”,“isJson”:true,“requestId”:“c6930245-746d-96bf-9eea-f05a03ef67d4”}
; status body:{“statusCode”:403,“message”:“Model access denied.”,“code”:“Model.AccessDenied”,“isJson”:true,“requestId”:“c6930245-746d-96bf-9eea-f05a03ef67d4”}
解决方法:
查看官网错误码(https://help.aliyun.com/zh/model-studio/error-code)
发现新建的业务空间没有授权对应的模型,而默认的业务空间是授权的,测试的业务空间授权即可。
运行结果如图
更多推荐
所有评论(0)