1. 概述
1.1. 简述
LangChain4J 是 Java 生态中对接 LangChain 核心能力的现代化开发库,专注于简化 Java 应用与大语言模型(LLM)及智能代理(Agents)、工具(Tools)、文档检索(RAG)等功能的集成。基础知识这里不赘述,可以网上自行查看。
1.2. 本节目标
初步使用LangChain4j调用接口,能与模型进行简单的对话。官方文档中LangChain4j的接口有low-level 与high-level 之分,其实high-level 就是基于low-level上做了一些封装,本节按照low-level的接口先将代码跑通。
2. 环境准备
2.1. 版本要求
- Java:JDK17或更高的版本
- 包管理工具:Maven
- 阿里云百炼上申请模型的试用,获取apiKey,也可以试用本地部署的ollama进行调用,快速了解的话建议还是使用线上的模型
2.2. Maven依赖
如果需要开日志,还需要引入日志模块,下面提供的是基础模块,根据需要引入一个就好了。
xml
<!--使用OpenAi的这个包,这个包只要模型提供跟OpenAi类似的接口,就可以调用,并非针对OpenAi的模型-->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
<version>1.6.0</version>
</dependency>
<!-- 对接 Ollama 的模块(本地模型) -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-ollama</artifactId>
<version>1.6.0</version>
</dependency>
3. 快速入门
3.1. 调用阿里千问的大语言模型
java
package com.ketech;
import dev.langchain4j.model.openai.OpenAiChatModel;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
# 阿里百炼平台申请的apiKey,请填入自己申请的
String apiKey = "sk-XXXXXXXXXXXX";
OpenAiChatModel chatModel = OpenAiChatModel.builder()
.baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1")
.apiKey(apiKey)
.modelName("qwen-max")
.logRequests(true)
.logResponses(true)
.build();
String result = chatModel.chat("你好,你是谁?");
System.out.println( result );
}
}
说明:
- apiKey:百炼平台申请的key
- modelName:百炼平台上的模型名称,百炼上提供了很多的模型供调用,根据自己的需要选择一个
- basuUrl:基础的Url,可以点进需要调用的模型,说明中提供了baseUrl的地址
- logRequest:开启请求日志,开启后控制台可打印出具体信息,方便查看
- logResponse:开启访问日志,开启后控制台可打印出具体信息,方便查看
- 还有其他很多的配置项,本节只做简单的入门,后续有时间可继续探讨
阿里千问查看baseUrl示例

控制台打印的结果信息

3.2. 调用本地的ollama部署的大语言模型
没有实际测试过,后面测一下,注意引入的依赖。
java
package com.ketech;
import dev.langchain4j.model.openai.OpenAiChatModel;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
OpenAiChatModel chatModel = OpenAiChatModel.builder()
.baseUrl("http://localhost:11434")
.modelName("qwen-max")
.logRequests(true)
.logResponses(true)
.build();
String result = chatModel.chat("你好,你是谁?");
System.out.println( result );
}
}