LangGraph4j杀疯了!Java构建多模态Agent全攻略,开源方案通杀闭源产品

简介

langgraph4j 是一个专为Java设计的库,它支持开发者构建状态ful、多智能体应用,并能够与语言模型(LLMs)无缝集成。这个项目是对LangChain AI项目中的LangGraph的Java版本移植,旨在为Java开发者提供一种更加直观和易于使用的方式来构建复杂的智能体交互图。

框架特点

  • 流程管理:LangGraph4j 提供了强大的流程控制能力,允许开发者定义包含循环、条件分支和并行执行等复杂逻辑的工作流。通过这种方式,可以灵活地处理各种业务需求,并确保流程的高效性和准确性。
  • 状态管理:状态管理是 LangGraph4j 的一大亮点,它支持状态对象(State)贯穿整个图的执行过程,为开发者提供了对流程状态的精细控制。每个节点执行前后都会创建检查点,这些检查点不仅保存了当前的状态信息,还包括版本号和回溯关系等重要数据。这意味着即使在长时间运行或可能中断的应用场景下,也可以轻松恢复到之前的状态,增强了应用的健壮性和用户体验。
  • 模块化设计:LangGraph4j 鼓励采用模块化设计,即每个节点专注于完成单一职责,这样做的好处是可以简化开发流程,提高代码复用性,并降低维护成本。此外,由于各个模块之间的耦合度较低,因此更容易进行扩展和优化。模块化设计还促进了团队协作,不同成员可以独立负责不同的模块,最后再整合成完整的系统。
  • 人机协作:LangGraph4j 支持“Human-in-Loop人在环路”模式,这使得在关键决策点上将控制权交还给用户成为可能,这一特性非常适合那些既需要自动化又离不开人类判断力的任务,实现了人与机器的有效协同工作。
  • 可视化工具:提供了PlantUML和Mermaid支持,使得图形化展示和编辑图结构成为可能。
  • 集成开发环境:langgraph4j 与Spring Boot、Jetty和Quarkus等流行框架无缝集成,大大简化了开发流程。

LangGraph4j核心概念

(1)状态图(StateGraph)

状态图是一种数据结构,其生命周期存在于整个Langgraph过程中,所有节点的执行过程和结构都可以被记录到状态图中;而且每个节点也都可以随时访问状态图中的数据,来获取其当时的执行过程和结果,状态图是Langgraph实现上述功能的核心。

(2)节点(Node)

节点就比较容易理解了,节点的概念就是一个一个的智能体或功能函数;其主要作用就是用来执行具体的任务,比如说查询天气就调用天气查询接口。

(3)边(Edge)

如果说节点是一个函数,那么边就相当于判断逻辑中的分支,边决定了当前节点执行完毕之后,下一个执行的节点;当然,还有一种边叫做条件边,意思就是可以根据条件判断来动态决定应该执行哪个节点。

(4)检查点(State)

游戏的存档点。程序在状态图中进行流转,每一次进入新节点前,都会存档一次,后续用户再来访问此Agent的时候,就会读取存档。也是用这种能力,实现的人机交互、时光回溯。本质都是往前找检查点的版本号就行。检查点和状态图的区别是:状态图只是一个属性,在运行阶段可以读取的部分数据。而检查点是存储了当前节点的所有信息,包括了状态图,也有检查点版本号,回溯关系之类的信息。

LangGraph4j框架入门

Maven依赖

<properties>
<langgraph4j.version>1.6.0-beta6</langgraph4j.version>
</properties>

