背景介绍
作为一个只懂java的程序员,之前一直没有机会直接与langchain接触,无法快速跟上AI的浪潮。直至langchain4j的推出,让我有了一探langchain4j的机会。对langchain4j不熟的同学可以移步官网。简言之,LangChain4j 的目标是简化将 AI/LLM 功能集成到 Java 应用程序中。
思路介绍
实现LLM集成的java应用,需要具备以下条件:
- 快速集成框架。
- LLM模型。 针对以上内容,我们当然选择 langchain4j 作为我们的快速集成框架。然后针对框架支持的LLM模型,我选择了ZhipuAI作为LLM模型。
前提条件
通过ZhipuAI获取apiKey。后期发现可以使用LocalAI作为LLM模型,但我还没实践。
实现方式
官网也没有ZhipuAI的demo,我也只能自己摸索。但过程也不太困难。以下代码是基于langchain4j的0.30.0版本进行撰写的。
1、通过pom.xml引入langchain4j的相关资源包;
代码语言:xml复制<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>cn.demo</groupId>
<artifactId>myLangChain4jDemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>myLangChain4jDemo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>17</java.version>
<langchain4j.version>0.30.0</langchain4j.version>
</properties>
<dependencies>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai-spring-boot-starter</artifactId>
<version>${langchain4j.version}</version>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-spring-boot-starter</artifactId>
<version>${langchain4j.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 引入ZhipuAI相关内容 -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-zhipu-ai</artifactId>
<version>${langchain4j.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2、撰写main方法的demo;
代码语言:java复制class ZhipuChatLanguageModelDemo {
public static void main(String[] args) {
ChatLanguageModel model = ZhipuAiChatModel.builder()
.apiKey("api_key")//将这个api_key替换为你自己对应的KEY就好了
.model("GLM-4")
.build();
ZhipuChatLanguageModelDemo demo = new ZhipuChatLanguageModelDemo();
demo.chatDemo(model);
}
/**
模拟以下对话
User: Hello, my name is Klaus
AI: Hi Klaus, how can I help you?
User: What is my name?
AI: Klaus
**/
public void chatDemo(ChatLanguageModel model){
UserMessage firstUserMessage = UserMessage.from("Hello, my name is Klaus");
AiMessage firstAiMessage = model.generate(firstUserMessage).content(); // Hi Klaus, how can I help you?
System.out.println(firstAiMessage.text());
UserMessage secondUserMessage = UserMessage.from("What is my name?");
//这个地方需要输入多个UserMessage
AiMessage secondAiMessage = model.generate(firstUserMessage, firstAiMessage, secondUserMessage).content(); // Klaus
System.out.println(secondAiMessage.text());
}
}
第一次写文章,感觉写的思路不太顺畅。有任何问题和建议,欢迎评论区交流。