概述
LangChain4j 是一个专为Java开发者设计的开源库,旨在简化将大型语言模型(LLM)集成到Java应用程序中的过程。 它于2023年初开发,灵感来源于Python和JavaScript的LLM库,特别是为了填补Java领域在这一方面的空白。
官网文档地址:Introduction | LangChain4j
核心功能
1.统一API:LangChain4j 提供统一 API,避免了学习和实现每个API的特定API。
2.全面的工具箱:该框架包含多种工具,从低级的提示模板、聊天记忆管理到高级模式(如AI服务和RAG)。
3.大量的示例:LangChain4j提供大量的使用示例,与Quarkus和SpringBoot的集成等
获取阿里云百炼的api-key
1.注册阿里云账号
访问阿里云官网,完成账号注册流程,并开通百炼服务,网址:https://bailian.console.aliyun.com
2.获取 API Key
登录阿里云百炼平台,在个人中心或相关设置页面找到并生成 API Key,妥善保管此密钥,后续调用模型时需使用
入门实操
1.引入依赖
LangChain4j 提供与许多 LLM 提供商的集成。 每个集成都有自己的 maven 依赖项。 最简单的开始方法是 OpenAI 集成,如果希望使用高级 AI 服务 API,则还需要添加其他依赖项。
<!--统一版本-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-bom</artifactId>
<version>0.36.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!--langchain4j 高级AI服务API-->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j</artifactId>
</dependency>
<!--langchain4j 基础依赖-->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
</dependency>
2.编写启动类
package ym;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}
3.编写服务接口
package ym.service;
/**
* ai接口
*/
public interface IChatAssistant {
String chat(String message);
}
4.编写配置文件
package ym.config;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.service.AiServices;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import ym.service.IChatAssistant;
/**
* 大模型配置
*/
@Configuration
public class LLMConfig {
@Bean
public ChatLanguageModel chatLanguageModel() {
return OpenAiChatModel.builder()
.apiKey("阿里百炼的apikey")
.modelName("qwen-max")
.baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1")
.build();
}
@Bean
public IChatAssistant chatAssistant() {
return AiServices.
builder(IChatAssistant.class)
// 选择模型
.chatLanguageModel(chatLanguageModel())
.build();
}
}
5.编写控制器
package ym.controller.llm;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import ym.service.IChatAssistant;
/**
* 基础ai对话
*/
@RequestMapping("/base")
@RestController
public class ChatController {
@Autowired
IChatAssistant iChatAssistant;
/**
* ai对话
* @param message
* @return
*/
@GetMapping("/chat")
public String chat(String message) {
return iChatAssistant.chat(message);
}
}