写在前面

本篇介绍LangChain4j如何接入大模型,具体包括DeepSeek和阿里百炼。

接入DeepSeek

获取开发参数

点击 这里 访问DeepSeek官网,注册账号,然后充值,并获取对应的base_url和api_key:

配置开发参数

为了apikay的安全,建议将其配置在服务器的环境变量中,变量名自定义即可,如 DEEP_SEEK_API_KEY:

配置模型参数

点击 这里 访问DeepSeek接口文档,首次调用需要进行设置:

在LangChain4j中,DeepSeek和GPT一样也使用了OpenAI的接口标准,因此也使用OpenAiChatModel进行接入。

修改项目的application.properties配置文件中关于大模型的配置信息为如下所示:

1
2
3
4
5
6
7
#DeepSeek
langchain4j.open-ai.chat-model.base-url=https://api.deepseek.com
langchain4j.open-ai.chat-model.api-key=${DEEP_SEEK_API_KEY}
#DeepSeek-V3
langchain4j.open-ai.chat-model.model-name=deepseek-chat
#DeepSeek-R1 推理模型
#langchain4j.open-ai.chat-model.model-name=deepseek-reasoner

启动测试类

继续使用之前在测试类中创建的contextChatModel方法,执行结果如下所示:

接入阿里百炼

阿里百炼简介

 阿里云百炼是 2023 年 10 月推出的,它集成了阿里的通义系列大模型和第三方大模型,涵盖文本、图像、音视频等不同模态。

阿里云百炼的优势如下:

(1)集成超百款大模型 API,模型选择丰富;

(2)5-10 分钟就能低代码快速构建智能体,应用构建高效;

(3)提供全链路模型训练、评估工具及全套应用开发工具,模型服务多元;

(4)在线部署可按需扩缩容,新用户有千万 token 免费送,业务落地成本低。

支持接入的模型列表,可以点击 这里

以及 模型广场

申请免费体验

第一步,点击进入免费体验页面:

第二步,点击免费体验:

第三步,点击开通服务:

第四步,确认开通:

获取开发参数

点击 这里 访问阿里百炼官网,注册账号,然后充值,并获取对应的base_url和api_key:

配置开发参数

为了apikay的安全,建议将其配置在服务器的环境变量中,变量名自定义即可,如 DASH_SCOPE_API_KEY。

添加对应依赖

点击 这里 访问阿里百炼接口文档,首次调用需要进行设置:

在LangChain4j中,阿里百炼使用的不是标准的OpenAI接口,是社区版所以需要单独进行配置。

第一步,在项目的pom文件中新增对应的依赖:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!-- 接入阿里云百炼平台 -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-community-dashscope-spring-boot-starter</artifactId>
</dependency>