<!-- Optional: Add the Bill of Materials (BOM) to manage langgraph4j module versions -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.bsc.langgraph4j</groupId>
<artifactId>langgraph4j-bom</artifactId>
<version>${langgraph4j.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<dependency>
<groupId>org.bsc.langgraph4j</groupId>
<artifactId>langgraph4j-core</artifactId>
</dependency>
<!-- Add other langgraph4j modules if needed, e.g., langgraph4j-langchain4j -->
<dependency>
<groupId>org.bsc.langgraph4j</groupId>
<artifactId>langgraph4j-langchain4j</artifactId>
</dependency>
</dependencies>
示例1:炒西红柿智能体

这个例子展示了如何使用LangGraph4j来模拟炒西红柿的过程。流程依次为“洗”、“切”、“炒”。每个步骤都是一个节点,节点之间通过边连接,形成一个线性的流程。在这个过程中,状态图记录了每一步骤的结果,而检查点则确保了如果中途停止,可以从最近的检查点恢复操作。

@Test
publicvoidtest1()throws GraphStateException {
    StateGraph<AgentState> workflow = newStateGraph<>(AgentState::new)
            .addNode("step1", node_async(state -> {
                log.info("step1:{}", state);
return Map.of("step1", "洗");
            }))
            .addNode("step2", node_async(state -> {
                log.info("step2:{}", state);
return Map.of("step2", "切");
            }))
            .addNode("step3", node_async(state -> {
                log.info("step3:{}", state);
return Map.of("step3", "炒");
            }))
            .addEdge(START, "step1")
            .addEdge("step1", "step2")
            .addEdge("step2", "step3")
            .addEdge("step3", END);

    CompiledGraph<AgentState> app = workflow.compile();
GraphRepresentationgraph= app.getGraph(GraphRepresentation.Type.PLANTUML, "炒西红柿智能体");
    System.out.println("炒西红柿智能体 PlantUML Graph:\n"+ graph.content());

    Optional<AgentState> result = app.invoke(Map.of("input", "西红柿"));

    System.out.println(JSON.toJSONString(result.get().data()));
}

以上代码执行结果如下:

11:16:54.099 [main] INFO cn.daydayup.dev.manus.server.Test -- step1:{input=西红柿}
11:16:54.109 [main] INFO cn.daydayup.dev.manus.server.Test -- step2:{input=西红柿, step1=洗}
11:16:54.110 [main] INFO cn.daydayup.dev.manus.server.Test -- step3:{input=西红柿, step2=切, step1=洗}
{"input":"西红柿","step2":"切","step3":"炒","step1":"洗"}
通过以上执行结果可以发现:

使用PlantUML绘制流程图如下:

示例2:项目开发智能体

此示例描述了一个简化版的项目开发流程,包含需求分析、前后端开发及联调阶段。与第一个示例不同的是,这里引入了分支逻辑,即“后端开发”和“前端开发”可以并行进行。这说明了边不仅限于简单的顺序连接,还可以用于表示复杂的业务逻辑关系。检查点在此场景下尤为重要,因为它允许团队从某个关键阶段重新开始工作。

@Test
publicvoidtest2()throws GraphStateException {
    StateGraph<AgentState> workflow = newStateGraph<>(AgentState::new)
            .addNode("step1", node_async(state -> {
                log.info("step1:{}", state);
return Map.of("step1", "开发需求来了");
            }))
            .addNode("step2", node_async(state -> {
                log.info("step2:{}", state);
return Map.of("step2", "后端开发");
            }))
            .addNode("step3", node_async(state -> {
                log.info("step3:{}", state);
return Map.of("step3", "前端开发");
            }))
            .addNode("step4", node_async(state -> {
                log.info("step4:{}", state);
return Map.of("step4", "前后端联调");
            }))
            .addEdge(START, "step1")
            .addEdge("step1", "step2")
            .addEdge("step1", "step3")
            .addEdge("step2", "step4")
            .addEdge("step3", "step4")
            .addEdge("step4", END);
    CompiledGraph<AgentState> app = workflow.compile();
GraphRepresentationgraph= app.getGraph(GraphRepresentation.Type.PLANTUML, "项目开发智能体");
    System.out.println("项目开发智能体 PlantUML Graph:\n"+ graph.content());

    Optional<AgentState> result = app.invoke(Map.of("input", "项目A"));

    System.out.println(JSON.toJSONString(result.get().data()));
}

示例3:舆情监测智能体

舆情监测的例子展示了一个更加复杂的交互模型,其中包含了基于大语言模型的决策制定。首先,系统判断输入的情绪倾向(正面或负面),然后根据该情绪将问题分类并分配给相应的部门。这里使用了条件边来决定下一步骤(例如,是否进入最终步骤)。检查点机制使得系统能够记住之前的评估结果,即使用户中断了流程,也可以从中断的地方继续。

@Test
publicvoidtest3()throws GraphStateException {
    StateGraph<AgentState> workflow = newStateGraph<>(AgentState::new)
            .addNode("step1", node_async(state -> {
                log.info("step1:{}", state);
Stringinput= (String) state.value("input").orElse("");
                List<ChatMessage> messages = List.of(
                        SystemMessage.from("你是一个舆情识别专家,你的任务是判断用户输入是正面情绪还是负面情绪,输出“正面”或者“负面”,不要输出其他解析内容。"),
                        UserMessage.from("用户输入:"+input)
                );
ChatResponsechatResponse= model.chat(messages);
return Map.of("type", chatResponse.aiMessage().text());
            }))
            .addNode("step2", node_async(state -> {
                log.info("step2:{}", state);
Stringinput= (String) state.value("input").orElse("");
StringchatResponse= model.chat("你是一个舆情处理专家,你的任务是将用户的问题派发到不同的部门," +
"如:医院、学校、银行。仅输出最终的结果,不需要解析内容。\n用户输入:"+input);
return Map.of("classify", chatResponse);
            }))
            .addEdge(START, "step1")
            .addConditionalEdges("step1",
                    AsyncEdgeAction.edge_async(this::getType),
                    Map.of(
"step2", "step2",
"end",END
                    )
            )
            .addEdge("step2", END);

    CompiledGraph<AgentState> app = workflow.compile();
GraphRepresentationgraph= app.getGraph(GraphRepresentation.Type.PLANTUML, "舆情识别智能体");
    System.out.println("舆情识别智能体 PlantUML Graph:\n"+ graph.content());

    Optional<AgentState> result = app.invoke(Map.of("input", "老师安排的作业太多了"));

    System.out.println(JSON.toJSONString(result.get().data()));
}

如何学习大模型 AI ?

我国在AI大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年,人才缺口已超百万,凸显培养不足。随着Al技术飞速发展,预计到2025年,这一缺口将急剧扩大至400万,严重制约我国Al产业的创新步伐。加强人才培养,优化教育体系,国际合作并进,是破解困局、推动AI发展的关键。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

2025最新大模型学习路线

明确的学习路线至关重要。它能指引新人起点、规划学习顺序、明确核心知识点。大模型领域涉及的知识点非常广泛,没有明确的学习路线可能会导致新人感到迷茫,不知道应该专注于哪些内容。

对于从来没有接触过AI大模型的同学,我帮大家准备了从零基础到精通学习成长路线图以及学习规划。可以说是最科学最系统的学习路线。

在这里插入图片描述

针对以上大模型的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。

大模型经典PDF书籍

新手必备的大模型学习PDF书单来了!全是硬核知识,帮你少走弯路!

在这里插入图片描述

配套大模型项目实战

所有视频教程所涉及的实战项目和项目源码等
在这里插入图片描述

博主介绍+AI项目案例集锦

MoPaaS专注于Al技术能力建设与应用场景开发,与智学优课联合孵化,培养适合未来发展需求的技术性人才和应用型领袖。

在这里插入图片描述

在这里插入图片描述

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

为什么要学习大模型?

2025人工智能大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 , 大模型作为其中的重要组成部分 , 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力, 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 ,为各行各业带来了革命性的改变和机遇 。

在这里插入图片描述

适合人群

  • 在校学生:包括专科、本科、硕士和博士研究生。学生应具备扎实的编程基础和一定的数学基础,有志于深入AGI大模型行业,希望开展相关的研究和开发工作。
  • IT行业从业人员:包括在职或失业者,涵盖开发、测试、运维、产品经理等职务。拥有一定的IT从业经验,至少1年以上的编程工作经验,对大模型技术感兴趣或有业务需求,希望通过课程提升自身在IT领域的竞争力。
  • IT管理及技术研究领域人员:包括技术经理、技术负责人、CTO、架构师、研究员等角色。这些人员需要跟随技术发展趋势,主导技术创新,推动大模型技术在企业业务中的应用与改造。
  • 传统AI从业人员:包括算法工程师、机器视觉工程师、深度学习工程师等。这些AI技术人才原先从事机器视觉、自然语言处理、推荐系统等领域工作,现需要快速补充大模型技术能力,获得大模型训练微调的实操技能,以适应新的技术发展趋势。
    在这里插入图片描述

课程精彩瞬间

大模型核心原理与Prompt:掌握大语言模型的核心知识,了解行业应用与趋势;熟练Python编程,提升提示工程技能,为Al应用开发打下坚实基础。

在这里插入图片描述

RAG应用开发工程:掌握RAG应用开发全流程,理解前沿技术,提升商业化分析与优化能力,通过实战项目加深理解与应用。 在这里插入图片描述

Agent应用架构进阶实践:掌握大模型Agent技术的核心原理与实践应用,能够独立完成Agent系统的设计与开发,提升多智能体协同与复杂任务处理的能力,为AI产品的创新与优化提供有力支持。
在这里插入图片描述

模型微调与私有化大模型:掌握大模型微调与私有化部署技能,提升模型优化与部署能力,为大模型项目落地打下坚实基础。 在这里插入图片描述

顶尖师资,深耕AI大模型前沿技术

实战专家亲授,让你少走弯路
在这里插入图片描述

一对一学习规划,职业生涯指导

  • 真实商业项目实训
  • 大厂绿色直通车

人才库优秀学员参与真实商业项目实训

以商业交付标准作为学习标准,具备真实大模型项目实践操作经验可写入简历,支持项目背调

在这里插入图片描述
大厂绿色直通车,冲击行业高薪岗位
在这里插入图片描述

文中涉及到的完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值