LangChain4j+Cursor ,Java 开发AI应用变得简单

开发了一个复杂的AI交互平台,涉及多个模块的集成与交互,包括自然语言处理、图像识别、语音合成等。 由于项目周期紧张,代码结构较为混乱,尤其是对大模型API的封装部分,缺乏统一的接口设计和模块化处理,导致后续维护和扩展困难。

图片

例如,不同功能的API调用分散在各个模块中,缺乏统一的错误处理和日志记录机制,增加了调试和优化的复杂度。 此外,代码中还存在大量冗余和重复的逻辑,影响了系统的性能和可读性。

但是:LangChain官方自从发布了LangChain4j,AI 界的门槛儿算是被彻底踹飞了!为什么?因为这就意味着整天只会 CRUD 的 Javaer 们也能开发AI应用了,而且简单到让你怀疑人生

一、LangChain4j

它是Java版本的LangChain,随着大模型的不断发展,如何在程序中更好的利用大模型的能力来提高编程效率是一种趋势,LangChain是这么自己介绍自己的:

LangChain gives developers a framework to construct LLM‑powered apps
easily.

意思是:LangChain提供了一个开发框架,使得开发者可以很容易的用来构建具有LLM能力的应用程序。

LLM就是Large Language Model,也就是常说的大语言模型,简称大模型。

个人认为:大模型时代,如何将大模型能力和传统应用相结合,使得传统应用更加智能,是人工智能时代的趋势。以前一个应用要获得智能,需要企业自己投入资源训练模型,而现在只需要接入大模型即可,这种便利性将使得大模型会应用得更为广泛,而如何将大模型能力和Java编程语言相结合,这就是LangChain4j所做的。

注意,大模型的能力远远不止聊天的能力,而LangChain4j就在帮助我们更好的利用大模型的能力,从而帮我们打造出更加智能的应用。

二、初识LangChain4j

接下来,让我们与LangChain4j初识一下,新建一个Maven工程,然后添加以下依赖:

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    
    <groupId>com.qjc</groupId>
    <artifactId>langchain4j-project-1</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <langchain4j.version>0.27.1</langchain4j.version>
    </properties>

    <dependencies>
     <!--核心-->
        <dependency>
            <groupId>dev.langchain4j</groupId>
            <artifactId>langchain4j</artifactId>
            <version>${langchain4j.version}</version>
        </dependency>
        <dependency>
            <groupId>dev.langchain4j</groupId>
            <artifactId>langchain4j-open-ai</artifactId>
            <version>${langchain4j.version}</version>
        </dependency>
  <!--日志-->
        <dependency>
            <groupId>org.tinylog</groupId>
            <artifactId>tinylog-impl</artifactId>
            <version>2.6.2</version>
        </dependency>
        <dependency>
            <groupId>org.tinylog</groupId>
            <artifactId>slf4j-tinylog</artifactId>
            <version>2.6.2</version>
        </dependency>
    </dependencies>

</project>

引入了langchain4j的核心依赖、langchain4j集成OpenAi各个模型的依赖、轻量级实现了slf4j接口的tinylog日志依赖。

接着,咱们和OpenAi的第一次对话:

package com.qjc.demo;

import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.openai.OpenAiChatModel;

public HelloAI {

    public static void main(String[] args) {

        ChatLanguageModel model = OpenAiChatModel.withApiKey("demo");

        String answer = model.generate("你好,你是谁?");

        System.out.println(answer);

    }
}


运行代码结果为:

你好,我是一个人工智能助手。我可以回答你的问题和提供帮助。有什么可以帮到你的吗?

这样,我们使用LangChain4j第一次成功的和OpenAi的GPT模型进行了对话。

更多的操作,小伙伴们可以查看官网】。

三、实战资讯App

经常看我文章的小伙伴,应该知道我最近在开发资讯App。

之所以做这个App,主要是想利用Cursor+LangChain4j来完成项目,

学习Cursor开发一个完整的demo级别项目,其次是市面上的关于大模型咨询的应用几乎没有,我又需要掌握大模型应用级别的各种信息。

大概的功能长这样的:

图片

整体项目代码结构:

图片

其中,app-admin是后台管理前端,app-info是后端,app-uni则是app。

目前整体进度算是一般吧,主要是年底也比较忙。

图片

(数据来自于各种国内,国外的数据爬取。以及后台管理系统自己上传)

目前项目已经进入真实数据的调试阶段,整体工作分配上,80%的任务由Cursor自动完成,而我主要负责剩余的20%。 Cursor的高效处理能力极大地提升了开发效率,尤其是在数据清洗、格式转换和初步分析等重复性任务上表现出色。

我的工作则集中在关键决策、算法优化和结果验证等核心环节,确保最终输出的准确性和可靠性。

这种分工模式不仅节省了大量时间,还让我能够更专注于解决复杂问题,推动项目快速进展。

后续完成之后,会打包成为apk,分享给老铁小伙伴。

四、感悟

最近Cursor获得了上亿美元的融资,各大平台广告满天飞。

特别是B站、小红书、小绿书,各种博眼球的标题。

反正我是震惊不已。

确实,Cursor很大程度的提高了编码效率,让开发者更大程度的去关注产品和设计。

但是,远远达不到那种10分钟,20分钟完成一个项目的程度。

当然,可以完成一个脚本,一个小工具。

像我开发的这种前后端分离,带系统后台和前台的项目,在代码结构上就比较麻烦。

但是,我是坚信未来肯定可以巅峰一些业务不复杂的项目。

只要掌握和多实战Cursor,按照逻辑文档和需求文档,一点一点指导Cursor开发下去,也是可以完成复杂项目。

来源:数据AI指北

THE END