<dependencyManagement>
<!--引入阿里云百炼平台管理清单-->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-community-bom</artifactId>
<version>${langchain4j.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencyManagement>

第二步,在项目的application.properties配置文件中新增如下配置信息:

1
2
3
#阿里百炼平台
langchain4j.community.dashscope.chat-model.api-key=${DASH_SCOPE_API_KEY}
langchain4j.community.dashscope.chat-model.model-name=qwen-plus

启动测试类

在之前的测试类中创建一个名为contextQwen的方法,里面的代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@SpringBootTest
class YusiAiLangchain4jApplicationTests {
@Autowired
private QwenChatModel qwenChatModel;

/**
* Qwen语言模型接入测试
*/
@Test
void contextQwen() {
//向模型提问
String answer = qwenChatModel.chat("你好,你是谁?");
//输出结果
System.out.println(answer);
}
}

执行结果如下所示:

测试通义万相

在之前的测试类中创建一个名为testDashScopeWanx的方法,里面的代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
/**
* 生成图片测试
*/
@Test
void testDashScopeWanx() {
WanxImageModel wanxImageModel = WanxImageModel.builder()
.modelName("wanx2.1-t2i-plus")
.apiKey("sk-85c1140b2220426ab78fc2a8948f3116")
.build();
Response<Image> response = wanxImageModel.generate("奇幻森林精灵:在一片弥漫着轻柔薄雾的古老森林深处,阳光透过茂密枝叶洒下金色光斑。一位身材娇小、长着透明薄翼的精灵少女站在一朵硕大的蘑菇上。她有着海藻般的绿色长发,发间点缀着蓝色的小花,皮肤泛着珍珠般的微光。身上穿着由翠绿树叶和白色藤蔓编织而成的连衣裙,手中捧着一颗散发着柔和光芒的水晶球,周围环绕着五彩斑斓的蝴蝶,脚下是铺满苔藓的地面,蘑菇和蕨类植物丛生,营造出神秘而梦幻的氛围。");
System.out.println(response.content().url());
}

之后运行上述代码,将会输出一张照片的地址,访问该地址,照片如下所示:

测试DeepSeek

也可以在阿里百炼上集成第三方大模型,如DeepSeek,只需将配置参数上的base-url参数指定到百炼平台,使用百炼上的大模型名称和apiKey即可。如集成百炼-deepseek,此时添加的参数如下:

1
2
3
4
5
#集成百炼-deepseek
langchain4j.open-ai.chat-model.base-url=https://dashscope.aliyuncs.com/compatible-mode/v1
langchain4j.open-ai.chat-model.api-key=${DASH_SCOPE_API_KEY}
langchain4j.open-ai.chat-model.model-name=deepseek-v3
langchain4j.open-ai.chat-model.temperature=0.9

temperature是温度系数,取值范围通常在 0 到 1 之间。值越高,模型的输出越随机、富有创造性;值越低,输出越确定、保守。这里设置为 0.9,意味着模型会有一定的随机性,生成的回复可能会比较多样化。

Ollama本地部署

为什么要本地部署

Ollama 是一个本地部署大模型的工具,使用 Ollama 进行本地部署有以下多方面的原因:

  • 数据隐私与安全:对于金融、医疗、法律等涉及大量敏感数据的行业,数据安全至关重要;
  • 离线可用性:在网络不稳定或无法联网的环境中,本地部署的 Ollama 模型仍可正常运行;
  • 降低成本:云服务通常按使用量收费,长期使用下来费用较高。而 Ollama 本地部署,只需一次性投入硬件成本,对于需要频繁使用大语言模型且对成本敏感的用户或企业来说,能有效节约成本;
  • 部署流程简单:只需通过简单的命令 “ollama run < 模型名>”,就可以自动下载并运行所需的模型;
  • 灵活扩展与定制:可对模型微调,以适配垂直领域需求。

在ollama上部署DeepSeek

第一步,下载并安装ollama:

第二步,查看模型列表,选择要部署的模型:

第三步,执行命令“ollama run deepseek-r1:1.5b”运行大模型,如果是第一次运行则会先下载大模型:

Ollama常用命令

下图是Ollama的常用命令:

举个例子,查看一下当前已经下载的模型:

1
2
3
4
C:\Users\gutsy>ollama list
NAME ID SIZE MODIFIED
deepseek-r1:1.5b e0979632db5a 1.1 GB 4 months ago
qwen3:1.7b 8f68893c685c 1.4 GB 4 months ago

langchain4j集成Ollama

引入依赖

点击 这里 阅读langchain4j对于Ollama的支持文档:

由于我们使用的是SpringBoot,因此在项目的pom文件中新增如下依赖:

1
2
3
4
5
<!-- 接入ollama -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-ollama-spring-boot-starter</artifactId>
</dependency>

配置模型参数

请注意通过Ollama部署的模型的端口都是11434,因此在其application.properties配置文件新增对应配置项信息:

1
2
3
4
5
6
7
8
9
10
11
#ollama
langchain4j.ollama.chat-model.base-url=http://localhost:11434
langchain4j.ollama.chat-model.model-name=deepseek-r1:1.5b
# 创造性控制
# 0.7到1.2‌:适用于需要较高创造性的场景,如诗歌生成或头脑风暴
# 0.3到1.0‌:适用于需要较高稳定性和多样性的场景,如技术文档或法律文书的生成
langchain4j.ollama.chat-model.temperature=0.8
# 模型进行通信的超时时间为60秒
langchain4j.ollama.chat-model.timeout=PT60S
langchain4j.ollama.chat-model.log-requests=true
langchain4j.ollama.chat-model.log-responses=true

创建测试用例

我们可以在测试类中新建一个名为testOllama的方法,然后测试我们刚才下载本地部署的deepseek-r1模型:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@SpringBootTest
class YusiAiLangchain4jApplicationTests {

@Autowired
private OllamaChatModel ollamaChatModel;

/**
* 测试Ollama
*/
@Test
public void testOllama() {
//向模型提问
String answer = ollamaChatModel.chat("你好,你是谁?");
//输出结果
System.out.println(answer);
}
}

运行上述测试类,结果如下所示:

1
您好!我是由中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-R1。如您有任何任何问题,我会尽我所能为您提供帮助。